カスタムCentOSイメージとVeracriptパーティションを含むライブUSB

カスタムCentOSイメージとVeracriptパーティションを含むライブUSB

コンテキスト:

2つのパーティションを持つUSBドライブがあります。 1つ目はCentOS 7.6 1810(GNOMEを含む)のカスタム非永続イメージ、2つ目は暗号化されたデータパーティションです。目標は、ユーザーが暗号化されたパーティションをマウントしてファイルを保存できるライブブート可能なCentOS USBドライブを持つことです。ほとんどの場合、すべてが期待どおりに機能します。結果ISOはVirtualBoxと完全に機能し、ISOに問題が発生したことはありません。この問題は、CentOSライブUSBパーティションをUSBドライブのデータパーティションとマージするときに発生します。

質問:

USBを起動するとき時々次のエラーが発生しました。

dracut: FATAL: Failed to mount block device of live image
dracut: Refusing to continue
system halted.

ほとんどの場合、エラーなしでライブCentOSイメージを正常にロードできます。したがって、これは確率論的な質問です。つまり、潜在的な競争条件がどこかに関連していることを意味します。

起動時にログファイルを出力するようにデバッグオプションを有効にしましたが、dracut現在発生している問題は次の行で強調表示されているようです。

[    4.015983] localhost dracut-initqueue[773]: + CMDLINE='   initrd=initrd0.img root=live:CDLABEL=CentOS-7-x86_64-LiveGNOME-1810 rootfstype=auto ro rd.live.image rd.shell rd.debug log_buf_len=1M rd.luks=0 rd.md=0 rd.dm=0 BOOT_IMAGE=vmlinuz0'
[    4.016557] localhost dracut-initqueue[773]: + for arg in '$CMDLINE'
[    4.017178] localhost dracut-initqueue[773]: + case $arg in
[    4.017761] localhost dracut-initqueue[773]: + for arg in '$CMDLINE'
[    4.018361] localhost dracut-initqueue[773]: + case $arg in
[    4.018951] localhost dracut-initqueue[773]: + for arg in '$CMDLINE'
[    4.019579] localhost dracut-initqueue[773]: + case $arg in
[    4.020202] localhost dracut-initqueue[773]: + for arg in '$CMDLINE'
[    4.020785] localhost dracut-initqueue[773]: + case $arg in
[    4.021363] localhost dracut-initqueue[773]: + liverw=ro
[    4.021952] localhost dracut-initqueue[773]: + for arg in '$CMDLINE'
[    4.022584] localhost dracut-initqueue[773]: + case $arg in
[    4.023205] localhost dracut-initqueue[773]: + for arg in '$CMDLINE'
[    4.023798] localhost dracut-initqueue[773]: + case $arg in
[    4.024390] localhost dracut-initqueue[773]: + for arg in '$CMDLINE'
[    4.024970] localhost dracut-initqueue[773]: + case $arg in
[    4.025584] localhost dracut-initqueue[773]: + for arg in '$CMDLINE'
[    4.026135] localhost dracut-initqueue[773]: + case $arg in
[    4.026745] localhost dracut-initqueue[773]: + for arg in '$CMDLINE'
[    4.027375] localhost dracut-initqueue[773]: + case $arg in
[    4.027941] localhost dracut-initqueue[773]: + for arg in '$CMDLINE'
[    4.028544] localhost dracut-initqueue[773]: + case $arg in
[    4.029125] localhost dracut-initqueue[773]: + for arg in '$CMDLINE'
[    4.029652] localhost dracut-initqueue[773]: + case $arg in
[    4.030241] localhost dracut-initqueue[773]: + for arg in '$CMDLINE'
[    4.030788] localhost dracut-initqueue[773]: + case $arg in
[    4.031377] localhost dracut-initqueue[773]: + mkdir -m 0755 -p /run/initramfs/live
[    4.031924] localhost dracut-initqueue[773]: + '[' -f /dev/sda2 ']'
[    4.032484] localhost dracut-initqueue[773]: ++ blkid -o value -s TYPE /dev/sda2
[    4.033075] localhost dracut-initqueue[773]: + '[' '' '!=' ntfs ']'
[    4.033564] localhost dracut-initqueue[773]: + mount -n -t auto -o ro /dev/sda2 /run/initramfs/live
[    4.034100] localhost dracut-initqueue[773]: mount: wrong fs type, bad option, bad superblock on /dev/sda2,
[    4.034593] localhost dracut-initqueue[773]: missing codepage or helper program, or other error
[    4.035175] localhost dracut-initqueue[773]: In some cases useful info is found in syslog - try
[    4.035726] localhost dracut-initqueue[773]: dmesg | tail or so.
[    4.036299] localhost dracut-initqueue[773]: + '[' 32 '!=' 0 ']'
[    4.036846] localhost dracut-initqueue[773]: + die 'Failed to mount block device of live image'
[    4.037422] localhost dracut-initqueue[773]: + echo '<24>dracut: FATAL: Failed to mount block device of live image'
[    4.037966] localhost dracut-initqueue[773]: + echo '<24>dracut: Refusing to continue'
[    4.038553] localhost dracut-initqueue[773]: + echo 'warn dracut: FATAL: "Failed to mount block device of live image"'
[    4.039143] localhost dracut-initqueue[773]: + echo 'warn dracut: Refusing to continue'

