私はinitramfsイメージから起動する完全にカスタマイズされた最小組み込みLinux(バニラ、3.3.8、i486、Vortex86dx)システムを持っています。標準のデプロイスクリプトは使用されず、単一のrcSファイルのみが初期化に使用されます。
私は、/dev/hda1と/dev/hda2という2つのパーティションを持つIDEフラッシュドライブを持っています。
これは固定システム用の最小組み込みディストリビューションであるため、/dev/hda1および/dev/hda2を含む静的/devディレクトリがあり、UDEVはありません。
init が rcS を呼び出すと、/dev/hda1 エントリが存在しなくなります。現在、他のスクリプト、ユーザーアプリケーション、デーモンは実行されていません。 /dev/hda1現れるカーネルによって削除(?)
開発中にNFSルートファイルシステムを介してターゲットを起動すると、同じ問題は発生しません。
私はBuildrootを使用してdevice_table_dev.txtファイルを介して/ devディレクトリを作成します。例えば
# IDE Devices
/dev/hda b 640 0 0 3 0 0 0 -
/dev/hda b 640 0 0 3 1 1 1 4
Buildrootの出力/イメージでrootfs.tar.gzを確認しました。 /devディレクトリには/dev/hda1が含まれています。
brw-r----- 1 root root 3, 0 Jul 2 13:44 hda
brw-r----- 1 root root 3, 1 Jul 2 13:44 hda1
brw-r----- 1 root root 3, 2 Jul 2 13:44 hda2
brw-r----- 1 root root 3, 3 Jul 2 13:44 hda3
brw-r----- 1 root root 3, 4 Jul 2 13:44 hda4
ターゲットの実行後のディレクトリリスト(スクリプトの上部にあるrcS内で実行されます)は次のとおりです。
brw-r----- 1 root root 3, 0 Jul 2 12:44 hda
brw-r----- 1 root root 3, 2 Jul 2 12:44 hda2
brw-r----- 1 root root 3, 3 Jul 2 12:44 hda3
brw-r----- 1 root root 3, 4 Jul 2 12:44 hda4
/dev/hda1はありません。 /dev/hda2は同じディスク上のパーティションですが、まだ存在します。奇妙な。
Busybox ユーティリティ "mdev -s" を実行すると、ターゲットから /dev/hda1 を復元し、正常に動作します。たとえば、インストールできます。
前にこのような行動を見た人はいますか?
カーネルは/ devのエントリを削除しますか?
答え1
サブシステムは起動時にファイルシステムをudev
作成してマウントします。デバイスが検出されると、カーネルはコンテンツを埋めます。仮想メモリに常駐するため永続性がないため、再起動後も変更は保持されません。すでに1つある場合でも、新しいファイルシステムをインストールすると、そのディレクトリが非表示になり、すべてのデバイス固有の情報が削除されたように見えます。そうではありませんが、最終結果は同じです。特別商品は期待していたものとは異なります。tmpfs
/dev
tmpfs
/dev
hda
あなたのアイテムがアイテムhdaX
に置き換えられたことがわかります。または、ドライブに割り当てられている名前を確認して入手してください。sda
sdaX
/proc/devices
/proc/partitions
udev
時には、このような迅速で汚れたソリューションがfdisk -l /dev/[sh]d[a-z]
役に立ちます(各タイプのディスクが26個未満の場合はより良いです)。
ちなみに、使用された命名体系udev
は標準化されているので、静的は/dev
規則に従うよりも悪いかもしれません。udev
そう思ったらそう/dev/sda
してください。後で潜在的な奇妙さと誤解を避けることができます。