この問題についてこれまでに見つけたすべての情報は、私の好みには十分ではありません。古くなったり、誤解を招いたり、誤った内容であったり、過度に複雑に見えたり、この特定の問題に対処したりしません。
ターゲット:
- 起動可能なUSBドライブ(UEFIおよびレガシーBIOS対応)
- (ベース)ライブDebian 9(ストレッチ)、バスターまたはブルスアイ
- 永続性(デフォルトではUEFIおよびレガシーBIOSで動作)
- 基本ドイツ語キーボードレイアウト
- 他のGNU/Linuxシステムのトラブルシューティングに最適
理由:
- 使用するたびにキーボードレイアウトを設定する必要があると頭が痛い
- cryptsetupとefibootmgrがデフォルトのDebian Liveイメージから欠落しています。
- gnome-terminalは基本的に迷惑な白い背景を持っています。
解決策なし:
- カスタムDebianライブ画像を(再)構築します。 (まだ試していませんが退屈に見えます。)
- unetbootin(debianstretchから起動すると不明なパスワードを求めるメッセージが表示されます。とにかく、UEFIをサポートしていないようです)
- 一部の外国自動化プロセス、何が起こっているのか不明
Debianのライブイメージとインストールイメージはisohybridで、ブロックデバイスに簡単に書き込むことができますdd
。彼らはUSBドライブで作業を行いますが、本当に良いです!ただし、grubとisolinuxの設定(ライブISOイメージの読み取り専用ISO9660ファイルシステムに含まれています)を編集しない限り、永続性はなく、英語以外のキーボードレイアウトをデフォルトに設定する方法はありません。したがって、ライブISOをUSBドライブに書き込んだ後でも、これらのパラメータを変更することはできません。
答え1
以下は、Debian の本虫では動作しません(次の理由で)。
これは永続的な Debian ライブ USB ドライブを作成する方法です。不足しているパッケージをインストールすることができ、それ以降の永続性を使用してすべてのライブ起動時に使用できます。読み取り/書き込みファイルシステムはライブISOイメージファイルシステムのコンテンツを再生成するため、ブートローダの設定を変更して永続性を有効にし、起動時にキーボードレイアウトを設定できます。
ここで説明されている手順はテストされており、Debian Stretchで動作し、BusterとBullseyeを使用してDebian Stretchライブイメージを作成します。
多くのステップが必要ですが、この方法は非常に効率的です。
婦人声明:ターゲットUSBドライブのデータが失われ、次のコマンドを混乱させると非常に残念です。私はあなたの行動について責任を負いません。
とても幸運だと思います。
今日の運が特に良いなら、これをやってくださいバッシュスクリプトあなたのためにプロセスを自動化します。 ISOイメージパスを最初のパラメータとして渡し、USBドライブブロックデバイス名を2番目のパラメータとして渡します。ちなみに、このスクリプトは非常に危険そして最初に読んで理解していないまま実行してはいけません。
長い話を短く
Debian Live ISOイメージをインポートしてパッケージ(apt install syslinux parted
)をインストールしたら、次の手順を実行します。
umount /dev/sdX*
parted /dev/sdX --script mktable gpt
parted /dev/sdX --script mkpart EFI fat16 1MiB 10MiB
parted /dev/sdX --script mkpart live fat16 10MiB 4GiB
parted /dev/sdX --script mkpart persistence ext4 4GiB 100%
parted /dev/sdX --script set 1 msftdata on
parted /dev/sdX --script set 2 legacy_boot on
parted /dev/sdX --script set 2 msftdata on
mkfs.vfat -n EFI /dev/sdX1
mkfs.vfat -n LIVE /dev/sdX2
mkfs.ext4 -F -L persistence /dev/sdX3
mkdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
mount /dev/sdX1 /tmp/usb-efi
mount /dev/sdX2 /tmp/usb-live
mount /dev/sdX3 /tmp/usb-persistence
mount -oro live.iso /tmp/live-iso
cp -ar /tmp/live-iso/* /tmp/usb-live
echo "/ union" > /tmp/usb-persistence/persistence.conf
grub-install --no-uefi-secure-boot --removable --target=x86_64-efi --boot-directory=/tmp/usb-live/boot/ --efi-directory=/tmp/usb-efi /dev/sdX
dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/mbr/gptmbr.bin of=/dev/sdX
syslinux --install /dev/sdX2
mv /tmp/usb-live/isolinux /tmp/usb-live/syslinux
mv /tmp/usb-live/syslinux/isolinux.bin /tmp/usb-live/syslinux/syslinux.bin
mv /tmp/usb-live/syslinux/isolinux.cfg /tmp/usb-live/syslinux/syslinux.cfg
sed --in-place 's#isolinux/splash#syslinux/splash#' /tmp/usb-live/boot/grub/grub.cfg
sed --in-place '0,/boot=live/{s/\(boot=live .*\)$/\1 persistence/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg
sed --in-place '0,/boot=live/{s/\(boot=live .*\)$/\1 keyboard-layouts=de locales=en_US.UTF-8,de_DE.UTF-8/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg
umount /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
rmdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
ちょっとした説明で詳しく
sudo
ほとんどのGNU / Linuxシステムで利用可能な次のコマンドのほとんどを実行するには、高い権限を使用する必要があります。
ダウンロード
必要なウィンドウマネージャを使用してDebian Live ISOイメージをダウンロードしてください。
https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/
ダウンロードしたISOイメージを単に「live.iso」と呼びます。
ターゲットドライブの決定
USBドライブデバイスの検索を使用してくださいlsblk
。それが私たちが呼ぶものです/dev/sdX
。
削除
マウント解除されたドライブの既存のパーティションの使用umount /dev/sdX*
パーティションの作成
UEFI PCがUSBドライブから起動するには、EFI起動パーティションが必要です。その後、元のライブISOファイルシステムのイメージコンテンツを保存するのに十分なパーティションが必要です。パーティションにはlegacy_boot
フラグが設定されている必要があります。次に、USBドライブの残りのスペースをすべて使用するために永続パーティションを追加します。 GPTをサポートするパーティションツールを使用してこれを行うことができます(フラグを参照legacy_boot
)。以下は使用例ですparted
。
parted /dev/sdX --script mktable gpt
parted /dev/sdX --script mkpart EFI fat16 1MiB 10MiB
parted /dev/sdX --script mkpart live fat16 10MiB 4GiB
parted /dev/sdX --script mkpart persistence ext4 4GiB 100%
parted /dev/sdX --script set 1 msftdata on
parted /dev/sdX --script set 2 legacy_boot on
parted /dev/sdX --script set 2 msftdata on
これにより、GPTパーティションテーブルと保護MBRパーティションテーブルが作成されます。
ファイルシステムの作成
EFIおよびアクティブパーティションではFATを使用し、ext4
永続パーティションではFATを使用する必要があり、persistence
永続機能が正しく機能するにはラベルが必要です。
mkfs.vfat -n EFI /dev/sdX1
mkfs.vfat -n LIVE /dev/sdX2
mkfs.ext4 -F -L persistence /dev/sdX3
リソースのマウント
一時マウントポイントにソースISOとターゲットパーティションをマウントする必要があります。
mkdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
mount /dev/sdX1 /tmp/usb-efi
mount /dev/sdX2 /tmp/usb-live
mount /dev/sdX3 /tmp/usb-persistence
mount -oro live.iso /tmp/live-iso
リアルタイム放送システムの設置
ライブISOファイルシステムのコンテンツをライブパーティションにコピーします。
cp -ar /tmp/live-iso/* /tmp/usb-live
永続構成ファイル
必要な構成ファイルを使用して永続ファイルシステムを準備します。このファイルがないと、永続性機能は機能しません。
echo "/ union" > /tmp/usb-persistence/persistence.conf
GrubはUEFIをサポート
UEFIブートをサポートするには、grub2をインストールしてください(grub-efi-amd64-bin
Debianのパッケージが必要です)。私たちはgrub-install
強制するいいえ--removable
UEFIセキュアブートを使用すると、これは明らかにこのオプションには適用されません。
grub-install --no-uefi-secure-boot --removable --target=x86_64-efi --boot-directory=/tmp/usb-live/boot/ --efi-directory=/tmp/usb-efi /dev/sdX
レガシー BIOS サポートのための Syslinux
syslinuxgptmbr.bin
ブートローダをドライブにインストールします(syslinuxまたはインストールパッケージのダウンロードsyslinux-common
)。次に、syslinux をアクティブ・パーティションにインストールします。
dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/mbr/gptmbr.bin of=/dev/sdX
syslinux --install /dev/sdX2
ISOLinuxの修理
syslinuxで使用するために、元のライブISOのisolinux設定を再利用します。
mv /tmp/usb-live/isolinux /tmp/usb-live/syslinux
mv /tmp/usb-live/syslinux/isolinux.bin /tmp/usb-live/syslinux/syslinux.bin
mv /tmp/usb-live/syslinux/isolinux.cfg /tmp/usb-live/syslinux/syslinux.cfg
カーネルパラメータ
実際の読み取り/書き込みファイルシステムにライブシステムファイルがコピーされたため、grubとsyslinuxの設定を操作できます。
menu.cfg
に永続カーネルパラメータを追加しますgrub.cfg
。両方のファイルで、各行persistence
の最初の行の末尾にキーワードを追加しますboot=live
。
sed --in-place '0,/boot=live/{s/\(boot=live .*\)$/\1 persistence/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg
キーボードレイアウトカーネルパラメータを設定します。両方のファイルで、各行の最初の行の末尾にキーワードを追加しますboot=live
。
sed --in-place '0,/boot=live/{s/\(boot=live .*\)$/\1 keyboard-layouts=de locales=en_US.UTF-8,de_DE.UTF-8/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg
幼虫が飛び散る
grubブートイメージを回復します(オプション、別のディレクトリに移動します)。
sed --in-place 's#isolinux/splash#syslinux/splash#' /tmp/usb-live/boot/grub/grub.cfg
除去と清掃
umount /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
rmdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
これがUEFIとBIOSで動作する理由
UEFIモードで起動すると、PCはGPTパーティションテーブルで定義したFATパーティションを検索します。最初のFATパーティションにはUEFI grubブートローダがあり、これはリムーバブルドライブのUEFIによって指定されたパスにあるために検出されます(このように切り替えます--removable
)grub-install
。これを行うには、UEFIブートエントリは必要ありません。 PCにUSBドライブから起動しようとするだけです。 Grubはそこから取得するように設定されています(grub.cfgの読み込み、メニューの表示など)。
BIOSモードで起動し、USBドライブから起動することを選択した場合、PCはgptmbr.bin
USBドライブの保護MBRに作成したブートローダコードを実行します。ブートローダはフラグ付きGPTパーティションを見つけ、そのlegacy_boot
パーティションからsyslinuxをロードします。その後、Syslinuxはタスクの代わりになります(menu.cfgの読み込み、メニューの表示など)。
暗号化された永続性
cryptsetup
永続パーティションで純粋なext4を使用する代わりに、最初に永続パーティションをLUKS(使用)で暗号化してから、ext4(正しいラベルを使用)でフォーマットすることができます。しかし、次のように文書たとえば、リアルタイムシステムにはこのcryptsetup
パッケージが含まれている必要があります。そうしないと、暗号化されたパーティションをライブシステムから復号化できません。これは、カスタムライブISOを最初に構築する必要があることを意味します。ただし、これはこの回答の範囲外です。
歴史
この--no-uefi-secure-boot
オプションは以前は通話に含まれていませんでしたgrub-install
。スティックは私にとってうまくいきましたが、Debian バスターの出現により、私のコンピュータでセキュアブートはまだ無効になっていますが、この機能は停止しました。
この方法は Debian の本虫にとってはもう動作しません。 ISOイメージにはシンボリックリンクが導入されているため、FATファイルシステムにコピーできません。ライブファイルシステムをext *に変更するときは、別のブートローダチェーンが必要です。また、isolinuxブートメニューがリファクタリングsed
され、永続性とロケールフラグを設定するコマンドを調整する必要があります。