とても幸運だと思います。

とても幸運だと思います。

この問題についてこれまでに見つけたすべての情報は、私の好みには十分ではありません。古くなったり、誤解を招いたり、誤った内容であったり、過度に複雑に見えたり、この特定の問題に対処したりしません。

ターゲット:

  • 起動可能な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-binDebianのパッケージが必要です)。私たちはgrub-install強制するいいえ--removableUEFIセキュアブートを使用すると、これは明らかにこのオプションには適用されません。

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によって指定されたパスにあるために検出されます(このように切り替えます--removablegrub-install。これを行うには、UEFIブートエントリは必要ありません。 PCにUSBドライブから起動しようとするだけです。 Grubはそこから取得するように設定されています(grub.cfgの読み込み、メニューの表示など)。

BIOSモードで起動し、USBドライブから起動することを選択した場合、PCはgptmbr.binUSBドライブの保護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され、永続性とロケールフラグを設定するコマンドを調整する必要があります。

おすすめ記事