私の目標は、Xubuntu/Ubuntuのデュアルブートをキャッチしたい-dm-crypt(ネイティブで提供される)ディスク全体暗号化でディスクを完全に暗号化することです。すぐに、ubuntuインストーラーを使用しても簡単にこれを行うことはできず、最終的に各ルートファイルシステムの2つの異なるinitrd構成を作成するようツールをだますことができないため、これは実行できない可能性があります。
だから質問:
誰もこれを以前にやったことがありますか、これを行うのに欠けている簡単な方法はありますか?
(1)が負の場合... a。各インストール(xubuntu/ubuntu)ごとに個別のベース暗号化ボリュームを作成する必要がありますか、それとも1つの暗号化ボリュームとその中に個別のインストールパーティションを作成するだけですか?プロセスをより簡単にするために、私は後者に傾いています。ただし、ブートローダーがこれをどのように処理するかはわかりません。
b。最初のレイアウトを取得した後、暗号化されたボリュームを1つ使用した場合、それを復号化して2番目のディストリビューションをインストールする方法(およびブートローダー、initrdなどを適切に更新する方法)
完全なアカウントは次のとおりです。
再起動間の段階にステップをグループ化しました。
BIOSを搭載したラップトップでこれを行いました(UEFIの詳細については、 暗号化された/ bootを使用したUbuntuのフルディスク暗号化 を参照してください)。 Ubuntu 16.10を以前の16.04にインストールしてから18.04を以前の16.10にインストールする手順を繰り返しました。ただし、Bionicインストールのルート(/)に使用した論理ボリュームの内容を消去する必要がありました。消去せずに放置すると、Ubiquityまたはupdate-initramfsがさまざまな方法で失敗しました。
パーティション/ LVMボリュームは、ハードディスク/ dev/sda上の標準のUbuntuインストールによって作成された名前で参照します。
$ lsblk -o NAME,TYPE,FSTYPE,MOUNTPOINT
NAME TYPE FSTYPE MOUNTPOINT
sda disk
├─sda1 part ext2 /boot
├─sda2 part
└─sda5 part crypto_LUKS
└─sda5_crypt crypt LVM2_member
├─ubuntu--vg-root lvm ext4 /
└─ubuntu--vg-swap_1 lvm swap [SWAP]
LUKSコンテナ「sda5_crypt」は、論理パーティション上のすべてのスペースを占有します。 LUKSコンテナーを縮小するのは、私にとって非常に困難です。既存のUbuntuインストールを試して破壊したくありません。そこで、代わりに論理ボリューム "root"を縮小するを選択して、新規インストール用のスペースを確保しました。
したがって、ディスク上の唯一の暗号化されていないスペースは、255Mの/ bootパーティションです。このパーティションを分割することは可能ですが、2つの等しい半分にはそれぞれ2つのカーネルバージョンしか保持されず、私にとっては十分ではありません。そこで、代わりに新しい/ bootディレクトリを新しい/ルートの下に配置するにすることにしました(他の場所を指すことはありません)。これにより、いくつかの複雑な問題が発生しますが、プライマリUbuntuとともに複数のインストールを行う余地も残されています。
以下のすべてのコマンドはSudo権限で実行されるなので、すべてのコマンドラインからSudo部分をスキップしました。
また、どのLinuxをインストールしたいかわからないため、「セカンダリUbuntu」について説明します。 「セカンダリUbuntu」(およびUbiquityに固有の詳細)を好みのフレーバーに置き換えます。
通常のバックアップに加えて、必要な設定(/ etc/crypttabなど)の別のコピーを、簡単にアクセスできる場所に作成することもできます。すべてが計画どおりであれば、それは必要ではありませんが、落ち着いておくのに役立つかもしれません。
LUKSコンテナーを開き、LVMをアクティブにします。
cryptsetup luksOpen /dev/sda5 sda5_crypt
vgscan
vgchange -ay
既存のルートボリュームを縮小します。
e2fsck -f /dev/mapper/ubuntu--vg-root
#resize2fs -p /dev/mapper/ubuntu--vg-root 16G
lvreduce -L 16G --resizefs /dev/ubuntu-vg/root
新しいルートボリュームを追加します。サイズは選択できます。 16Gは単なる例です。
lvcreate -L 16G -n root2 ubuntu-vg
新しいスワップを作成しますif if休止状態でLUKSを使用できると信じている場合。それ以外の場合は、2つのインストールが既存のスワップスペースを共有するようにします。
lvcreate -L 4G -n swap2 ubuntu-vg
新しいデータボリュームを作成することは、やるべきことのように思えますが、ここで説明するようにインストールには不可欠ではありません。
lvcreate -l 100%FREE -n data ubuntu-vg
この時点で、初心者はlive-USBを使用せずに再起動し、プライマリUbuntuにログインして、動作することを確認することができます。その場合は、ライブUSBに再起動するときに、LUKSコンテナを再度開くことを忘れないでください。
さらに、LUKSコンテナーを開くために正しいコマンドを使用するように注意してください。たとえば、Launcherサイドバーに表示されるアイコンをクリックすると、コンテナが間違った名前で開かれ、update-initramfsがそのジョブを実行できなくなります。
cryptsetup luksOpen /dev/sda5 sda5_crypt
インストーラーを起動し、インストールの種類として「その他」を選択します。
インストールの残りに進みます。
インストールの最後に、テストを続行することを選択します。
両方のルートボリュームをマウントします。
mkdir /mnt/newroot && mount /dev/mapper/ubuntu--vg-root2 /mnt/newroot
mkdir /mnt/oldroot && mount /dev/mapper/ubuntu--vg-root /mnt/oldroot
ファイル/ etc/crypttabを古いルートボリュームから新しいルートボリュームにコピーします。
cp -p /mnt/oldroot/etc/crypttab /mnt/newroot/etc/
cat /mnt/newroot/etc/crypttab
コピーしたファイルがすでにキーファイルを参照している場合は、キーファイルとキーをinitrd.imgにロードする必要があるスクリプトもコピーします。
cp -p /mnt/oldroot/crypto_keyfile.bin /mnt/newroot/
cp -p /mnt/oldroot/etc/initramfs-tools/hooks/crypto_keyfile /mnt/newroot/etc/initramfs-tools/hooks/
重要な最終ステップは、chroot jailのinitrd.imgへの変更をロードすることです。
for DEV in dev dev/pts sys proc; do mount --bind /$DEV /mnt/newroot/$DEV; done
chroot /mnt/newroot update-initramfs -u
# Note reverse order.
for DEV in proc sys dev/pts dev; do umount /mnt/newroot/$DEV; done
整頓(特に、ライブUSBの作成時に永続性を選択しなかった場合は、100%は必要ありません)。
umount /mnt/oldroot && rmdir /mnt/oldroot
umount /mnt/newroot && rmdir /mnt/newroot
LUKSコンテナを閉じて整理することもできますが、インストーラウィンドウを最小化する必要がある場合は、「デバイスまたはリソースがビジーです」というエラーメッセージが表示されます。心配しないでください、それはとにかくシャットダウンで閉じられます。
cryptsetup luksClose sda5_crypt
ファイル/ etc/default/grubを編集して、暗号化された/ bootを有効にします:
GRUB_ENABLE_CRYPTODISK=y
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda5:sda5_crypt"
次に、grubを更新します。主に、新しくインストールしたUbuntuをメニューに追加するだけでなく、変更した設定も追加します。
update-grub
GrubメニューからセカンダリUbuntuを選択すると、LUKSコンテナを開くためのパスワードが求められます。そして、同じパスワードを再度求められます。ログインしたら、パスワードを2回入力する必要があるという問題を修正する必要があります。キーファイルをLUKSコンテナに追加することでそれを行います。
最初に、LUKSコンテナにすでにあるキーの数を知りたいです。 LUKSコンテナには最大8個のキー(0〜7の番号)を含めることができるため、本当に必要なキーのみを作成します。
cryptsetup luksDump /dev/sda5
次に、新しいキーファイルを作成します。
dd bs=512 count=4 if=/dev/urandom of=/crypto_keyfile.bin
chmod a=,u+r /crypto_keyfile.bin
次に、新しいキーをコンテナに追加します。このコマンドは、既存のパスワードと同様に、既知のパスワードを入力します。
cryptsetup luksAddKey /dev/sda5 /crypto_keyfile.bin
まだキーをinitrd.imgにロードするためにupdate-initramfsを実行するスクリプトが必要です。ファイルを/ etc/initramfs-tools/hooks /に配置し、その保護を設定します。
chmod +x /etc/initramfs-tools/hooks/crypto_keyfile
スクリプトには、1行だけが必要です。
cp /crypto_keyfile.bin "${DESTDIR}"
また、キーへの参照を/ etc/crypttabに追加する必要があります。変更前は、次のようになっています。
sda5_crypt UUID=sda5-uuid-here none luks,discard
変更後、次のようになります。
sda5_crypt UUID=sda5-uuid-here /crypto_keyfile.bin luks,discard,keyscript=/bin/cat
これで、いよいよinitramfsを更新する準備ができました。
update-initramfs -u
今回は、grubメニューからセカンダリUbuntuを選択するときに、LUKSパスワードを1回だけ入力する必要があります。
バックアップのために、キーファイルを古いルートボリュームにコピーします。
mkdir /mnt/oldroot
mount /dev/mapper/ububtu--vg-root /mnt/oldroot
cp /crypto_file /mnt/oldroot/
バックアップ用にgrub設定もコピーします(古いルートボリュームから新しいルートボリュームに)。 grubメニューは両方のインストールで共有されるため、その設定は両方で同じであり、どちらのインストールでもメニューをインストールできます。そのため、今のところメインのUbuntuをメニューの一番上に保持したい場合でも、後で設定のバックアップコピーが必要になる場合があります。
cp /mnt/oldroot/etc/default/grub /etc/default/
umount /mnt/oldroot
rmdir /mnt/oldroot
また、論理ボリューム(主にルートボリューム)のマウントオプションを変更して、2つのインストールがGUIで互いのプライベート部分を公開しないようにすることもできます。/etc/fstabのパターンを説明できますが、幸いなことに、Disksを使用すると、必要のない適切なジョブが作成されます。
最後に、セカンダリUbuntuの通常の展開を開始し、両方のインストールで新しいデータボリュームを展開することもできます。
暗号化されていないプライマリパーティションを分割して新しい/ boot用のスペースを確保することを選択した場合、提示した手順の一部を削除できます。
注:質問に答えましたが、おそらく最後の段落が必要です。
Dmcryptの代替CDからインストールする必要があります。インストーラーで手動パーティション設定を選択します。 2つの個別の暗号化ボリュームが必要な場合は、プライマリまたは拡張またはEFIパーティションの両方にし、最初のOSをインストールするときに他のボリューム用に十分なスペースを残します。暗号化されたボリュームを共有する2つのLinuxディストリビューションが必要な場合(ただし、以下で説明するようにおそらくそれは望ましくありません)、1つの大きな暗号化ボリュームを作成し、そのOSをインストールするときに各OSのファイルシステムを作成します。
暗号化されたボリュームをLVM物理ボリュームにし、その物理ボリュームだけにまたがるボリュームグループを作成します。 2つのオペレーティングシステムが暗号化されたボリュームを共有する場合、それらはボリュームグループも共有します。ボリュームグループは複数のボリュームを管理する方法であり、その構成には1つだけがあります。各ルートファイルシステムに少なくとも1つの論理ボリュームを作成します。 2つのOSが暗号化されたボリュームを共有し、休止状態を使用したくない場合は、スワップ領域を共有できます。
十分な大きさのブート領域を残します。これは暗号化しないでください。ディスク容量に大きな制約がない限り、少なくとも1GB(緊急時にレスキューCDを保存できます)をお勧めしますが、1つのカーネルと1つの代替カーネルに200MBで十分です。
2つの個別のブートパーティションをインストールするのが最も簡単な方法です。 1つのディストリビューションでブートセクターを制御し、セカンダリディストリビューションのブートローダーをブートパーティションの最初のセクターにインストールします。プライマリブートローダーからセカンダリディストリビューションのブートローダーをチェーンロードします。
単一のブートパーティションが必要な場合は、1つのオペレーティングシステムにのみGrubをインストールし、2つのオペレーティングシステム間で/boot
を共有します。
デュアルブートは使用するのが苦痛で、ほとんどの状況では必要ありません。 2つのオペレーティングシステムを実行する場合は、何らかの形式の仮想化を使用します。デュアルブートの唯一のユースケースは、同じ高価なハードウェアで複数のオペレーティングシステムをテストする必要がある場合です(それでも、余裕があれば、OSごとに別々のマシンを用意する方が便利です)。
異なるパスワードを使用した2つの個別のLinuxインストールが必要な場合は、デュアルブートが必要です。その場合でも、個別のアカウントを発行するか、それぞれが独自のルートユーザーを持つ個別の仮想化コンテナを作成することにより、目的のセキュリティポリシーを実装できる場合があります。
LinuxでLinuxを実行するには、仮想化さえ必要ないかもしれません: chroot で別のインストールからプログラムを実行できます。 Ubuntuまたは別のDebianベースのディストリビューションをマスターOSとして使用する場合、 schroot を使用すると非常に簡単になります。異なる二次ディストリビューションでschrootを使用する場合は、おそらく個別にインストールする必要があるため、別のボリュームにインストールする必要があります。セカンダリディストリビューションがDebianベースであり、ブートする必要がない場合は、 debootstrap を使用してサブディレクトリにインストールできます。 schroot guide を参照してください。
UbuntuとXubuntuの両方を試してみたい場合は、このすべての必要はありません。 XubuntuとUbuntuは、異なるデフォルトパッケージを持つ同じディストリビューションです。任意のバリアントからUbuntuをインストールし、 buntu-desktop と xubuntu-desktop パッケージの両方がインストールされていることを確認します。ログイン時に好みの環境を選択すると、Ubuntu/Unity別名UbuntuまたはUbuntu/XFCE別名Xubuntuを使用します。
私は最近、自分のコンピューターに既に持っていた暗号化されたUbuntuと一緒に別のUbuntuをインストールしました。ほとんどの場合、 LUKS暗号化ハードドライブへの複数のLinuxディストリビューションのインストール ブログエントリの指示に従いました。
ただし、既存のインストールをそのまま維持したかったのですが、既存のLUKSコンテナーのサイズ変更は私にとって非常に困難であり、ディスク全体を再パーティション化したくないため、代わりに内部のLVMボリュームを再編成しましたライブUSBを使用する既存のLUKSコンテナ。この決定により、LUKSコンテナー内に新しい/ bootフォルダーを配置しなければならなかったため、指示から少し逸脱しました。ただし、予想よりも簡単であることが判明しました。
そのため、ライブUSBにログインしたまま、インストーラーを起動し、手動パーティション設定を選択しました。 「/」を新しい論理ボリュームに指定し、インストーラーがLUKSコンテナー内に新しい/ bootを配置できるようにしました。 hibernateがLUKSで動作するかどうかはわかりませんが、スワップは新しい論理ボリュームを指すようにしました。 GRUBインストールの場合、インストールが確実に失敗するターゲットを選択しました。最後に、「テストの継続」を選択し、その直後にgrubをインストールせずに続行しました。
インストール前にリブートする前に、最初のUbuntuのルートボリュームから/ etc/crypttabを新しいルートボリュームにコピーし、chrootでupdate-initramfs -uを実行しました。 これは重要なステップです。
再起動後、最初のUbuntuにログインし、/ etc/default/grubを編集してGRUB_ENABLE_CRYPTODISK = yを追加し、GRUB_CMDLINE_LINUXを「cryptdevice =/dev/sda5:sda5_crypt」を含むように変更して、update-grubを実行し、再起動しました。
再起動後、新しいインストールを実行したら、起動時にLUKSパスワードを2回入力する必要がないようにキーファイルを追加しました(/ bootが暗号化されているため)。キーファイルを追加するには、いくつかのソースからのほぼ同一の指示に従いました。 Pavel Koganの「Linux Mint encryption」 ブログエントリは元のソースでなければなりません。
途中でいくつかのばかげた障害を乗り越える必要がありましたが(たとえば、「GRUB_ENABLE_CRYPTODISKの値:util/grub-install.cは '1'ですが、util/config.cには 'y' "が必要です)。