web-dev-qa-db-ja.com

USBスティック上のUbuntu-BIOSモードとUEFIモードの両方で起動

UbuntuをUSBスティックにインストールして、(ほぼ)任意のコンピューターをプラグインしてそこから起動し、そのコンピューターにインストールされているかのように(ほぼ)通常使用できるようにします。また、念のために、ほとんどのコンピューターで(ほとんどの場合)いくつかのポータブルアプリを格納するために使用できるデータパーティションを作成したいと思います。


UbuntuをBIOSモードでインストールした場合、UEFIモードでコンピューターから起動することはできず、その逆も同様だと言われました。

どのコンピューターでも起動できるようにしたいので、それは大きな問題です。

私の場合、BIOSモードまたはUEFIモードでコンピューターを起動できるようにするにはどうすればよいですか?

私はソリューションを探してきましたが、それらのほとんどは私のものとは異なる特定のニーズのためのものであるため、それらのソリューションから最小要件を抽出して問題に適用することは困難です。

この問題に対する単純で「きれいな」非常に一般的な解決策はありますか?

特定の解決策が優れている、または特定の手順が必要な理由について、いくつかの説明をお願いします。


私の現在の設定:

  • USBスティック: SanDisk Ultra Fit(32 Go)
  • OS:Xubuntu 16.04 i386
  • インストール:フルインストール(Rufusで構築されたLive USBから)
  • ドライバー:独自仕様なし
  • ファイルシステム:
    • パーティションテーブル: GPT
      • 2: ESP/boot/efi、128 Mio、FAT32、[boot、esp]
      • 3: ABP 、128 Mio、HFS +
      • 4: BBP 、2 Mio、[bios_grub]
      • 5:スワップ、512 Mio
      • 6: root/、24 Gio、ext4、defaults,errors=remount-ro,lazytime,commit=60
      • 1: データ/media/data、〜3.6 Gio、FAT32、defaults,lazytime,check=strict
    • 羊:
      • /tmp、tmpfs、defaults,nosuid,nodev,noexec,mode=1777
  • スワップ:
    • vm.swappiness=5
    • スワップパーティション:512 Mio、緊急用
    • zRAM
    • スワップファイル:
      • /var/swap/hib.swp:起動時にスクリプトによって生成される、休止状態の場合はRAMと同じサイズ
      • /var/swap/opt.swp:必要に応じて、スクリプトによって生成
  • オーバープロビジョニング:〜5.6%
    • 組み込み:〜1.2 Gio(見かけ上)
    • 追加:512 Mio
  • スケジューラー:deadline
4
CidTori

注意:ここでは、手動で進める方法を紹介します。それはもう少し複雑です(不可能な考えではありません)が、あなたが望む/必要なものを正確に制御することができます。何も理解していない場合は、MultiSystemのようなソフトウェアを使用する方が適切なソリューションになるでしょう。

このようなUSBキーを作成するには2つの方法があります。 mdos/MBRパーティションテーブルまたはGPTパーティションテーブルを使用できます。どちらにも長所と短所があります。最初にmdosバージョンについて説明し、後で時間があればGPTバージョンについて説明します。

mdos/MBRパーティションテーブル

まず、すべてのデータをバックアップしてください。これらの操作は、自分が何をするのかわからない場合は危険であり、不正な操作を行うとハードドライブが消去される可能性があるため、コマンドを入力する前に何をしているのかを必ず確認してください。

ステップ1:USBデバイスを見つける

コマンドを使用する

lsblk

uSBデバイスの名前を見つけます。たとえば、lsblkを実行してキーを接続し、もう一度lsblkを実行して、変更内容を確認できます。表示されるデバイスがキーであり、/dev/sdXが表示されます。

ステップ2:パーティションを作成する

