回答:
GRUBがカーネルの起動を引き継ぐと、カーネルは何を開始した/boot
か分からなくなり、GRUBが使用したカーネルとは異なる場合があります。boot/grub/grub.cfg
各パーティションのアクセス時間をチェックして、最近アクセスされたパーティションを確認できます。これにより、GRUBが使用したパーティションの構成ファイルがわかります。
stat -c %x /boot/grub/grub.cfg
アクセス時間が更新されない場合は、さまざまなGRUB構成ファイルで使用されるカーネルパラメーターの違いを探す必要があります。あなたがそれらを変更することができた場合は、例えば、追加foo=1
、foo=2
になど、GRUB_CMDLINE_LINUX
これらのランのそれぞれでsudo update-grub2
、リブート、あなたは確認することができます/proc/cmdline
使用されたこれらの値のかを確認します。
/boot
配置されているが、それは使用GRUB何ではないかもしれない、とあなたとKatuは、パーティションがマウント見つけている/
Ravexinaが述べたように、おそらく持っていること、ですがマウントされますが、さらに少ない接続
/
ます。ブート中に使用されたパーティションのGRUB構成を見つけますか?私はそれがどのように関係しているかわかりません。
知っているように、探しているファイルは/boot
実行中のシステムのディレクトリにあります。/boot
別のパーティションであるか、そうでないかのどちらかです。あなた/boot
が別のパーティションである場合、それを探す必要があります:
$ lsblk -r | grep '/boot'
sda2 8:1 0 400M 0 part /boot
grub.cfg
使用されているがにあることを意味しsda2
ます。
さもなければあなたは探すべきですroot
:
$ lsblk -r | grep '/$'
sda1 8:1 0 121.2G 0 part /
今回はにありsda1
ます。
または、楽しみのために、ブート時のパラメーターを確認できます。
$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-686-pae root=UUID=938495-1fe2-3302 ro quiet
次に、UUID
どのパーティションがルートであるかを見つけます。
$ sudo blkid | grep 938495-1fe2-3302
/dev/sda1: UUID="938495-1fe2-3302"
からという意味ですsda1
。
これらのブートパラメータをチェックして、どのgrub.cfg
ファイルに含まれているかを確認することもできます。これは、ブートパラメータgrub.cfg
が互いに異なる場合にのみ機能します。
readlink -f /dev/disk/by-uuid/<UUID>
。
現在マウントされているルートファイルシステムを保持しているデバイスを表示するには:
awk '$2=="/"{print $1}' /proc/mounts
現在実行中のUbuntuリリースバージョンを表示するには:
lsb_release -rs
lsb_release -rs
常に使用するバージョン番号が同じであるとは思わない。キッス
各OSに簡単なカスタムメニューエントリを追加することができ、OS Grubが構成ファイルをロードしたGrubメニューに表示されます。
例:
16.04を起動し、ファイル/etc/grub.d/40_custom
を編集してメニューエントリを追加します。
#!/ bin / sh exec tail -n +3 $ 0 #このファイルは、カスタムメニューエントリを追加する簡単な方法を提供します。単に入力する #このコメントの後に追加するメニューエントリ。変更しないように注意してください #上記の「exec tail」行。 # menuentry 'grub.confが16.04からロードされました' { リブート }
ファイルが実行可能であることを確認して実行しますsudo update-grub
。
その後、我々は我々が変更IG、他のOSの中に同じ変更は、私たちは、menuentryに別の名前を使用して行う16.04
の15.04
とそうで。
ブート中にGrubメニューでこのメニュー項目を選択すると、マシンはリブートするだけで、OSをブートするのではなく、実際にロードに使用されるOSを確認するために作成しましたgrub.conf
。
追加情報
この種の混乱は、すべてGrubを使用する複数のOSをインストールするときに発生し、OSのインストール時に同じブートローダーの場所を選択します。実際、GrubをインストールするOSは1つだけで、GrubはどのLinuxディストリビューションでも起動できるので、1つのディストリビューション(Grubを含む)がインストールされている場合、Grubをインストールせずに追加のOSをインストールできます。
レガシーインストールでは、パーティションブートレコードを場所として選択できるため、ブートローダーインストールの場所を処理するのは非常に簡単ですが、正しいパーティションを選択するように注意する必要があります。そのため、1つのOSがブートローダーをMBRにインストールし、追加のOSがブートローダーをOSパーティションのPBRにインストールします。この可能性は、Something else
インストール時に-option を使用した場合にのみ発生します。
UEFIインストールでは、少し奇妙です。ブートローダーはEFIシステムパーティション(ESP)のフォルダーにインストールされ、複数のブートローダーを簡単に共存させることができます。ここでの問題は、すべてのUbuntuフレーバーと他のlinuxディストリビューションがESPの同じフォルダーにGrubをインストールすることであり、選択の余地がないことです。したがって、追加のLinuxディストリビューションをインストールすると、既存のブートローダーが上書きされます。これを回避する唯一の方法は、ライブセッションで起動し、でインストーラを起動することsudo ubiquity -b
です。
別の簡単な解決策
パーティションsda1
に3つのLinuxディストリビューションがインストールされているsda2
としsda3
ます。次に、Grubのブートメニューエントリを見てみましょう。起動中に、次のようなものが表示されます。
1 Ubuntu 2 Ubuntuの詳細オプション 3メモリテスト(memtest86 +) 4メモリテスト(memtest86 +、シリアルコンソール115200) 5 Ubuntu(/ dev / sda2) 6 Ubuntuの詳細オプション(/ dev / sda2上) 7 Ubuntu 17.04(/ dev / sda3上) 8 Ubuntuの詳細オプション(/ dev / sda3上)
最初の2つのエントリは、grub.conf
実際に使用する-fileを生成したOSのエントリです。エントリ#3と#4は現時点では興味深いものではありません。エントリ#5、#6、#7、および#8はOSプローブで生成されたエントリであり、これらのエントリのOSがどのパーティションに存在するかがわかります。だから、この小さな例の場合には、我々は、と結論付けることができgrub.config
-file私たちは、実際に使用が上のOSに属していないsda2
か、sda3
しかし上のOSにsda1
。1つ以上のOSが個別の/boot
-partitionでインストールされている場合、どの/boot
-partitionがどのOSに属しているかを確認する必要がありますがfindmnt
、各OSで-commandを実行することで簡単に行えます。
lsblk
そして、どのディスクがにマウントされているかを確認し/
ます。以下のコメントを読んでください。または/boot
、マウントポイントにいる場合はRavexinaの答えを読んでください。
不明な場合は、UUIDを確認してください
lsblk -o UUID,NAME,SIZE,MOUNTPOINT
/boot
が別のパーティションである場合はどうですか?その後/boot/grub/grub.cfg
、/
パーティションに配置されていません。
/boot
最初に別のものをチェックする方が良いと思う。
ユーザーがどのパーティションからブートしたかを知るには、インストールされたシステムをブートする前にブートローダーメニューを見てください。ブートローダーメニューを表示せずに伝えることは困難です。
見どころ
次の組み合わせたスクリーンショットでは、ユーザーがどのパーティションから起動したかを知ることができる3つのヒントにラベルを付けています。
ラベル(1):最初のエントリの下のGNU GRUBメニューエントリ
ラベル(2):ブートローダーメニューの上部にあるGNU GRUBバージョン
ラベル(3):GNU GRUB背景画像(手動セットアップが必要)
最も明らかなヒントはラベル(3)です。これは、ブートローダーメニューを制御するシステムのGNU GRUB背景画像を変更することです。ユーザーが事前に設定しておけば、最もわかりやすいです。
ラベル(1)の説明
最初のエントリの下のメニューエントリにリストされていないパーティションを探します。スクリーンショットでは、「Ubuntu」と「Ubuntu 14.04.5 LTS」の2つのオペレーティングシステムのみがインストールされています。
Ubuntu
Advanced options for Ubuntu
Memory test (memtest86+)
Memory test (memtest86+, serial console 115200)
Ubuntu 14.04.5 LTS (14.04) (on /dev/sda3)
Advanced options for Ubuntu 14.04.5 LTS (14.04) (on /dev/sda3)
後者は言及しました(on /dev/sda3)
、それは前者が/dev/sda2
またはにあるかもしれないことを意味し/dev/sda1
ます。確かに、「Ubuntu」などのシステムを起動した後、関連するコマンドを実行して利用可能なパーティションをリストダウンします(lsblk
最も簡単なようです)。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 13G 0 disk
├─sda1 8:1 0 976M 0 part [SWAP]
├─sda2 8:2 0 6G 0 part /
└─sda3 8:3 0 6G 0 part
sr0 11:0 1 55.7M 0 rom
の出力と比較しlsblk
て初めて、システム、つまり「Ubuntu」がブートローダーメニューの管理元/dev/sda2
(メニューエントリにリストされていない)にあることがわかります。
ラベル(2)の説明
ブートローダーメニューの上部に印刷されているGRUBバージョンを探します。そのバージョンに注意し、ブートされたシステムにあるGRUBバージョン、つまり「Ubuntu」と比較してください。
スクリーンショット(下半分): GNU GRUB version 2.02~beta2-9
「Ubuntu」などのシステムを起動した後、関連するコマンドを実行してGRUBパッケージのバージョンを確認します(grub-install --version
関連性が高く、最も簡単です)。
$ grub-install --version
grub-install (GRUB) 2.02~beta2-9
これはどのように関連していますか?ためgrub-install
とupdate-grub
コマンドは両方とも同じパッケージで提供されていますgrub2-common
。ブートローダーメニューが同じパッケージのツールを使用して作成および更新される場合、ブートローダーメニューの上部の印刷バージョンは同じになります。
ラベル(3)の説明
ブートローダーメニューのデフォルトの背景画像はなし(単なる黒)であるため、このヒントは手動で設定する必要があります。背景画像は8ビット深度でなければなりません。
desktop-base
パッケージがシステムにインストールされている場合、GRUB用に特別に作成されたこのような背景画像*grub.png
は、ターゲットディレクトリにファイル名サフィックスが付いた状態ですぐに見つかります。
$ ls /usr/share/images/desktop-base/*grub.png
/usr/share/images/desktop-base/desktop-grub.png
/usr/share/images/desktop-base/joy-grub.png
/usr/share/images/desktop-base/moreblue-orbit-grub.png
/usr/share/images/desktop-base/spacefun-grub.png
背景画像を設定するには:
/etc/default/grub
スーパーユーザーとしてファイルを開きGRUB_BACKGROUND=
、選択した画像と引用符で囲まれた画像へのフルパスを含む行を追加します。
$ sudo nano /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
# Show background in GRUB boot menu
GRUB_BACKGROUND="/usr/share/images/desktop-base/spacefun-grub.png"
...
次に、ブートローダーメニューを含むsudo update-grub
アップデート/boot/grub/grub.cfg
を実行します。ユーザーには次のような出力が表示されます。
$ sudo update-grub
Generating grub configuration file ...
Found background: /usr/share/images/desktop-base/spacefun-grub.png
Found background image: /usr/share/images/desktop-base/spacefun-grub.png
Found linux image: /boot/vmlinuz-3.13.0-24-generic
Found initrd image: /boot/initrd.img-3.13.0-24-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found Ubuntu 14.04.5 LTS (14.04) on /dev/sda3
done
マシンを再起動して、ブートローダーメニューに、システムからの更新コマンドによって行われた目に見える変更があったかどうかを確認します。
それ以外の場合は、他のシステムに対して1つずつ手順を繰り返します。ユーザーがどのシステムがブートローダーメニューを制御できるかを知っていれば、繰り返される手順は不要でした(これもインストールの方法によって異なります)。
免責事項
この回答は、GNU GRUB PC / BIOSバージョンを使用したマルチブートセットアップを備えたBIOSシステムの実証済みで十分にテストされた基準について説明しています。次の例外が適用されます。
GNU GRUB EFIバージョンを使用して、UEFIシステムの対応のために、それがされていない保証やない基準は上述したものと同じであるように思われる場合知ら。
重点はに与えられルックスブートローダーメニューの(それはスクリーンショットの異なるすなわちトップの半分を表示されることがありますどのように)のではなくどのようにchainloading作品を実証します。そのため、「スクリーンショットで見られるようにマルチブートがどのようにセットアップされたか」に関しては、この回答では説明されません。
マルチブートセットアップが、Ubuntu 14.04、Kubuntu 14.04、Xubuntu 14.04など、類似のオペレーティングシステムのまったく同じコピーで作成されている場合、ユーザーがどのパーティションからブートしたかを知る唯一の信頼できる方法は、ラベル(3)です。
ラベル(3)は、「このブートメニューは/ dev / sda1から管理されます」など、ブート元の明示的な書き込みを行うカスタム背景画像を使用すると、より適切に機能する場合があります。同様に、「GRUBのカスタム背景画像を作成する方法」については、この回答では説明しません。
TL; DRインストールされたシステムを起動する前に、ブートローダーメニューを確認します。最も簡単で信頼性の高い方法は、ラベル(3)です。これは、GRUB背景画像を手動でセットアップすることです。
/boot/grub/grub.cfg
ブートに使用されたファイルは削除され、そのパーティションはパーティションテーブルから削除され、そのディスクはシステムから物理的に削除された可能性があります。