QEMUを使用してLinuxカーネルを実行しようとし、起動プロセス中に問題が発生する

QEMUを使用してLinuxカーネルを実行しようとし、起動プロセス中に問題が発生する

プロジェクトでは、圧縮されていないLinuxカーネルを実行できる必要があります。 QEMUを使用してこれをエミュレートすることが提案されました。これは、マシンで直接実行するよりも複雑ではないからです。ただし、QEMUではカーネルを正しくロードできません。私はアーチLinuxを使用しています。

それを使って画像を作成しましたmkinitcpio --generate customImage3.img --kernel 5.9.1-arch1-1。次に、さまざまなコマンドラインオプションの組み合わせを使用してQEMUを実行してみました。最新の内容は次のとおりです。

sudo qemu-system-x86_64 -kernel ../kernel-build/linux-5.9.1/vmlinux -nographic -initrd customImage3.img -append "console=ttyS0" -m 512 --enable-kvm -cpu host

root=/dev/sda3たとえば、追加セクションに「root」を指定しようとしましたが、エラーの発生は変わりません。

QEMU実行時の出力は以下の通りです。

SeaBIOS (version ArchLinux 1.14.0-1)


iPXE (http://ipxe.org) 00:03.0 CA00 PCI2.10 PnP PMM+1FF912A0+1FEF12A0 CA00



Booting from ROM..mount: /proc: must be superuser to use mount.
mount: /sys: must be superuser to use mount.
mount: /dev: must be superuser to use mount.
mount: /run: must be superuser to use mount.
/init: line 13: can't open /proc/cmdline: no such file
:: running early hook [udev]
Warning: /lib/modules/5.9.1/modules.devname not found - ignoring
Failed to parse kernel command line, ignoring: No such file or directory
Starting version 246.6-1-arch
:: running hook [udev]
:: Triggering uevents...
Failed to scan subsystems: No such file or directory
Failed to scan devices: No such file or directory
ERROR: device '' not found. Skipping fsck.
:: mounting '' on real root
mount: /new_root: mount failed: Operation not permitted.
You are now being dropped into an emergency shell.
sh: can't access tty; job control turned off
[rootfs ]#

起動するデバイスなど必要なものが見つからないようです。いくつかの主要なオプションが欠けているようですが、どんなに検索しても必要なものを特定するのに役立ちません。このような状況のお手伝いをいただきありがとうございます。

ベストアンサー1

これはmkinitcpioのバグです:アーカイブのuid = 0 gid = 0設定を変更する

解決策は、sudoを使用してmkinitcpioを呼び出すことです。

おすすめ記事