Linuxコマンドラインの複数のルートオプション

Linuxコマンドラインの複数のルートオプション

私のカーネルコマンドラインは次のとおりです。

root=31:0 ro noinitrd console=ttyS0,115200 root=/dev/mtdblock2 rootfstype=squashfs

最初のrootエントリはメジャーとマイナーのデバイス番号でディスクを識別し、2番目のエントリは名前でディスクを識別します。rootfs実際にオンになっていることは確認できますが、どのように/dev/mtdblock2説明するのかわかりません31:0

ベストアンサー1

同じオプションを複数回提供すると、さまざまなモジュールが異なる動作をします。この言葉を数回すると、複数のコンソールが得られることがわかりますconsole=(私たちはフレームバッファとシリアルポートの両方にメインコンソールがあるシステムにこれを使用します)。

ただし、ルートパーティションは1つしか持つことができないため、root=以前に見た値はほぼ確実に左から右に上書きされます。init/do_mounts.cこれは、関数がオプションのroot_dev_setup()処理を担当し、パラメータキーを変数に格納するカーネルソースコードによって識別されます。root=bootparam がroot=31:0上書きされたか、root=/dev/mtdblock2少なくとも 2.6.25 ソースツリーにチェックされています。

ちなみに、Cに精通している場合、name_to_dev_t()値を解析する同じファイルの関数はroot=非常に有益です!

表記法x:yは、Unicesがデバイスを識別する方法である標準のUnixism「major:minor」です。伝統的に、基本ハードウェアドライバを識別する8桁の数字。未成年者デバイス自体を識別する8桁の数字。数字には、major文字デバイスとブロックデバイスという2つの名前空間があります。と入力して両方を見ることができます。cat /proc/devicesつまり、現在アクティブなコンテンツを表示できますls -la /dev。例は次のとおりです。

ls -la /dev/zero /dev/sda
brw-rw---- 1 root disk 8, 0 Jan 12 22:01 /dev/sda
crw-rw-rw- 1 root root 1, 5 Jan 12 22:01 /dev/zero

最初の列はドライバの種類(bブロックの場合、c文字の場合)を識別します。左側の2つの列は、Jan形式のメジャーとマイナーの数字ですmajor, minor

root=major:minor表記を使用して、名前に関係なくすべてのブロックデバイスに名前を付けることができます。

デバイス番号の完全なリストはカーネルソースツリーの下にありますDocumentation/devices.txt。 31:0は、システムの最初のROMカードである/ dev / rom0を参照しているようです。

おすすめ記事