Saya memiliki mesin yang memiliki partisi multi-boot. Saya memiliki Ubuntu 14,04 pada satu partisi, Ubuntu 15,04 pada partisi kedua dan Ubuntu 16,04 pada partisi ketiga. Apakah ada cara untuk mengetahui, dari baris perintah, dari partisi mana saya boot, untuk menemukan Anda di partisi /boot/grub/grub.cfg
mana yang digunakan untuk proses boot? Saya memiliki /boot/grub/grub.cfg
pada masing-masing tiga partisi.
12
/boot/grub/grub.cfg
file yang digunakan untuk boot bisa dihapus, partisi itu bisa dihapus dari tabel partisi, dan disk itu dihapus secara fisik dari sistem.Jawaban:
Setelah GRUB melepaskan boot ke kernel, kernel tidak tahu apa yang memulainya, dan
/boot
mungkin bukan yang digunakan GRUB. Anda dapat memeriksa waktu aksesboot/grub/grub.cfg
di setiap partisi untuk melihat yang mana yang terakhir diakses. Itu bisa memberi tahu Anda file konfigurasi partisi mana yang digunakan GRUB.Jika waktu akses tidak diperbarui, Anda harus mencari perbedaan dalam parameter kernel yang digunakan oleh berbagai file konfigurasi GRUB. Jika Anda dapat mengubahnya, misalnya, tambahkan
foo=1
,,foo=2
dll.GRUB_CMDLINE_LINUX
Di masing-masing, jalankansudo update-grub2
dan reboot, maka Anda dapat memeriksa/proc/cmdline
untuk melihat nilai-nilai mana yang digunakan.sumber
/boot
berada, tapi itu mungkin bukan grub yang digunakan, dan Anda dan Katu menemukan partisi yang dipasang di/
mount, tetapi, seperti yang dicatat Ravexina, yang mungkin memiliki bahkan kurang dari koneksi/
, tentu saja. Menemukan konfigurasi GRUB partisi mana yang digunakan saat boot? Saya tidak mengerti bagaimana hubungannya.Seperti yang Anda tahu file yang Anda cari terletak di
/boot
direktori sistem yang Anda jalankan. apakah/boot
itu partisi yang terpisah atau tidak; Jika/boot
partisi Anda terpisah, Anda harus mencarinya:Berarti
grub.cfg
yang telah digunakan terletak disda2
.Maka Anda harus mencari
root
:kali ini terletak di
sda1
.Atau bahkan untuk bersenang - senang kita dapat memeriksa parameter waktu boot:
lalu gunakan
UUID
untuk mencari tahu partisi mana yang merupakan root Anda.Berarti dari
sda1
.Anda juga dapat memeriksa parameter boot ini untuk melihat di mana
grub.cfg
file Anda berisi mereka, ini hanya berfungsi ketika parameter boot Andagrub.cfg
berbeda satu sama lain.sumber
readlink -f /dev/disk/by-uuid/<UUID>
.Untuk menampilkan perangkat yang memegang sistem file root yang terpasang:
Untuk menampilkan versi rilis Ubuntu yang sedang berjalan:
sumber
lsb_release -rs
setiap kali. KISSKita bisa menambahkan entri menu kustom sederhana di setiap OS dan kita akan melihat di menu-Grub dari mana OS Grub memuat file konfigurasi-nya.
Contoh:
Kami boot ke 16.04 dan mengedit file
/etc/grub.d/40_custom
untuk menambahkan menu-entri.Kami memastikan file dapat dieksekusi dan dijalankan
sudo update-grub
.Kemudian kita melakukan perubahan yang sama di OS lain, kita hanya menggunakan nama yang berbeda untuk menuentry, ig kita ubah
16.04
ke15.04
dan seterusnya.Jika kita memilih menu-entri ini di menu-Grub saat boot, mesin hanya akan reboot, kita membuatnya untuk tidak mem-boot OS apa pun tetapi untuk melihat OS mana yang sebenarnya digunakan untuk memuat
grub.conf
.Informasi tambahan
Jenis kebingungan ini muncul, ketika kita menginstal beberapa OS yang semuanya menggunakan Grub dan selama instalasi OS kita memilih lokasi boot-loader yang sama. Kita memang membutuhkan hanya satu OS yang menginstal Grub, Grub dapat mem-boot ke distribusi Linux apa pun, jadi jika kita memiliki satu distribusi yang diinstal (termasuk Grub), kita dapat menginstal OS tambahan tanpa menginstal Grub.
Dalam legacy-installs, cukup mudah untuk menangani lokasi untuk instalasi boot-loader, karena kita dapat memilih partisi-boot-record sebagai lokasi, tetapi kita harus berhati-hati untuk memilih partisi yang benar. Jadi satu OS menginstal boot-loader ke MBR dan tambahan OS menginstal boot-loader ke PBR dari partisi-OS. Kemungkinan ini hanya kita miliki ketika kita menggunakan
Something else
opsi-saat instalasi.Di UEFI-installnya sedikit lebih aneh, boot-loader akan diinstal ke folder di Partisi Sistem EFI (ESP) dan beberapa boot-loader dapat dengan mudah hidup berdampingan. Masalahnya di sini adalah bahwa semua rasa Ubuntu dan juga beberapa distribusi linux lainnya akan menginstal Grub ke folder yang sama di ESP dan kami tidak punya pilihan. Jadi menginstal distribusi Linux tambahan akan menimpa boot-loader kami yang sudah ada. Satu-satunya cara yang saya tahu untuk menghindari ini adalah untuk boot ke sesi hidup dan mulai installer dengan
sudo ubiquity -b
.Solusi sederhana lain
Mari kita asumsikan bahwa kita memiliki tiga distribusi Linux yang diinstal pada partisi
sda1
,sda2
dansda3
. Sekarang kita lihat entri menu boot Grub. Saat boot, kita akan melihat sesuatu seperti ini:Dua entri pertama adalah entri untuk OS yang menghasilkan
grub.conf
-file yang sebenarnya kita gunakan. Entri # 3 dan # 4 tidak menarik saat ini. Entri # 5, # 6, # 7 dan # 8 adalah entri yang dibuat dengan OS-prober dan kita melihat di partisi mana OS untuk entri ini berada. Jadi dalam kasus contoh kecil ini kita dapat menyimpulkan bahwagrub.config
-file yang sebenarnya kita gunakan bukan milik OSsda2
atausda3
OSsda1
. Dalam hal satu atau lebih OS diinstal dengan/boot
partisi- terpisah kita harus memeriksa-/boot
partisi mana yang termasuk OS mana, tetapi itu mudah dilakukan dengan menjalankanfindmnt
perintah-di setiap OS.sumber
Dan periksa apa disk sudah terpasang
/
. Silakan baca komentar di bawah atau jawaban Ravexina jika Anda memiliki/boot
poin yang dipasang di Anda.Jika Anda tidak yakin, periksa UUID
sumber
/boot
adalah partisi yang terpisah? maka/boot/grub/grub.cfg
tidak terletak di/
partisi./
partisi itu dihitung?/boot
dulu.Untuk mengetahui dari partisi mana yang telah di-boot pengguna, lihat menu boot loader sebelum mem-boot sistem yang diinstal. Sulit untuk mengatakannya tanpa melihat menu boot loader.
Tempat untuk melihat
Dalam tangkapan layar gabungan berikut, saya telah memberi label tiga petunjuk yang mungkin diketahui dari partisi mana yang telah di-boot pengguna.
Petunjuk yang paling jelas adalah label (3), yaitu mengubah gambar latar belakang GNU GRUB pada sistem yang memiliki kontrol menu boot loader. Ini adalah yang termudah untuk diceritakan, asalkan pengguna mengaturnya sebelumnya.
Label (1) dijelaskan
Cari partisi yang tidak tercantum dalam entri menu di bawah entri pertama. Dalam tangkapan layar, hanya ada dua sistem operasi yang diinstal yaitu "Ubuntu" dan "Ubuntu 14.04.5 LTS".
Yang terakhir telah disebutkan
(on /dev/sda3)
, yang berarti yang pertama mungkin berlokasi di/dev/sda2
atau/dev/sda1
. Yang pasti, setelah mem-boot sistem yaitu "Ubuntu", jalankan perintah yang relevan untuk mendaftar partisi yang tersedia (lsblk
tampaknya paling mudah).Hanya setelah membandingkan dengan output dari
lsblk
, maka kita tahu bahwa sistem yaitu "Ubuntu" ditemukan di/dev/sda2
(yang tidak tercantum dalam entri menu) dari mana menu boot loader dikelola.Label (2) dijelaskan
Cari versi GRUB yang dicetak di atas menu boot loader. Perhatikan versi itu dan bandingkan dengan versi GRUB yang ditemukan pada sistem yang di-boot yaitu "Ubuntu".
Di tangkapan layar (bagian bawah):
GNU GRUB version 2.02~beta2-9
Setelah mem-boot sistem yaitu "Ubuntu", jalankan perintah yang relevan untuk memeriksa versi paket GRUB (
grub-install --version
relevan dan paling mudah).Bagaimana ini relevan? Karena
grub-install
danupdate-grub
perintah keduanya disediakan oleh paket yang samagrub2-common
. Mengingat bahwa menu boot loader dibuat dan diperbarui menggunakan alat dari paket yang sama, versi cetak di atas menu boot loader akan sama.Label (3) dijelaskan
Petunjuk ini perlu diatur secara manual, karena gambar latar belakang default menu boot loader tidak ada (hanya hitam polos). Gambar latar belakang harus kedalaman 8-bit.
Jika
desktop-base
paket diinstal pada sistem Anda, gambar latar belakang yang dibuat khusus untuk GRUB mudah ditemukan dengan akhiran nama file*grub.png
di direktori target.Untuk mengatur gambar latar belakang:
Buka
/etc/default/grub
file sebagai superuser, lalu tambahkan barisGRUB_BACKGROUND=
dengan path lengkap ke gambar pilihan dan kutip.Kemudian, jalankan
sudo update-grub
untuk memperbarui/boot/grub/grub.cfg
yang mencakup menu boot loader. Pengguna akan melihat output serupa dengan yang berikut ini.Nyalakan ulang mesin dan lihat apakah menu bootloader memiliki perubahan yang terlihat yang dibuat oleh perintah pembaruan dari sistem.
Selain itu, ulangi langkah untuk sistem lain, satu per satu. Langkah-langkah yang diulang tidak perlu, jika pengguna mengetahui sistem mana yang memiliki kendali atas menu bootloader (sekali lagi, ini tergantung pada bagaimana instalasi dibuat).
Penolakan
Jawaban ini menjelaskan kriteria yang terbukti dan teruji dengan baik untuk sistem BIOS dengan pengaturan multi-boot menggunakan GNU GRUB PC / versi BIOS. Pengecualian berikut akan berlaku.
Untuk mitra sistem UEFI yang menggunakan versi GNU GRUB EFI, tidak dijamin atau tidak diketahui apakah kriteria akan tampak sama seperti yang dijelaskan di atas.
Penekanan diberikan pada tampilan menu pemuat boot (bagaimana tampilannya mungkin berbeda yaitu setengah tangkapan layar atas) daripada untuk menunjukkan cara kerja pemuatan rantai. Karenanya, mengenai "cara multi boot diatur seperti yang terlihat pada tangkapan layar" tidak akan dijelaskan dalam jawaban ini.
Jika pengaturan multi-boot pernah dibuat dari salinan yang sama persis dengan sistem operasi yang sama yaitu Ubuntu 14.04, Kubuntu 14.04, Xubuntu 14.04, dll., Maka satu-satunya cara yang dapat diandalkan untuk mengetahui dari partisi mana pengguna telah boot adalah label (3).
Label (3) mungkin berfungsi lebih baik menggunakan gambar latar belakang khusus yang secara eksplisit menulis dari mana ia di-boot yaitu "Menu boot ini dikelola dari / dev / sda1". Demikian pula, mengenai "cara membuat gambar latar belakang khusus untuk GRUB" tidak akan dijelaskan dalam jawaban ini.
TL; DR Lihat menu boot loader sebelum mem-boot sistem yang diinstal. Cara termudah dan paling dapat diandalkan untuk mengetahui adalah label (3), yaitu mengatur gambar latar GRUB secara manual.
sumber