これは私の最初の投稿で、「isoファイルの内容に基づいてこれを行うことができ、ターゲットisoファイルが別のUSBに「dd-ed」された一般的なプログラムはありますか?」という一般的な質問をしたかったのです。ドライブ?」入門ツアーに関する情報と感謝の気持ちの質問の種類をどのように解釈するのかよく分からないので、私が悩んでいる具体的な実務質問の3つのうちの1つを質問しました。
長すぎると、あなたは多くの詳細を好むことを知っているからです。あまりにも遠く行ったら、もう一度そのようなことが起こらないように教えてください。
私が持っているマルチブートハイブリッドUSBにVoid Linux isoを追加しようとしています。
テストはBiosシステム(Fujitsu Lifebook)で実行されていますが、次の緊急警告が表示されます。
could not boot
/dev/root does not exist
mount: /sysroot: special device /dev/mapper/live-rw does not exist
USBの構造は次のとおりです。
sdc 8:32 1 57.8G 0 disk
├─sdc1 8:33 1 33M 0 part # bios boot
├─sdc2 8:34 1 512M 0 part # ESP
├─sdc3 8:35 1 8G 0 part /run/media/anon/artix
└─sdc4 8:36 1 49.2G 0 part /run/media/anon/ISOs
そのうちsdc3には、Grubを含むartix Linuxの最小基本インストールが含まれています。
sdc4のVoid isoファイルパスは/MocaccinoOS-MATE-0.20220903.isoです。
また、その内容をsdc4のフォルダに拡張しました:/loop_mounting/Void
私はLinuxコマンドラインで(「VOID_LIVE」対「ISOs」)と(「root:live = CDLABEL =)バージョン(iso対拡張)と「root」に割り当てた値を変更してさまざまなメニュー項目を試してきました。」および "root_LABEL=")。
次の出力により「VOID_LINUX」が選択されました。
[esprimo-II wan]# lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
loop0 iso966 Jolie VOID_LIVE 2022-10-01-18-20-01-00 0 100% /mnt/iso
My grub.cfg grub.cfgの最初の部分(つまり、項目の前の部分):
# Config for GNU GRand Unified Bootloader (GRUB)# /boot/grub/grub.cfg
# januari 12, 2023
# Timeout for menu
set timeout=-1
# Default boot entry
set default=0
# Menu Colours
set menu_color_normal=white/black
set menu_color_highlight=white/green
# persistent block device naming
# define globally (i.e outside any menuentry)
insmod search_fs_uuid
insmod gzio
insmod part_gpg
insmod part_msdos
insmod fat
insmod loopback
insmod iso9660
insmod ext2
insmod all_video
set gfxpayload=keep
set root=(hd0,gpt4)
この投稿の初期テストに使用した項目は次のとおりです。
menuentry "void iso" {
set isofile='/void-live-x86_64-20221001-xfce.iso'
loopback loop $isofile
probe --label --set=cd_label (loop)
bootoptions="iso-scan/filename=$isofile findiso=$isofile root=live:CDLABEL=$cd_label init=/sbin/init ro rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 vconsole.unicode=1 vconsole.keymap=us locale.LANG=en_US.UTF-8"
# bootoptions="iso-scan/filename=$isofile findiso=$isofile root=live:CDLABEL=VOID_LIVE init=/sbin/init ro rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 vconsole.unicode=1 vconsole.keymap=us locale.LANG=en_US.UTF-8"
# bootoptions="iso-scan/filename=$isofile findiso=$isofile root=live:CDLABEL=ISOs init=/sbin/init ro rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 vconsole.unicode=1 vconsole.keymap=us locale.LANG=en_US.UTF-8"
# bootoptions="iso-scan/filename=$isofile findiso=$isofile root=LABEL=ISOs init=/sbin/init ro rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 vconsole.unicode=1 vconsole.keymap=us locale.LANG=en_US.UTF-8"
# bootoptions="iso-scan/filename=$isofile findiso=$isofile root=LABEL=VOID_LINUX init=/sbin/init ro rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 vconsole.unicode=1 vconsole.keymap=us locale.LANG=en_US.UTF-8"
linux (loop)/boot/vmlinuz $bootoptions
initrd (loop)/boot/initrd
}
menuentry "void expanded" {
bootoptions="root=live:CDLABEL=ISOs init=/sbin/init ro rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 vconsole.unicode=1 vconsole.keymap=us locale.LANG=en_US.UTF-8
# bootoptions="root=LABEL=ISOs init=/sbin/init ro rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 vconsole.unicode=1 vconsole.keymap=us locale.LANG=en_US.UTF-8"
# bootoptions="root=live:CDLABEL=VOID_LINUX init=/sbin/init ro rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 vconsole.unicode=1 vconsole.keymap=us locale.LANG=en_US.UTF-8"
# bootoptions="root=LABEL=VOID_LINUX init=/sbin/init ro rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 vconsole.unicode=1 vconsole.keymap=us locale.LANG=en_US.UTF-8"
linux /loop_mounting/Void/boot/vmlinuz $bootoptions
initrd /loop_mounting/Void//boot/initrd
}
a) 'root=live:CDLABEL=$cd_label' は dracut 警告で終わります。
- 「起動できません」
- "/dev/disk/by-label/VOID_LIVEが存在しません。"
- "/dev/rootが存在しません。"詳細については、rdsosreport_1_0117(添付ファイル)を参照してください。
b) 'root=live:CDLABEL=VOID_LIVE' - 上記の実験で 'cdlabel\' の値が "VOID_LIVE" として報告されたため、これを実行しませんでした。
c) 'root=live:CDLABEL=ISOs' - dracut 警告: "マウント: /sysroot: 特殊デバイス /dev/mapper/live-rw が存在しません。"以降、「ルートファイルシステムをマウントできません」、詳細についてはrdsosreport_3_0117をご覧ください。 (追加。)
d) 'root=LABEL=VOID_LIVE' - dracut 警告:
- 「起動できません」
- "/dev/disk/by-label/VOID_LIVEが存在しません。"詳細については、rdsosreport_4_0117(添付ファイル)を参照してください。
e) 'root=LABEL=ISOs' - - 上記のrdsosreport_5_0117のIcと同じ結果(添付ファイル)
II)「void Expanded」から始めたとき:
a) 'root=live:CDLABEL=VOID_LIVE' - Ia と同じで、rdsosreport_6_0117 (添付) により多くの結果があります。
b) 'root=live:CDLABEL=ISOs' は rdsosreport_7_0117 (添付ファイル) の Ic more と同じ結果を持ちます。
c) 'root=LABEL=VOID_LIVE' - -dracut 警告:
- 「起動できません」
- "/dev/disk/by-label/VOID_LIVEが存在しません。"詳細については、rdsosreport_8_0117(添付ファイル)を参照してください。
d) 'root=LABEL=ISOs' - dracut 警告: 'ルートファイルシステムをマウントできません。'詳細については、rdsosreport_9_0117(添付ファイル)を参照してください。
dd-ed isoファイルを含む他のUSBドライブは正常に起動し、ターゲットマルチUSBドライブのisoには正しいチェックサムがあります。
ループマウント中のisoファイルの構造は次のとおりです。
├── boot
│ ├── grub
│ │ ├── efiboot.img
│ │ ├── fonts
│ │ │ └── unicode.pf2
│ │ ├── grub.cfg
│ │ └── grub_void.cfg
│ ├── initrd
│ ├── isolinux
│ │ ├── boot.cat
│ │ ├── chain.c32
│ │ ├── isolinux.bin
│ │ ├── isolinux.cfg
│ │ ├── ldlinux.c32
│ │ ├── libcom32.c32
│ │ ├── libutil.c32
│ │ ├── splash.png
│ │ └── vesamenu.c32
│ └── vmlinuz
└── LiveOS
└── squashfs.img
lsblkが循環的にマウントされたisoファイルを一覧表示する方法は次のとおりです。
NAME LABEL MOUNTPOINT
loop0 VOID_LIVE /mnt/iso
以下は、ループマウントISO(ターゲットUSBにコピーした)の3つのブートエントリです。
1 - /boot/isolinux/isolinux.cfg:
LABEL linux
MENU LABEL Void Linux 5.19.10_1 x86_64
KERNEL /boot/vmlinuz
APPEND initrd=/boot/initrd
root=live:CDLABEL=VOID_LIVE init=/sbin/init ro rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 vconsole.unicode=1 vconsole.keymap=us locale.LANG=en_US.UTF-8 rd.live.overlay.overlayfs=1
LABEL linuxram
2 - /boot/grub/grub_void.cfg
set pager="1"
set locale_dir="(${voidlive})/boot/grub/locale"
if [ -e "${prefix}/${grub_cpu}-${grub_platform}/all_video.mod" ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod video_bochs
insmod video_cirrus
fi
insmod font
if loadfont "(${voidlive})/boot/grub/fonts/unicode.pf2" ; then
insmod gfxterm
set gfxmode="auto"
terminal_input console
terminal_output gfxterm
insmod png
background_image "(${voidlive})/boot/isolinux/splash.png"
fi
if [ cpuid -l ]; then
menuentry "Void Linux 5.19.10_1 (x86_64)" {
set gfxpayload="keep"
linux (${voidlive})/boot/vmlinuz \
root=live:CDLABEL=VOID_LIVE ro init=/sbin/init \
rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 gpt add_efi_memmap \
vconsole.unicode=1 vconsole.keymap=us \
locale.LANG=en_US.UTF-8 rd.live.overlay.overlayfs=1
initrd (${voidlive})/boot/initrd
}
menuentry "Void Linux 5.19.10_1 (x86_64) (RAM)" {
set gfxpayload="keep"
linux (${voidlive})/boot/vmlinuz \
root=live:CDLABEL=VOID_LIVE ro init=/sbin/init \
rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 gpt add_efi_memmap \
vconsole.unicode=1 vconsole.keymap=us \
locale.LANG=en_US.UTF-8 rd.live.overlay.overlayfs=1 rd.live.ram
initrd (${voidlive})/boot/initrd
}
fi
3-/boot/grub/grub.cfg
insmod usbms
insmod usb_keyboard
insmod part_gpt
insmod part_msdos
insmod fat
insmod iso9660
insmod udf
insmod ext2
insmod reiserfs
insmod ntfs
insmod hfsplus
insmod linux
insmod chain
search --file --no-floppy --set=voidlive "/boot/grub/grub_void.cfg"
source "(${voidlive})/boot/grub/grub_void.cfg"
lsblk が dd-ed('VOID-LIVE') USB をリストする方法は次のとおりです。
NAME LABEL MOUNTPOINT
sdc VOID_LIVE
├─sdc1 VOID_LIVE /run/media/arthur/VOID_LIVE
└─sdc2 grub_uefi
元のisoファイルのループインストールバージョンとLIVE(つまりddバージョン)バージョンのツリー構造との間で識別できる唯一の違いは、ツリー構造にgrub-uefiパーティションがあることです。 LIVE USBとそのパスがファイルマネージャボックスに表示されます。
私の直感は、パスの違いがラベルに関連している必要があることです。ラベルは私のisosを指すために使用することです。
「e」を押すと、LIVE USB用のGRUBメニューが表示されます。
set gfxpayload="keep"
linux (${voidlive})/boot/vmlinuz root=live:CDLABEL=VOID_LABEL ro init=/sbin/init rd.luks=0 rd.md=0 rd.dm=0 loglevel=4 gpt add_efi_memmap vconsole.unicode=1 locale.LANG=en_us.UTF-8 rd.live.overlay.overlayfs=1
initrd (${voidlive})/boot/initrd
「voidlive」変数(ソリューションが含まれていると疑われる)がどのように値を取得するかを知りたいです。 「/boot/grub/grub.cfg」と「/boot/grub/grub_void.cfg」ファイルの間をネゴシエートしていること以外は何も知りません。
この投稿を書き始めてからもう少し試してみましたが、必要に応じてここに報告できます。
今日使用されている項目は次のとおりです。
menuentry "Void ISO-Live"{
set root='hd0,gpt4'
set gfxpayload="keep"
linux /loop_mounting/Void/boot/vmlinuz root=live:CDLABEL=ISOs ro init=/sbin/init \
rd.luks=0 rd.md=0 rd.dm=0 rd.debug=1 loglevel=4 gpt add_efi_memmap vconsole.unicode=1 \
locale.LANG=en_us.UTF-8 rd.live.overlay.overlayfs=1
sleep 3
initrd /loop_mounting/Void/boot/initrd
}
上記のように、「rdsosreport_12_230120.txt」が生成されます。これは投稿に含めるには大きすぎます。添付リンクがまったく見えないので、オンラインで投稿できる場所を探す必要があるようです。
ここでは、私が最も興味深いと思う部分を簡単に引用します。
1)
//lib/dracut/hooks/mount/99-mount-root.sh@130(mount_root): '[' -f /sysroot/forcefsck ']'
//lib/dracut/hooks/mount/99-mount-root.sh@131(mount_root): '[' -f /sysroot/.autofsck ']'
/init@249(): ismounted /sysroot
/lib/dracut-lib.sh@568(ismounted): findmnt /sysroot
/init@250(): usable_root /sysroot
/lib/dracut-lib.sh@742(usable_root): local _i
/lib/dracut-lib.sh@744(usable_root): '[' -d
/sysroot ']'
/lib/dracut-lib.sh@746(usable_root): for _i in "$1"/usr/lib*/ld-*.so "$1"/lib*/ld-*.so
/lib/dracut-lib.sh@747(usable_root): '[' -e '/sysroot/usr/lib*/ld-*.so' ']'
/lib/dracut-lib.sh@746(usable_root): for _i in "$1"/usr/lib*/ld-*.so "$1"/lib*/ld-*.so
/lib/dracut-lib.sh@747(usable_root): '[' -e '/sysroot/lib*/ld-*.so' ']'
/lib/dracut-lib.sh@750(usable_root): for _i in proc sys dev
/lib/dracut-lib.sh@751(usable_root): '[' -e /sysroot/proc ']'
/lib/dracut-lib.sh@751(usable_root): return 1
/init@251(): warn '/sysroot has no proper rootfs layout, ignoring and removing offending mount hook'
/lib/dracut-lib.sh@66(warn): check_quiet
/lib/dracut-lib.sh@488(check_quiet): '[' -z yes ']'
/lib/dracut-lib.sh@67(warn): echo '<28>dracut Warning: /sysroot has no proper rootfs layout, ignoring and removing offending mount hook'
/lib/dracut-lib.sh@68(warn): echo 'dracut Warning: /sysroot has no proper rootfs layout, ignoring and removing offending mount hook'
dracut Warning /sysroot has no proper rootfs layout, ignoring and removing offending mount hook
/init@252(): umount /sysroot
/init@253(): rm -f -- /lib/dracut/hooks/mount/99-mount-root.sh
/init@257(): _i_mount=20
/init@258(): '[' 20 -gt 20 ']'
/init@242(): :
/init@243(): ismounted /sysroot
/lib/dracut-lib.sh@568(ismounted): findmnt /sysroot
/init@247(): for f in $hookdir/mount/*.sh
/init@248(): '[' -f '/lib/dracut/hooks/mount/*.sh' ']'
/init@249(): ismounted /sysroot
/lib/dracut-lib.sh@568(ismounted): findmnt /sysroot
/init@257(): _i_mount=21
/init@258(): '[' 21 -gt 20 ']'
/init@259(): flock -s 9
/init@259(): emergency_shell 'Can'''t mount root filesystem'
/lib/dracut-lib.sh@1094(emergency_shell): local _ctty
/lib/dracut-lib.sh@1095(emergency_shell): set +e
/lib/dracut-lib.sh@1096(emergency_shell): local _rdshell_name=dracut action=Boot hook=emergency
/lib/dracut-lib.sh@1097(emergency_shell): local _emergency_action
/lib/dracut-lib.sh@1099(emergency_shell): '[' 'Can'''t mount root filesystem' = -n ']'
/lib/dracut-lib.sh@1102(emergency_shell): '[' 'Can'''t mount root filesystem' = --shutdown ']'
/lib/dracut-lib.sh@1112(emergency_shell): echo
/lib/dracut-lib.sh@1112(emergency_shell): echo
/lib/dracut-lib.sh@1113(emergency_shell): warn 'Can'''t mount root filesystem'
/lib/dracut-lib.sh@66(warn): check_quiet
/lib/dracut-lib.sh@488(check_quiet): '[' -z yes ']'
/lib/dracut-lib.sh@67(warn): echo '<28>dracut Warning: Can'''t mount root filesystem'
/lib/dracut-lib.sh@68(warn): echo 'dracut Warning: Can'''t mount root filesystem'
dracut Warning: Can't mount root filesystem
/lib/dracut-lib.sh@1114(emergency_shell): echo
上記のように、別のUSBドライブにdd-edすると、同じISOファイルが正しく起動し、ターゲットUSBドライブのISOファイルがチェックされ、正しいチェックサムが得られます。