ポータブルUSBスティックにCentOSをインストールし、最初のパーティションにgrub2をインストールしました。内蔵ハードドライブがコンピュータに接続されていない場合はシステムが起動しますが、ハードドライブが接続されているとシステムは失敗します。
私のオペレーティングシステム(USBスティックで実行)を/ dev / sdaとしてマウントし、他のすべての内蔵ハードドライブに/ dev / sdbラベルを付けたいと思います。私はパーティションラベルを使って/boot、/root、/home、/swapにマップします。内部ドライブがsdaとして表示されるように見えるため、起動時にカーネルパニックが発生します。
lsblk -f
NAME FSTYPE LABEL
sda
|___sda1
sdb
|___sdb1 hfsplus DISK_1
|___sdb2 ext4 USB_root
|___sdb3 ext4 USB_home
|___sdb4 swap USB_swap
私は持っていますudevルール内部ドライブは/ sdbで始まり番号が付けられますが、これらのルールは起動順序の後半に適用されるように見えるため、sdbでなければならない内部ディスクはsdaに初期化されます。
私の/boot/grub.confは次のようになります:
default=0
timeout=5
chainloader +1
#splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (3.10.65-1.el6.elrepo.x86_64)
#root (hd0,0)
search --set --label USB_boot
kernel /vmlinuz-3.10.65-1.el6.elrepo.x86_64 ro root=LABEL=USB_root nomodeset rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=uk LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_LVM rd_NO_DM rootdelay=8
initrd /usbinitrd-3.10.65-1.el6.elrepo.x86_64.img
私のusbinitrdは、以下の指示に従って生成されました。ここ
- 内蔵ドライブの前にsdaで初期化された外部USBドライブを起動できますか?
- 内部ドライブの命名と競合しないように、USBデバイスとgrub構成を/ sduのようなものにマッピングする必要がありますか?
答え1
これは起動時にタイミングの問題のようです。 grub.confのカーネルオプションrootdelay = 8がrootdelay = 10に変更され、すべてが期待どおりに機能します。コンピュータが起動を開始したときにUSBスティックのすべてのパーティションを検索できなかったようです。
udevadmで見つかったMANUFACTURERタグを使用して、USBスティックを/ dev / sduにマッピングする別のudevルールを作成しましたが、すべてが正常でした。