GNU/Linux >> Linux の 問題 >  >> Linux

ディストリビューション間で /boot パーティションを共有する

できますが、良いアイデアではありません。

GRUB では、別のカーネルと initrd を指定します。 システムにインストールされている各ディストリビューションのファイル

ただし、各ディストリビューションがブート構成を設定し、/boot でファイルに名前を付ける方法によっては、1 つのディストリビューションのブート構成が他のディストリビューションの構成と競合する場合があります。 .これにより、構成がめちゃくちゃになり、1 つ以上のディストリビューションが起動できなくなる可能性があります。いずれかのディストリビューションでカーネルを更新したり、ブート設定を変更したりする場合は、特別な注意が必要です。ただし、競合がなければ、両方のオペレーティング システムを問題なく起動できるはずです。


これはパーティーに少し遅れていることを認識していますが、3 つの同時インストールと 1 つの /boot を維持するためにこれを採用しました パーティション:

  • アーチ Linux
  • ubuntu 14.04
  • ubuntu 16.04

私は何年もアーチを使用してきましたが、ubuntu にはまったく慣れておらず、ブートローダーのインストールを停止する方法がわからなかったので、そのままにしておきました。 arch には syslinux を使用しています 、 grub ではありません だから私はそれにもっと精通しています。これはある程度ですが 私の実験の早い段階で、私の手順は次のとおりです:

  • 競合する可能性のあるファイルを特定します。 ubuntu と arch の命名規則に注目した後、これは 14.04 と 16.04 の vmlinuz に行き着きました。 と ininrd.img 、同じ名前が付けられています(異なる時期に更新される場合、バージョン番号は別として)。互換性があることはわかっていますが、互換性がないものとして扱うことにしました。
  • セットアップ syslinux いつものように、各ディストリビューションのエントリを作成します (以下を参照)
  • 競合する可能性のあるいずれかのディストリビューションの更新時に、問題を回避するために命名戦略を実装する
  • バックアップ計画を立てる

いずれかの ubuntu がカーネルを更新すると、次の 2 つの重要なファイルが取得されます:

  • /boot/initrd.img-x.x.x-xx-generic
  • /boot/vmlinuz-x.x.x-xx-generic

上記のそれぞれについて、単純に _distro を追加します syslinux.cfg を変更しないように、静的に名前が付けられたバリアントを置き換えます 各更新 (以下に詳細を示します)。プロセスは次のようになります。例として 14.04/Trusty を使用し、関心のあるファイルのみを表示します。

$ cd /boot
$ sudo mv ./initrd.img-4.4.0-62-generic ./initrd.img-4.4.0-62-generic_trusty
$ sudo cp ./initrd.img-4.4.0-62-generic_trusty ./initrd-trusty.img
$ sudo mv ./vmlinuz-4.4.0-62-generic ./vmlinuz-4.4.0-62-generic_trusty
$ sudo cp ./vmlinuz-4.4.0-62-generic_trusty vmlinuz-trusty

arch の命名規則は決して競合しないため、これは 2 つのバックアップ/正確な名前の initrd になることを意味します と vmlinuz ファイルと、syslinux.cfg を変更しないようにするために使用できる 2 つのファイル いつも。キー ファイルは次のようになります (コメントが追加されています):

$ ls /boot/

initramfs-linux.img                 ## arch main initramfs
initramfs-linux-fallback.img        ## arch fallback initramfs
initrd.img-4.4.0-62-generic_trusty  ## named recent 14.04 initrd
initrd.img-4.4.0-62-generic_xenial  ## same for xenial (16.04)
initrd-trusty.img                   ## statically named initrd
initrd-xenial.img
vmlinuz-4.4.0-62-generic_trusty     ## named vmlinuz
vmlinuz-4.4.0-62-generic_xenial
vmlinuz-linux                       ## arch's vmlinuz
vmlinuz-trusty                      ## statically named vmlinuz
vmlinuz-xenial

起動用に、これが私の syslinux です エントリ:

LABEL arch
  MENU LABEL arch
  LINUX ../vmlinuz-linux
  APPEND luks-options-here rootflags=compress=lzo,discard,ssd,subvol=arch rw
  INITRD ../intel-ucode.img,../initramfs-linux.img

LABEL xenial
  MENU LABEL xenial
  LINUX ../vmlinuz-xenial
  APPEND luks-options-here ro rootflags=compress=lzo,discard,ssd,subvol=xenial quiet splash $vt_handoff
  INITRD ../initrd-xenial.img

LABEL trusty
  MENU LABEL trusty
  LINUX ../vmlinuz-trusty
  APPEND luks-options-here ro rootflags=compress=lzo,discard,ssd,subvol=trusty quiet $vt_handoff
  INITRD ../initrd-trusty.img

ここまで grub を残しました ubuntus で、更新のたびに文句を言いますが、何も問題はありません。私のバックアップ計画は mbr.bin をコピーすることでした /boot/ へ (通常は /usr/lib/syslinux... にあります) grub の場合 少なくとも dd できるブートローダーを上書きすることにしました syslinux ブートローダーが戻ってきました。 Arch のインストールが失敗しない (少なくとも起動する) ことは 95% 以上あると確信しています。おそらく各 initrd/vmlinuz の以前のバージョンを 1 つ保持します。 initramfs で問題が発生した場合に備えて、起動時にロードするものを変更できるようにします。

うまくいけば、何が起こっているのかが比較的明確になります。リンクや更新後のスクリプトなどを使用して自動化することもできますが、まだ実現していません。

受け入れられた答えは、物事がうまくいかない可能性があることを明らかにしていますが、他の人がこれを行っている例をグーグルで検索し、このような答えしか見つけられなかったので(基本的に「可能ですが、しないでください」)、具体的な例を追加すると思いましたどのようにできる このようなものを設定してください。

個人的には、かなり興奮しています。私は 1 つのブート パーティションを持っています。お気づきかもしれませんが、1 つの btrfs に 3 つのディストリビューションが並んでいます。 パーティション。サイズを事前に割り当てる必要はなく、1 つのセットアップを気に入らずに吹き飛ばしてしまう (未使用のパーティションが浮かんでいる) 心配もありません。>持っている ブートローダー!

これが誰かの役に立てば幸いです。


Linux
  1. Bash =〜正規表現とHttps://regex101.com/?

  2. / bootパーティションは本当に?

  3. Debian – / var、/ homeを別のパーティションに移動しますか?

  1. /dev/shm/ と /tmp/ はいつ使用する必要がありますか?

  2. ブート パーティションのサイズ変更

  3. Linux で 100MB の ext2 ブート パーティションが推奨されるのはなぜですか?

  1. /boot パーティションは常に必要ですか?

  2. /boot 用に別のパーティションを作成してもよろしいですか?

  3. なぜ /home 以外のものを別のパーティションに入れるのですか?