web-dev-qa-db-ja.com

暗号化されたディスクへの他のLinuxのインストール

最近、ラップトップのHDDの代わりにSSDを入手し、「フルディスク」暗号化を変更して使用することにしました。

/boot用の暗号化されていない小さなパーティションと暗号化された大きなLUKSパーティションを作成し、LVMを使用してボリュームグループに5つの論理ボリュームを作成しました。

  • Fedoraをインストールするための1つ(lv_Fedora)。
  • 1つはスワップ用です(lv_swap)。
  • 別のLinuxOS用に1つ(lv_os2)。
  • そしてデータ用に2つ(lv_data1lv_data2)。

Fedoraを最初のOSとしてlv_Fedoraに問題なくインストールし、GRUBのメニューから起動できましたが、暗号化された別のLinuxベースのOS(Linux Mint 17)をインストールする方法がわかりません。ディスクを作成し、FedoraのGRUB2にそれを検出させ、このOSも起動します。

私は2つの異なるアプローチを試しました。どちらの場合も、Linux Mintインストーラーであるubiquity--no-bootloaderオプションで起動して、Mintがブートローダーをインストールしないようにしました。どちらの場合も、インストールを開始するために、LinuxMint LiveイメージのファイルマネージャーからLUKSパーティションのロックを解除して、対応するlv_os2ロジックボリュームをインストールターゲットとして選択できるようにしました。今:

  • 最初に、/lv_os2に割り当てられた単一のパーティションにLinuxMintをインストールしようとしました。インストールは成功しました。 Fedoraから、grub2-mkconfig -o /boot/grub/grub.cfgを実行してGRUBエントリを更新しました(これは、暗号化されていないディスクを使用しているときにずっとやってきたことです)。 GRUBはLinuxMintが存在することを検出し、対応するエントリをブートメニューに追加しました。問題は、後でそれらのエントリから起動できなかったことです。
  • それから、おそらく[1]は、LinuxMintのパーティションのbootフォルダーでカーネルイメージが暗号化されているためだと思いました。たぶん、GRUB 2では、Fedoraを最初にインストールしたときと同じように、これらのファイルを暗号化されていないパーティションに配置する必要がありました(推奨されるセットアップであるという理由だけで、/boot暗号化されていないパーティションを使用しました)。そこで今回は、Fedoraの/bootパーティションをバックアップして(念のため)Linux Mintを再インストールしましたが、暗号化されていないパーティションも/bootとして使用するようにして、カーネルイメージをそのディレクトリにコピーして、多分、インストール後に起動します。インストールは成功し、LinuxMintによって/bootに追加された「追加」ファイルはFedoraファイルを上書きしなかったため、少なくともFedoraは機能しており、/bootbakcupを使用する必要はありませんでした。 。次に、Fedoraを起動し、grub2-mkconfig -o /boot/grub/grub.cfgを再度実行しました。今回はさらにひどいものでした。 GRUBエントリを混同して、たとえば、Linux MintのカーネルイメージをロードするFedora(lv_Fedoraをターゲットとする)のエントリを作成します。これらのエントリを手動で変更しようとしましたが、失敗しました。

私は何か間違ったことをしているに違いない。すでに暗号化されたボリュームにセカンダリLinuxOSをインストールし、プライマリLinux OSにブートローダーを処理させるより良い方法はありますか? (そのGRUBエントリを更新して、セカンダリOSからも起動できるようにします)

[1]:ご覧のとおり、私はただ努力して学んでいますが、このテーマについて深く理解していません。

7
Peque

それはあなたの質問に「どのように」答えるわけではありませんが、少し洞察を与えるはずです-そしてコメントするには長すぎます。

まず第一に、暗号化されたパーティションを起動することはできません。ブートチェーンが暗号化を理解するのは、プロセスのかなり遅い段階にすぎないからです。

  1. ハードウェアはファームウェアをロードします-通常はUEFIのBIOS(x86プラットフォーム上)。ハードウェア自体は完全にデータに依存しません。永続ストレージ(事前定義されたアドレス)にあるものをすべてロードするだけです。

  2. ファームウェアは、ブートローダーまたは直接カーネルをロードします。 CPUと同様に、可能な暗号化モードについては何も考えていません(できなかったわけではありませんが、通常はできません)。

  3. ブートローダーが関係している場合は、カーネル(またはWindowsの起動時などのチェーンブートローダー)と、多くの場合、初期ramdisk(スタンドアロンファイルまたはカーネルイメージに埋め込まれている)をロードします。ここでは、たとえばGRUB2はLUKSデバイスから起動できるはずなので、さらに興味深いものになりますが、ドキュメントは かなり不足している のようです。

  4. カーネルはルートファイルシステムをマウントし、initを実行します(System V init、systemdOpenRCupstart...の選択肢は豊富です)。

  5. 最初のramdiskで起動する場合、最初にメモリに展開され、次にマウントされ、そこからinitシステムが実行されます。 initramfs shuoldには、適切なルートファイルシステムをマウントするために必要なすべてのものが含まれています-通常、使用可能なすべてのドライバー(たとえば、最終的なrootfsがRAIDデバイス上にあるときに必要なRAIDドライバー)、グラフィカルブートインフラストラクチャが含まれています-これは、多くの場合、最小限(またはそれほど最小限ではない)X11スタック-そして多くの場合、暗号化されたパーティションをマウントするためのツール。結局、セットアップされ、initramfsから実行されるinitシステムをマウントした最後のrootfsはpivot_root()を実行します( pivot_root(8) および pivot_root(2) 詳細についてはmanページ)、したがって/を適切なファイルシステムに切り替えます。

