web-dev-qa-db-ja.com

Arch Linuxのインストールをgrub2に検出させるにはどうすればよいですか?

珍しい設定をしています。 Ubuntuを1つインストールし、2番目に古いArch Linuxインストールの直接コピーからのバックアップをインストールしています。直接コピーとは、最初にパーティション全体の内容をtarで圧縮し、今ではそれらの内容を別のパーティションに抽出したことを意味します。そう:

1-Ubuntu、GRUB2あり

2-バックアップからArch

Ubuntuが実行され、正常に起動します。 Archをパーティションに抽出した後、新しいパーティションを反映するようにfstabを変更しました。しかし、今私はArchを起動させようとしているのに行き詰まっています。 Ubuntuでupdate-grubを実行してみましたが、Archのインストールが反映されません。どうすればこれを機能させることができますか?

7
sever

Fedora 17をインストールした後も同様の問題がありました。Ubuntuはそれを拾いません。ネットで答えが見つからなかったので、それはgrubがFedoraのインストールを「見る」ことができなかったためだと思いました。そのため、UbuntuにFedora /パーティションをマウントしてupdate-grubを実行し、Fedoraのインストールを見つけて、それをブートメニューに追加しました。 Archlinuxでも同じテクニックを使用しています

9
Twoxmeles

Grub2でArchWiki article を試してみましたか?おそらく、grub-mkconfigを実行する前に、システムにos-proberというパッケージをインストールする必要があります。これにより、システムに適したgrub.cfgファイルが作成されます。

さらにサポートが必要な場合はお知らせください。

3
darnir

現在、Ubuntuインストールからgrubを使用しています。そこからArchを起動する場合は、パッケージがupdate-grubを実行するたびに新しいエントリが削除されないように、Ubuntuを構成するカスタムエントリを追加する必要があります。

新しいエントリは、ubuntuを起動するためにすでに持っているものと非常に似ているはずですが、Archのパーティションを参照し、Archのカーネルパラメータを使用します(おそらくgrub2でArchのwikiページを使用できます)。

詳細については、こちらをご覧ください: https://help.ubuntu.com/community/Grub2/CustomMenus

2
tripledes

私はこれをグーグルで見つけました-Debianをゼロから構築するための非常に最小限のシステムである Deboostrap からのDebianバスターインストールでこの問題が発生したためです。古いDebian Stretchを引き続き利用できるようにしたかったため、デュアルブートが必要でした。 Debootstrapでは何もプリインストールされていないので、@ sever(mount unknown root filesystem)、@ darnir(install os-prober)および@ tripledes/etc/grub.d/40_customでカスタム構成を使用)。ここに私がすべてを合わせる方法があります。

最初のインストールos-prober

~$ Sudo apt install os-prober

しかし、os-proberは、ルートファイルシステムがマウントされていないと、古いインストールを検出できません。そうする(私のは/ dev/sda1にあります):

~$ Sudo mkdir /mnt/oldroot
~$ Sudo mount /dev/sda1 /mnt/oldroot

ここでgrub-mkconfigを実行して、stdoutのgrubメニューエントリを取得し、それを一時ファイルにリダイレクトします。

~$ Sudo grub-mkconfig > /tmp/oldmenu.cfg

次に、このファイルを編集し、古いメニューのエントリを除くすべてを削除して、menuentry ... {...}submenu ... {...}を残しました。次に、それを/etc/grub.d/40_customに追加します。

~$ Sudo bash -c 'cat /tmp/oldmenu.cfg >> /etc/grub.d/40_custom'
~$ Sudo update-grup

掃除:

~$ Sudo umount /mnt/oldroot
~$ Sudo rmdir /mnt/oldroot
~$ rm /tmp/oldmenu.cfg

それでおしまい。これで、パッケージがupdate-grubを実行するたびに、古いインストールのエントリが失われることはなく、常に追加されます。

0
Ingo