カーネル2.6.36がインストールされているSlack 13.1システムがあります。その後、カーネルを次に更新しました。3.12.1.
マシンは3つのパーティション(/dev/sda1 --> Linux OSファイル...、/dev/sda2 -->データ、/dev/sda3 -->追加データ)を持つ起動可能ディスク、1つは「仮想」 SSDは単に保存用(/dev/sdb1)とUSBポート用です。
実際には、以下を使用してLinuxを起動しようとするたびにUSBにはデータが含まれています。(LiveUSBではありません)マシンに接続して起動プロセス中にsdaデバイスをUSBに割り当てる問題が発生し、Linuxパーティションを「起動可能ディスク」にマウントできません。カーネルパニック:
VFS: Mounted root (vfat filesystem) readonly on device 8:1.
devtmpfs: error mounting -2
[...]
Kernel panic - not syncing: no init found. Try passing init=..
私が使用するブートローダーはリロ。ブートプロセスでデバイス名を変更したくない場合、またはそのいずれかをデバイスに事前に割り当てないようにする方法があるかどうかわかりません。構成は次のとおりです。
# Linux bootable partition config begins
image = /boot/vmlinuz
root=/dev/sda1
append="panic=120"
label=3.12.20-smp
read-only
/etc/fstab:
/dev/sda1 / ext4 rw 1 1
USBデバイスパーティションはsda1と見なされるため、どのようなinitプロセスやアプリケーションも含まれていないため、カーネルパニックが発生します。
root = "LABEL = myLabel"またはroot = "LABEL = current"を試してみましたが、幸運ではありませんでした...すべてのパーティションではなくルートノードからラベルを検索しているためです。 S
何が起こっているのかという提案がありますか?修正できますか?よろしくお願いします!
答え1
名前でデバイスを識別することを忘れてください。 UUIDの使用には問題はありません。
コマンドを使用してデバイスのUUIDを識別できますblkid
。
ところで、LILOがUUIDをサポートしているかどうかはわかりません。 GRUBに切り替えられない場合。
答え2
Linuxのデバイス番号は、このオペレーティングシステムで最も悪い点の1つです。他のすべての合理的な* nixは、コントローラ/ターゲット/lunのようなものを使用してディスクアドレスを指定します。
私はBIOSで起動デバイスの順序を変更して(USBを最後に置く)、PCでこの問題を解決しました。
Linuxは通常BIOS設定に興味がないので、これがすべての場合で動作するかどうかはわかりません。
答え3
問題は、ディスク名が順次作成されることです。カーネルが検出した最初のディスクは/dev/sda
、2番目のディスクは/dev/sdb
などになります。
問題の解決策は、システムの起動が完了するまでUSBディスク(USBドライブを含む)の使用(検出など)を無効にすることです。これは、カーネル自体にUSBストレージドライバを含まずにモジュールとしてビルドするようにカーネルを設定することによって実行できます。これにより、起動中に「通常の」ディスクのみが検出され、モジュールはルートファイルシステムがマウントされた後にのみロードできますusb_storage.ko
。
これはカーネルを直接ビルドし、initrd(初期のRAMディスク)を使用しなかったと仮定します。