上記の出力によると、CentOSパーティションではなくデータパーティションdracutからライブイメージをロードしようとしたため、起動できないようです。/dev/sda2つまり、dracut正しいパーティションを使用してOSを起動することもありますが、何らかの/dev/sda1理由で/dev/sda2rootroot=/dev/sda1

blkidシェルで実行すると、次のようにdracutなります。

/dev/sda1: UUID="2019-07-06-19-24-46-00" LABEL="CentOS-7-x86_x64-LiveGNOME-1810" TYPE="iso9660" PTTYPE="dos"

ただし、生成されたログを見ると、次のdracut出力が表示されます。

+ blkid
/dev/sda1: UUID="2019-07-06-19-24-46-00" LABEL="CentOS-7-x86_64-LiveGNOME-1810" TYPE="iso9660" PTTYPE="dos" 
+ blkid -o udev
ID_FS_UUID=2019-07-06-19-24-46-00
ID_FS_UUID_ENC=2019-07-06-19-24-46-00
ID_FS_LABEL=CentOS-7-x86_64-LiveGNOME-1810
ID_FS_LABEL_ENC=CentOS-7-x86_64-LiveGNOME-1810
ID_FS_TYPE=iso9660
ID_PART_TABLE_TYPE=dos
+ ls -l /dev/disk/by-id /dev/disk/by-label /dev/disk/by-path /dev/disk/by-uuid
/dev/disk/by-id:
total 0
lrwxrwxrwx 1 root 0  9 Jul  7 11:54 usb-SanDisk_Extreme_Pro_00000000000000000000-0:0 -> ../../sda
lrwxrwxrwx 1 root 0 10 Jul  7 11:54 usb-SanDisk_Extreme_Pro_00000000000000000000-0:0-part1 -> ../../sda1
lrwxrwxrwx 1 root 0 10 Jul  7 11:54 usb-SanDisk_Extreme_Pro_00000000000000000000-0:0-part2 -> ../../sda2

/dev/disk/by-label:
total 0
lrwxrwxrwx 1 root 0 10 Jul  7 11:54 CentOS-7-x86_64-LiveGNOME-1810 -> ../../sda2

/dev/disk/by-path:
total 0
lrwxrwxrwx 1 root 0  9 Jul  7 11:54 pci-0000:00:14.0-usb-0:1:1.0-scsi-0:0:0:0 -> ../../sda
lrwxrwxrwx 1 root 0 10 Jul  7 11:54 pci-0000:00:14.0-usb-0:1:1.0-scsi-0:0:0:0-part1 -> ../../sda1
lrwxrwxrwx 1 root 0 10 Jul  7 11:54 pci-0000:00:14.0-usb-0:1:1.0-scsi-0:0:0:0-part2 -> ../../sda2

/dev/disk/by-uuid:
total 0
lrwxrwxrwx 1 root 0 10 Jul  7 11:54 2019-07-06-19-24-46-00 -> ../../sda2

ラベルはなぜ貼ったのかわかりません。CentOS-7-x86_64-LiveGNOME-1810に割り当てられますsda2

質問:

100%ブート成功率を確保するために、常に正しいパーティションを選択できるようにする修正はありますか?これで、OSから起動できるようになるまでノートパソコンの電源を切ってからもう一度入れる必要があります。

修正する:

この問題は2つのパーティションが原因であるようです。 1つ目はCentOSイメージ、2つ目は暗号化されたパーティションです。理由を完全に説明することはできませんが、起動時に最初のパーティション(たとえば)のラベルがCentOS-7-x86_64-LiveGNOME-18102番目のパーティションにも割り当てられるようです。したがって、起動順序でラベル付きCentOS-7-x86_64-LiveGNOME-1810パーティションを見つけると、どのパーティションが最初に出てくるかに応じて、最初または2番目のパーティションが返されます。これにより、最初のパーティションが最初に選択されたときにいくつかの重要な起動が発生し、2番目のパーティションが返されると失敗します。

2番目のVeracript暗号化パーティションのラベルを変更してみましたが、役に立ちませんでした。ルートコマンドを次のように変更して問題を解決しました。

initrd=initrd0.img root=live:/dev/sdb1 rootfstype=auto ro rd.live.image rd.shell rd.debug log_buf_len=1M rd.luks=0 rd.md=0 rd.dm=0 BOOT_IMAGE=vmlinuz0

ただし、これにより他のデバイスではUSBキーが機能しなくなります。を使ってみましたが、root=live:/dev/disk/by-id/usb-SanDisk_Extreme_Pro_00000000000000000000-0:0-part1それもうまくいかないようです。

ほとんどの最新のノートブック/デスクトップで動作するVeracriptパーティションとペアになっているデュアルパーティションのカスタムCentOS 7.6イメージを取得するのに役立つヒントがある人がいる場合は、非常に感謝します。 EFIで使用するのが最善です。今はMBRに満足しています。

ベストアンサー1

おすすめ記事