
私たちはDebianベースの製品を作っています。工場でそれらを構築するプロセスを簡素化するために、基本オペレーティングシステムをインストールするためのライブディスクを構築しようとしています。このプロセスを使用する古い製品がありますが、Debian 7に基づいています。私はDebian 11を使用しています。私のDebian 11の修復プロセスとイメージはDebian 7に基づいています。どちらも使用されます。 Debian 11システムは、メインラインリポジトリとマイリポジトリからオペレーティングシステムをインポートして、ビットをホストするパッケージをlive-build
入手します。これは、ビルドOSを実行し、それをsquashfsに圧縮してからドライブパーティション、squashfsファイルを適切なパーティションに解凍するなどのタスクを実行するスクリプトを使用して、周囲にライブOSをビルドするマルチレベルbullseye
プロセスです。live-build
深刻に動作しない場合は、GRUBを使用してください。
ビルドの一部は次のことを行います。
install -d /boot/seed
grub-mkimage -Ox86_64-efi -o /boot/seed/BOOTX64.EFI -p '(hd0,1)/EFI/BOOT/grub' \
part_gpt part_msdos fat
grub-mkimage -Oi386-pc -o /boot/seed/mbr-core.img -p '(hd0,msdos1)/biosgrub' \
part_msdos fat biosdisk
grub-mkimage -Oi386-pc -o /boot/seed/gpt-core.img -p '(hd0,gpt1)/biosgrub' \
part_gpt fat biosdisk
cp -a /usr/lib/grub/i386-pc/boot.img /boot/seed/boot.img
cp -a /usr/lib/grub/i386-pc/modinfo.sh /boot/seed/modinfo.sh
grub-editenv /boot/seed/grubenv create
これらのファイルは物理オペレーティングシステムに保存され、GRUBのインストールを試みる前にESPパーティションにコピーされます。これらのファイルとさまざまなGRUBモジュールの両方がインストールスクリプト中にコピーされます。
後でスクリプトからgrub-install
。
grub-install \
--directory /mnt/biosgrub \
--boot-image boot.img \
--core-image core_img \
/dev/sda
ここでの問題は、最新バージョンがgrub-install
サポートされなくなり、core-image
Debian boot-image
7バージョンなどの移行がすぐに失敗することです。boot-image
とスイッチを取り出しましたが、core-image
失敗します。
grub-install: error: failed to get canonical path of `overlay'.
はい、実際には左バックティックと右一重引用符がありますoverlay
。
GRUBの手順を削除し、すべてを解凍し、Manjaro(すでに配置されている)を実行しているグラフィックライブディスクから起動して、GRUBの状況に関する追加情報を取得しようとしました。そこで実行してもgrub-install
同じように失敗します。
インターネット検索では、ターゲットデバイスがoverlayfsを使用していると考えられ、どの物理デバイスを使用するのかわからないため、これが発生することを理解していますが、ここgrub-install
でどこに行くのか、どの質問をするのかわかりません。独自のソフトウェアのためにいくつかのコンテンツを編集する必要がありましたが、詳細をお寄せいたします。
重要な場合は、作成したOSパーティションをシステムの外部に手動でインストールすると、すべてが正しい場所にあり、コードが正しい場所にあり、ブートローダがある場合は正しく実行できることがわかります。
/proc
ETA:ここでは、圧縮されていないOSをライブディスクのディレクトリにインストールし、、およびをそのディレクトリにマウントし、EFIパーティションをマウントしてからingするなど/sys
、いくつかの進歩を遂げました。その後実行されますが、起動時に grub がまだ存在しません。/dev
chroot
grub-install /dev/sda
答え1
debos
この問題について大量のトラフィックが発生することを知らせた後、質問に記載されているプロセスを使用しようとするのではなく、ビルドされたイメージとフラッシュイメージを使用して最終的に問題を解決したと投稿する必要があると思いました。