
私はUSBスティックに複数のLinuxディストリビューションをアーカイブし、ディストリビューションごとにgrub.cfgエントリを作成して管理します。他のディストリビューションはスティックブートを維持し、うまく動作しますが、(他の方もいるようですね)Debian Jessie(8.x)で問題が発生し始めました。 Debian Netinst は debian-installercurses インタフェースで起動しますが、iso パスが grub.cfg のカーネル行に提供されていても、正しい Debian iso ファイルを検索しようとします。
USBスティックから「debian-8.2.0-amd64-i386-netinst.iso」を起動してみましたが、一部成功しました。まず、次のコマンドを使用してUSBスティックを設定しました。ArchWikiで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/すべての問題が持続します。
答え1
netinstを起動しているので、ISOを完全にスキップして起動できます。カーネル+initrdUSBファイルシステムから直接。これはネットワークブートdiで、Debianリポジトリの残りのコンポーネントのみをロードします。
iso 検索に関連するプロセスは次のとおりです。
- grubはISOをロードし、カーネルとinitrdをメモリに読み込みます(あなたの場合、initrdはUSBドライブに抽出されました)。
- grub はカーネルに制御を与える
- カーネルは initrd の init スクリプトに制御を渡します。
- initスクリプトはdebian-installerに制御を渡します。
- これiso-scan diモジュール
iso-scan/filename
利用可能なすべてのドライブをマウントし、付属のドライブを見つけます。 - ISOが見つかり、ループバックインストールが見つかった場合、Debianインストーラはプロセスを続行します。
(セクション6.3.1.4参照)インストール文書詳しくは)
このようなパスを指定すると、これはブロックデバイスであり、ファイルが常駐できるマウントされたファイルシステムではない/dev/disk/by-uuid/UUID/debian/debian8.iso
ため意味がありません。/dev/disk/by-uuid/UUID
iso-scanで検索を絞り込むには、iso-scan / filenameを使用する代わりに*shared/ask_device=manual
と値を事前設定できますshared/enter_device=/dev/disk/UUID
(カーネル行に追加するだけです)。
これは 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や他のディストリビューションのヒントを覚えていると思います。
答え2
このソリューションをお試しください。
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
あなたのアーキテクチャに合ったバージョンをダウンロードしてください。
頑張ってください。