現在、暗号化されたボリュームを起動する最も簡単な方法は、通常、手順5で暗号化のセットアップを行うことです。これは主に、実行するカーネルによって行われ、最近の適切なディストリビューションによって提供されるインフラストラクチャを使用できるためです。

したがって、暗号化されたボリュームからFedoraとMintがどのように正確に起動するかを調べたいと思うかもしれません。問題の解決策は、たとえば、Mintカーネル用の適切なinitramfsイメージを作成することです。起動したカーネルに応じて適切なrootfsが条件付きでマウントされていることを確認すれば、両方のカーネルに1つのinitramfsを使用できる場合もありますが、特に別のカーネルを使用することにした場合はお勧めしません(例:ストック)各ディストリビューションのカーネル。

つまり、実際に2つのインストールを並べて実行するかどうかも検討する必要があるかもしれません。1つを仮想化して実行する方が便利な場合があります。

1
peterph

私が読んだすべてのことから、initramfsが「カーネルに埋め込まれ、ブートプロセスの初期段階でロードされた」ことに帰着するようです。 1

Mintの場合、/etc/crypttabを構成してから、update-initramfsを使用する必要があります。 2

私の理解では、これは、すでにインストールされているように見えるMintをインストールした後にinitramfsイメージを作成するためのガイドとして役立つはずです。うまくいけば、これですべてがカバーされますが、必ず各部分を自分で調べてください。

MintをインストールしたパーティションへのライブブートMintmount、およびchroot . ==

作成して構成/etc/crypttabを起動時にロック解除します。 4 ここで、Mintがインストールされているlvmへのパスを追加します。あなたの質問に基づいて、これは/dev/mapper/lv_os2または/dev/<big encrypted LUKS>/lv_os25 に配置する必要があります

私が見た/etc/crypttabのほとんどの例は、次のようになります。
root /dev/mapper/lv_os2 none luks。 4つのフィールドはそれぞれ、選択したもの、Mintをインストールしたlvmへのパス、noneシステムの起動時に手動で入力するパスワードの設定、およびluksはLUKSモードを強制しますが、必要ないようです。

オプションフィールドにモードが指定されておらず、ブロックデバイスにLUKS署名が含まれている場合、LUKSデバイスとして開かれます。それ以外の場合は、生のdm-crypt(プレーンモード)形式であると見なされます。

Configure/etc/fstabは、/dev/mapper/<name>で作成した/etc/crypttabをルートディレクトリ/としてマウントします。何かのようなもの:
/dev/mapper/<name> / <fs_vfstype> <fs_mntops>
man fstabを参照してください。

/etc/crypttab/etc/fstabを好みに合わせて構成したら、update-initramfsを使用してブートイメージをビルド/更新できます。

man update-initramfsを参照してください。 Mintのuname -rによって表示される特定のカーネルバージョンを使用するのが最善の場合があります。コマンドは、カーネルバージョンを独自のものに置き換えることを除いて、update-initramfs -u -k 3.11.0-26-genericのようになります。

この時点で、Fedoraを再度起動して、以前にMintを検出したgrub2-mkconfig -o /boot/grub/grub.cfgオプションを試すことができる場合があります。それが機能しない場合は、GRUB manual . 6 のマルチブート手動設定に従ってください。

特に、この部分:

すべてのOSでGRUBツールをインストールしますが、ブートセクタへのインストールGRUBを無効にするため、menu.lstとgrub.cfgを使用できるようになります。また無効にします設定によるos-proberの使用:

GRUB_DISABLE_OS_PROBER=true

/etc/default/grub

うまくいけば、これはミントを起動させるために必要なものの大部分をカバーしています。

1
iyrin