web-dev-qa-db-ja.com

GRUB USBのISOイメージからKALIを起動している間、initramfsで停止します

ここで私がやろうとしているところです。

USB Stick Boots to -> GRUB Loader -> GRUB boots one of many ISO files on the USB into LIVE mode.

これが私のディレクトリ構造です。これは本当にシンプルです。

MULTIBOOT(USB stick) ->
- ubuntu-14.04.1-desktop-i386.iso (ISO File)
- Parrot-full-3.6_AMD64.iso (ISO File)
- kali-linux-2017.1-AMD64.iso (ISO File)
- boot (FOLDER)
- boot/grub (FOLDER)

unbutuisoは私のコンピューターと私のVMオウムとカリisoロードカーネルで正常に起動しますが、initramfsで停止し、「インストールメディアが見つかりません」と文句を言います

これが私のgrub.cfgファイルです

menuentry "ubuntu-14.04.1-desktop-i386 Desktop ISO" {
 loopback loop /ubuntu-14.04.1-desktop-i386.iso
 linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu-14.04.1-desktop-i386.iso noeject noprompt splash --
 initrd (loop)/casper/initrd.lz
}

menuentry "Parrot-full-3.6_AMD64 ISO" {
 loopback loop /Parrot-full-3.6_AMD64.iso
 linux (loop)/live/vmlinuz boot=live iso-scan/filename=/Parrot-full-3.6_AMD64.iso noeject noprompt splash --
 initrd (loop)/live/initrd.img
}


menuentry "kali3-AMD64 Live system" {
    loopback loop /kali-linux-2017.1-AMD64.iso
    linux   (loop)/live/vmlinuz boot=live iso-scan/filename=/kali-linux-2017.1-AMD64.iso splash username=root hostname=kali
    initrd  (loop)/live/initrd.img
}

これらのISOを仮想マシンと作業で試しました。また、RUFUSを使用してUSBに接続し、直接起動して、PCと同じように試しました。彼らが働きます。 RUFUSの問題は、単一のISOを使用すると機能することです。しかし、ISOごとに1つのUSBを作りたくありません。すべてのISOを保持するUSB​​を1つだけ作成したいので、LIVEモードで起動できるはずです。そこで、GRUBに切り替えました。しかし、GRUBは大丈夫ですが、そのドキュメントは厳しく制限され、断片化されています。これが必要な場合は、他の多くの人もこれを必要としています。

2
Coder

問題を解決しました!!!!解決:

ルートファイルシステムをロードする途中でisoファイルを見つけるには、ブートプロセスにfindisoカーネルパラメータを使用する必要があります。以下の最新の動作中のgrub.configエントリを参照してください。

注:superGrubをテストするためだけに、ISOファイルを/ boot-isos /フォルダーに移動しました。しかし、どこにでも置くことができます。次のことを確認してください。

1. to give correct path name to the iso file
2. MUST USE findiso kernel parameter to let boot process find the iso file. Else it will NOT work.

uSBの現在のディレクトリ構造は次のとおりです。

USB STICK ->
/boot (folder that holds GRUB)
/boot-isos (folder that holds isos below)
- KALI iso file
- Parrot iso file
- Ubuntu iso file

menuentry "[loopback]Parrot-full-3.6_AMD64" {
    set isofile='/boot-isos/Parrot-full-3.6_AMD64.iso'
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live findiso=$isofile noconfig=Sudo username=root hostname=parrot
    initrd (loop)/live/initrd.img
}


menuentry "[loopback]kali-linux-2017.1-AMD64" {
    set isofile='/boot-isos/kali-linux-2017.1-AMD64.iso'
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live findiso=$isofile noconfig=Sudo username=root hostname=kali
    initrd (loop)/live/initrd.img
}
1
user1570144

私はこれに多くの時間を費やしました。コマンドラインとgrub.cfgパラメーターの両方をループバックから起動するさまざまな方法でテストされています。カリやオウムを起動するためにそれを取得しませんでした。 Ubuntuは毎回正常に起動します。他のLinuxディストリビューションを予約することができました。私はSuperGrubでテストしましたが、同じ結果です。この問題はkali-linux-2017.1-AMD64.isoとParrot-full-3.6_AMD64.isoにあると思います。これら2つのブートプロセスは、マウントされたcd/dvdドライブからルートファイルシステムをロードすることを想定しているため、壊れています。 RUFUSのようなツールは、ISOの内容を/ cdファイルに展開することでこれを回避しています。このファイルは、おそらく別のramdisk/mnt/cdとしてロードおよびマウントされます。 KALIとPARROTはこれを修正する必要があります。

0
user1570144