USBスティックにいくつかのLinuxディストリビューションを保持し、各ディストリビューションにgrub.cfgエントリを書き込むだけでそれらを管理します。私がスティックブートを続けて問題なく動作する他のディストリビューションですが、私は (そして他の人はそう思われます) Debian Jessie(8.x)で問題を抱え始めました。 DebianNetinstはdebian-installercursesインターフェースを起動しますが、grub.cfgのカーネル行にisoパスが指定されている場合でも、正しいdebianisoファイルを検索しようとします。
USBスティックから「debian-8.2.0-AMD64-i386-netinst.iso」を起動しようとして部分的に成功しました。最初に、 ArchWikiにあるUSBマルチブート手順 を使用してUSBスティックをセットアップしました。
これは、USBスティックの簡略化されたファイルとフォルダーの構造であり、その後に関連するgrub.cfgエントリが続きます。
USBROOT/
----boot/
----grub/
----grub.cfg
----(other grub paraphernalia)
----iso/
----debian/
----debian-8.2.0-AMD64-i386-netinst.iso
----initrd.gz (special initrd)
Iso内にinitramfsがありますが、私が本当に理解していない理由により、debianを適切に起動することはできません。これまでに示した2つのリンクで簡単に説明されています。
今私のgrub.cfgエントリ。これがi386/AMD64マルチアーチISOであることは知っていますが、簡単にするために64ビット部分に焦点を当てます。 64ビットの部分を理解できれば、i386の別のエントリを簡単に作成できるはずです。
probe -u $root --set=rootuuid
set imgdevpath="/dev/disk/by-uuid/$rootuuid"
menuentry 'Debian 8.2 Multiarch' {
set isoname='debian-8.2.0-AMD64-i386-netinst.iso'
set isopath='/boot/iso/debian'
set isofile=${isopath}/${isoname}
set initrdfile=${isopath}/initrd.gz
loopback loop $isofile
linux (loop)/install.AMD/vmlinuz iso-scan/ask_second_pass=true iso-scan/filename=${imgdevpath}/${isofile} config quiet
initrd ${initrdfile}/initrd.gz
}
余談ですが、initrd行をに変更します
initrd ${initrdfile}
grub(私は思う)にエラーをスローさせます。 Grubがしばらく一時停止すると、Debianは起動を試み、すぐにカーネルパニックが発生します。これは、initramfsが見つからないためです。ただし、ブロックコードの例に示すようにパスを完全に書き出すと、これは発生しません。手動でフルパスを書き出すだけでなく、変数を設定してパスを指定すると、なぜエラーがスローされるのでしょうか。 しかし、私の主な質問は次のとおりです。
どのカーネルブートパラメータを指定する必要がありますか検索は実行されません そしてisoは指定したパスに配置されます。インストーラーは最終的に検索によって正しいISOを見つけますが、なぜ検索する必要があったのですか?
私はそれがLinuxラインと関係があるとほぼ確信しています:
linux (loop)/install.AMD/vmlinuz iso-scan/ask_second_pass=true iso-scan/filename=${imgdevpath}/${isofile} config quiet
テーマを変更するなど、少なくとも20のバリエーションを試しました。
iso-scan/filename=${isofile}
findiso=${imgdevpath}/${isofile}
findiso=${isofile}
編集:initrdの問題を修正しました:$ initrdfileを定義するときに一重引用符がありました。 findiso/iso-scan /その他の問題はまだ残っています。
Netinstを起動しているので、ISOを完全にスキップして、USBファイルシステムから直接 kernel + initrd を起動できます。これはnetbootd-iであり、Debianリポジトリから残りのコンポーネントをロードするだけです。
ISO検索については、プロセスは次のようになります。
iso-scan/filename
を探して利用可能なすべてのドライブをマウントします(詳細については、 install docs のセクション6.3.1.4も参照してください)
/dev/disk/by-uuid/UUID/debian/debian8.iso
のようなパスを指定する場合、/dev/disk/by-uuid/UUID
はブロックデバイスであり、ファイルが存在できるマウントされたファイルシステムではないため、あまり意味がありません。
Iso-scan/filenameを使用する以外に、iso-scanで検索を絞り込む場合は、値* shared/ask_device=manual
およびshared/enter_device=/dev/disk/UUID
をpreseedすることもできます(カーネル行に追加するだけです)。
これはあなたのgrub.cfgであるはずです:
set imgdevpath="/dev/disk/by-uuid/UUID"
menuentry 'Debian 8.2 Multiarch' {
set isofile='/boot/iso/debian/debian-8.2.0-AMD64-i386-netinst.iso'
loopback loop $isofile
linux (loop)/install.AMD/vmlinuz iso-scan/filename=$isofile shared/ask_device=manual shared/enter_device=$imgdevpath no-Prompt no-eject
initrd (loop)/install.AMD/initrd.gz
}
私はこれを実際にテストしていないことに注意してください。古いdebianリリース用に私の同様のセットアップからコピーして貼り付けています。
これから始めることをお勧めします。それが機能しない場合にのみ、他のinitrdを試してください。また、UUIDのプローブを再読み込みする前に、「手動で」機能することを確認してください。
*これらは私が以前「ヒント」と呼んだものです。 Ubuntuや他のディストリビューションからのヒントを覚えていると思います
このソリューションを試してください。
grub.cfg
を編集して、正しいパスをmini.iso
に一致させます。各mini.iso
はアーキテクチャに固有です。
menuentry "Debian Stable | Testing | Experimental AMD64 Netinst" {
set isoname="mini.iso"
set isopath="/boot/iso/debian/AMD64"
set isofile="${isopath}/${isoname}"
echo "Using ${isoname}..."
loopback loop $isofile
linux (loop)/linux priority=low vga=788 ---
initrd (loop)/initrd.gz
}
menuentry "Debian Stable | Testing | Experimental i386 Netinst" {
set isoname="mini.iso"
set isopath="/boot/iso/debian/i386"
set isofile="${isopath}/${isoname}"
echo "Using ${isoname}..."
loopback loop $isofile
linux (loop)/linux priority=low vga=788 ---
initrd (loop)/initrd.gz
}
アーキテクチャに一致するmini.iso
をここからダウンロードしてください。
幸運を祈ります。