任意のプログラムを使用できます。gpartedfdiskcfdiskfdiskのコマンドラインツール)...その後、次の操作を実行します

  • 最初にプログラムを開始します(選択したプログラムに応じて、Sudo gpartedまたはSudo fdisk /dev/sdX
  • 次に、デバイスをリセットして、msdosパーティションテーブルを作成します(gpartedには、[デバイス/新しいパーティションテーブルの作成]にあり、fdiskタイプoがあります。
  • 次に、3つのパーティションを作成します。最初のパーティションはFAT32にあり、データのパーティション(NTFS、ext、またはその他のファイルシステムでもかまいません)、2番目のパーティションはEFIパーティション(FATに基づく)であり、ブート可能であり、約150Mである必要があります。最後の1つはisoを持つパーティションであり、起動可能でFAT32である必要があります(ext2を使用する場合は起動しますが、永続性は使用できません)。プロセスの最後にあなたが持ちたいものは次のとおりです(フラグに注意してください(写真のドレーポー、重要です))。

gparted result

fdiskで作成したい場合は、次のようなものが必要です。

$ Sudo fdisk -l /dev/sdc
Disque /dev/sdc : 14,3 GiB, 15376000000 octets, 30031250 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x2d844503

Périphérique Amorçage    Début      Fin Secteurs Taille Id Type
/dev/sdc1                 2048 14682111 14680064     7G  b W95 FAT32
/dev/sdc2    *        14682112 14989311   307200   150M ef EFI (FAT-12/16/32)
/dev/sdc3    *        14989312 30031249 15041938   7,2G  b W95 FAT32

これを行うには、次の手順を実行します。

Sudo fdisk /dev/sdX
o

n
p
1
<Enter>
+7G     # Or any size you want, just be sure to let arount 2G at the end of the device
t
b

n
p
2
<Enter>
+150M
t
ef

n
p
3
<Enter>
<Enter>
t
b

w

Sudo mkfs.fat -F32 /dev/sdX1
Sudo mkfs.vfat /dev/sdX2
Sudo mkfs.fat -F32 /dev/sdX3

ステップ3:パーティションをマウントする

今、それらをマウントして書き込みます

mkdir /tmp/usb{2,3}
Sudo mount /dev/sdX2 /tmp/usb2/
Sudo mount /dev/sdX3 /tmp/usb3/

ステップ4:2つのパーティション(EFIおよび非EFI)にgrubをインストールします

次に、2つのパーティションにgrubをインストールする必要があります。必ずgrubをインストールしてから、実行してください:

Sudo grub-install -v --no-floppy --boot-directory=/tmp/usb3 --target=i386-pc /dev/sdX
Sudo grub-install -v --no-floppy --boot-directory=/tmp/usb2 --efi-directory=/tmp/usb2 --removable --target=x86_64-efi /dev/sdX

ステップ5:isoファイルをコピーしてgrubを構成する

次に、isoファイルを次のフォルダーにコピーします。

Sudo cp <your iso file> /tmp/usb3/linux-iso

そして、grub構成を2つのgrub構成/tmp/usb2/grub/grub.cfgおよび/tmp/usb3/grub/grub.cfgに配置します(NB:grubのバージョンに応じてgrub2/grub.cfgになります)

insmod loopback
insmod iso9660

menuentry 'XUbuntu 16.04 "Xenial Xerus" - AMD64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-AMD64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
} 

NB:このファイルを編集して適切なisoファイルに一致させる必要があります。ここでは、ファイルを/tmp/usb3/linux-iso/xubuntu-16.04.1-desktop-AMD64.isoに配置することを想定しています。

再起動し、UEFIモードと非UEFIモードの両方で試してください。動作するはずですが、まだ永続性はないはずです!

ステップ6:単一の永続性を追加する

永続性の追加は非常に簡単です。アイデアは、3番目のパーティション(実際にはすべてのFAT32パーティションが受け入れられます)に、いくつかのext2ファイルシステムを含む空のファイルcasper-rwを作成することです。その後、isoファイルの上に配置され、システムが変更された場合、ファイルcasper-rwがこれらの変更を記録します。ホームのみを記録する場合は、まったく同じ手順を実行しますが、home-rwの代わりにファイル名casper-rwを使用します(文書データのみに関心がある場合、および必要に応じて、後で説明する完全な永続性の問題を回避するため)最後に、ファイルの代わりに、ラベルがcasper-rwまたはhome-rwであるパー​​ティションをext2に作成するだけで、まったく同じ結果が得られることに注意してください。ただし、 4Gbの変更(FAT32システムの最大サイズ)。

ファイルを作成するには、単に実行します:

Sudo dd if=/dev/zero of=/mnt/usb3/casper-rw bs=1M count=512

(ここでは512Mですが、最大4Gまでデータのサイズを変更できます)

ファイルlinux .../mnt/usb{2,3}/grub/grub.cfg行にpersistentを追加します(2つのファイルを変更します)。次のようになります。

insmod loopback
insmod iso9660

menuentry 'XUbuntu persistent 16.04 "Xenial Xerus" - AMD64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-AMD64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper persistent file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}

ここで再起動します。永続性が必要です。次のように永続ファイルと非永続ファイルを混在させることもできます。

insmod loopback
insmod iso9660

menuentry 'XUbuntu 16.04 "Xenial Xerus" - AMD64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-AMD64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}
menuentry 'XUbuntu persistent 16.04 "Xenial Xerus" - AMD64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-AMD64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper persistent file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}

複数の永続性

現時点では、キー内のすべてのOSに同じ永続性ファイルがあります。 casper-rwが共有されている場合、すべてを壊すことができます(1つのOSのデータは他のOSのデータとは関係ありません)。システムごとに1つの永続ファイルを作成するには、persist/xubuntuを実行するために、指定されたフォルダーにファイルを配置するのが非常に簡単です。

mkdir /mnt/usb3/persist/xubuntu/
Sudo dd if=/dev/zero of=/mnt/usb3/persist/xubuntu/casper-rw bs=1M count=512

persistent persistent-path=/persist/xubuntuファイルにgrub.cfgを追加します。

insmod loopback
insmod iso9660

menuentry 'XUbuntu persistent 16.04 "Xenial Xerus" - AMD64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-AMD64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper persistent persistent-path=/persist/xubuntu file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}

また、各OSに1つのcasper-rwパーティションを設定する方法が見つからなかったため、すべてのOSで複数の永続性と4 Gbを超える永続性を持つ方法がわかりません。誰かがアイデアを持っているなら、私はそれについて聞いてうれしいです。たぶんパーティションのマウントは一時的にこの問題を解決することができますか?

永続性の欠点

永続性を使用する場合、アップグレードが危険な場合があることに注意する必要があります。変更がカーネルに影響を与えると、実際にシステムが破損する可能性があります。さらに、コンピューターを変更するとうまく合わない場合があります。インターネットカードが変更されたときにインターネットが失われたと説明する人もいます。システムをアップグレードする場合は、USBキーに直接インストールすることを検討する必要があります(USBキーがディスクである場合など)。インストールされたOSに含まれています。誰かがこれらの欠点を回避する解決策を持っているなら、私はそれについて聞いてうれしいです。

ソース

他のシステムと一致するようにgrubを設定する場合、またはMBRの代わりにGPTを使用する場合は、次のリンクを参照してください。

質問がある場合は、お気軽に質問してください。

5
tobiasBora

USBへのフルインストール-BIOS/UEFI

Mkusbは、BIOSとUEFIの両方から起動できるフルインストールUSBドライブの優れた基盤となります。

  • mkusbを使用して、インストーラーUSB(2GB以上)でLiveシステムを作成します。

  • mkusbを使用して、〜25GBの永続性を備えたデフォルト設定を使用して、ターゲット128GB USBで永続システムを作成します(残りのNTFSパーティションは、Windowsアクセス可能なデータパーティションとして使用されます) 。

enter image description here

  • Mkusbが終了したらすぐに、GPartedを開き、ISO9660パーティションであるsdx4を削除し、sdx5を復元されたスペースに展開します。sdxはターゲットドライブのデバイス名です。

  • 必要に応じて、/ homeに追加のext4パーティションsdx6を作成します。

enter image description here

  • さらに先に進む前に、HDDのプラグを抜くか取り外します(オプションですが推奨、UEFIモードでは強く推奨)。

  • インストーラドライブを起動し、[試用]を選択します。

  • ターゲットドライブの挿入

  • Ubuntuのインストールを開始...

  • 「その他」を選択します。

  • (ターゲットドライブ上で)sdx5を選択し、[変更]をクリックします。

enter image description here

  • 用途:ext4、フォーマットおよびマウントポイント:/を選択します。

/ homeパーティションをsdx6に追加しない限り、他のパーティションには触れないでください。

  • ブートローダーのインストール用デバイスとしてsdx5を選択します。

  • インストールを完了します。

  • Sdx5/boot/grubからgrub.cfgを切り取り、sdx3/boot/grubに貼り付けて、既存のgrub.cfgファイルを上書きします。

  • ターゲットドライブを起動し、Sudo update-grubを実行して、すべてのドライブを起動メニューに追加します。

  • 18.04以前のインストールでは、適切なドライバー(Nvidiaなど)をインストールしないでください。

1
C.S.Cameron