Hangi bölümden önyüklediğimi nasıl bilebilirim?


12

Çoklu önyükleme bölümleri olan bir makinem var. Bir bölümde Ubuntu 14.04, ikinci bölümde Ubuntu 15.04 ve üçüncü bölümde Ubuntu 16.04 var. /boot/grub/grub.cfgÖnyükleme işlemi için hangi bölümün kullanıldığını bulmak için, hangi satırdan önyüklediğimi komut satırından bilmenin bir yolu var mı ? /boot/grub/grub.cfg Üç bölümün her birinde var .


3
Bunu mutlak genellik ve güvenilirlikle yapamazsınız. Bildiklerini için /boot/grub/grub.cfgönyükleme için kullanılan dosya silinmiş olabilir, bu bölüm, bölüm tablodan silinmiş olabilir ve bu disk sistemden fiziksel olarak kaldırıldı.
Federico Poloni

Yanıtlar:


10

GRUB çekirdeğe önyükleme yaptıktan sonra, çekirdeğin ne başlattığı hakkında hiçbir fikri yoktur ve /bootGRUB'un kullandığı kişi olmayabilir. boot/grub/grub.cfgEn son hangisine erişildiğini görmek için bölümlerin her birinin erişim zamanlarını kontrol edebilirsiniz . Bu, hangi bölümün GRUB yapılandırma dosyasını kullandığını söyleyebilir.

stat -c %x /boot/grub/grub.cfg

Erişim süreleri güncellenmezse, çeşitli GRUB yapılandırma dosyaları tarafından kullanılan çekirdek parametrelerinde herhangi bir farklılık aramanız gerekir. Örneğin, eklenti için, onları değiştirebilir Eğer foo=1, foo=2hiç vs. GRUB_CMDLINE_LINUXBunların her birinde, çalıştırmak sudo update-grub2ve yeniden başlatma, o zaman kontrol edebilirsiniz /proc/cmdlinekullanıldı bu değerlerin hangi görmek için.


ilginç! Bu, çözümümün Ravexina ve Katu'dan daha iyi bir doğruluk oranına sahip olduğu anlamına mı geliyor?
tatsu

@tatsu IMO diğer tüm cevaplar yanlış - Ravexina bulunduğu bölümü buluyor /boot, ancak grubun kullandığı bu olmayabilir ve /Katu'nun monte edilmiş bölümü buluyorsunuz, ancak Ravexina'nın belirttiği gibi, muhtemelen daha az bağlantı
muru

1
evet, ancak bağlantısının kesilmesi, bağlı olduğunuz bölümde başarısız olmaktan başka bir şey yapamaz: diskler, monte edilen cihaz gibi bilgileri, hangisini çıkarmaya çalıştığınızla ilgili ihtiyacınız olabilecek herhangi bir kimlik bilgisini sunar. Çözümümün çirkin olduğunu ilk itiraf ediyorum ama% 100 başarı oranı doğru mu?
tatsu

1
@tatsu ne için başarı oranı? Monte edilmiş bölümü bulmak /, elbette. Önyükleme sırasında hangi bölümün GRUB yapılandırmasının kullanıldığını mı buldunuz? Bunun nasıl bir ilişki olduğunu anlamıyorum.
muru

4
Grub aslında kendi DOS olduğu ve linux dosya sistemi sürücü kurallarına bağlı olmadığı için erişim zaman damgasını ayarlıyor mu?
rackandboneman

4

Bildiğiniz gibi, aradığınız dosya /bootçalışan sisteminizin dizininde bulunur. ya /bootayrı bir bölüm ya da değil; Eğer /bootayrı bir bölümse, bunu aramalısınız:

$ lsblk -r | grep '/boot'
sda2 8:1 0 400M 0 part /boot

Kullanılan araçların grub.cfgbulunduğu yer sda2.

Aramanız gereken Othewise root:

$ lsblk -r | grep '/$'
sda1 8:1 0 121.2G 0 part /

bu kez bulunduğu yer sda1.

Ya da eğlence için bile önyükleme süresi parametrelerini kontrol edebiliriz:

$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-686-pae root=UUID=938495-1fe2-3302 ro quiet

sonra UUIDhangi bölümün kök olduğunu bulmak için kullanın .

$ sudo blkid | grep 938495-1fe2-3302
/dev/sda1: UUID="938495-1fe2-3302"

Bu demektir sda1.

Bu önyükleme parametrelerini grub.cfgdosyalarınızdan hangilerinin içerdiğini görmek için de kontrol edebilirsiniz, bu yalnızca önyükleme parametreleriniz grub.cfgbirbirinden farklı olduğunda çalışır .


2
Bir dosya sistemi UUID'sinin arkasındaki aygıt düğümünü bulmak için (süper kullanıcı ayrıcalıkları gerektirmeyen) daha kolay bir yol olacaktır readlink -f /dev/disk/by-uuid/<UUID>.
David Foerster

3

Şu anda takılı olan kök dosya sistemini tutan aygıtı görüntülemek için:

awk '$2=="/"{print $1}' /proc/mounts

Çalışmakta olan Ubuntu yayın sürümünü görüntülemek için:

lsb_release -rs

bu aslında soru ile ilgili çok şey ifade ediyor ve henüz en uygun cevap gibi görünüyor. Bahse girerim, kurulumunda iki dağıtım yok, lsb_release -rsher seferinde kullanacağı sürüm numarasına sahip . KISS
tatsu

Ne yazık ki bu işe yaramıyor. Komutumu makinemde birden fazla işletim sistemi ile test ettim, sadece "master`-OS'm MBR'de grub yüklü, diğer işletim sistemlerinde PBR'de Grub yüklü, komut işletim sisteminin Grub'un yüklü olduğu yeri gösteriyor, ancak değil hangi OS
Grubunun

@ mook765: Cevabımın Grub veya MBR (veya herhangi bir önyükleme yükleyicisi veya bölüm tablosu türü) ile kesinlikle bir ilgisi yok. Tam olarak neyi denediğinizden ve neyi görmeyi beklediğinizden emin değilim.
David Foerster

O zaman bu cevabın soru ile bir ilgisi yok ...
mook765

@ mook765: Eğer tam anlamıyla alırsanız, evet. Ancak bana göre OP, birden fazla Ubuntu kurulumundan hangisinin şu anda önyüklendiğini bilmek istiyor ve bunun için cevabım iyi olmalı.
David Foerster

2

Her işletim sistemine basit bir özel menü girişi ekleyebiliriz ve OS Grubunun yapılandırma dosyasını yüklediği Grub menüsünde görürüz.

Misal:

16.04'e önyükleme yapıyoruz ve /etc/grub.d/40_custombir menü girişi eklemek için dosyayı düzenliyoruz .

#! / Bin / sh
exec kuyruk -n +3 $ 0
# Bu dosya, özel menü girişleri eklemek için kolay bir yol sağlar. Basitçe
# yorumdan sonra eklemek istediğiniz menü girişleri. Değişmemeye dikkat edin
# yukarıdaki 'exec tail' satırı.
#

menuentry 'grub.conf yüklendi 16.04' {        
            reboot  
    }

Dosyanın yürütülebilir ve çalıştırıldığından emin oluruz sudo update-grub.

Sonra biz değiştirmek ig diğer işletim sistemleri de aynı değişiklikler, sadece, menuentry için farklı adlar kullanır yapmak 16.04için 15.04vb.

Önyükleme sırasında Grub menüsünde bu menü girişini seçersek, makine yeniden başlatılır, herhangi bir işletim sistemini önyüklemek için değil, hangi işletim sisteminin gerçekten yüklemek için kullanıldığını görmek için onları oluşturduk grub.conf.

Ek bilgi

Bu tür bir karışıklık ortaya çıkar, hepsi Grub'u kullanan birden fazla işletim sistemi yüklediğimizde ve bir işletim sisteminin yüklenmesi sırasında aynı önyükleyici konumunu seçeriz. Gerçekten de Grub'u yükleyen sadece bir işletim sistemine ihtiyacımız var, Grub herhangi bir Linux dağıtımına önyükleme yapabilir, bu yüzden kurulu bir dağıtımımız varsa (Grub dahil), Grub'u yüklemeden ek işletim sistemleri yükleyebiliriz.

Eski kurulumlarda, bölüm-önyükleme kaydını konum olarak seçebileceğimiz için önyükleme yükleyicisi kurulumunun konumunu işlemek oldukça kolaydır, ancak doğru bölümü seçmeye dikkat etmeliyiz. Böylece bir işletim sistemi önyükleyiciyi MBR'ye yükler ve ek işletim sistemleri önyükleyiciyi OS bölümünün PBR'sine yükler. Bu olasılık sadece Something elseyükleme sırasında -option kullandığımızda olur .

UEFI kurulumlarında biraz daha garip, önyükleyici EFI Sistem Bölümü'ndeki (ESP) bir klasöre yüklenecek ve birden fazla önyükleyici kolayca birlikte var olabilir. Buradaki sorun, tüm Ubuntu lezzetleri ve diğer bazı linux dağıtımlarının Grub'u ESP'deki aynı klasöre yükleyeceğidir ve bir seçeneğimiz yok. Bu nedenle, ek bir Linux dağıtımı yüklemek mevcut önyükleyicimizin üzerine yazacaktır. Bundan kaçınmanın tek yolu canlı bir oturumda önyükleme yapmak ve yükleyiciyi başlatmaktır sudo ubiquity -b.

Başka bir basit çözüm

Bize bölümleri yüklü üç Linux dağıtımlarını olduğunu varsayalım sda1, sda2ve sda3. Şimdi Grub'un önyükleme menüsü girişlerine bir göz atalım. Önyükleme sırasında şöyle bir şey göreceğiz:

1 Ubuntu
2 Ubuntu için gelişmiş seçenekler
3 Bellek testi (memtest86 +)
4 Bellek testi (memtest86 +, seri konsol 115200)
5 Ubuntu (on / dev / sda2)
Ubuntu için 6 gelişmiş seçenek (on / dev / sda2)
7 Ubuntu 17.04 (on / dev / sda3)
8 Ubuntu için gelişmiş seçenekler (on / dev / sda3)

İlk iki giriş, grub.confkullandığımız -dosyasını oluşturan işletim sistemi girişleridir . # 3 ve # 4 girişleri şu anda ilginç değil. # 5, # 6, # 7 ve # 8 girişleri OS-prober ile oluşturulan girişlerdir ve bu girişler için işletim sistemlerinin hangi bölümlerde bulunduğunu görürüz. Yani bu küçük örnekte durumunda şu sonuca varabiliriz grub.config-dosyadan biz aslında kullanımı üzerine OS ait olmayan sda2veya sda3ancak üzerinde OS sda1. Bir veya daha fazla işletim sisteminin ayrı bir /bootbölümle yüklenmesi durumunda, hangi /bootbölümün hangi işletim sistemine ait olduğunu kontrol etmeliyiz, ancak bu findmnther işletim sisteminde-komutunu çalıştırarak kolayca yapılabilir .


+1 Uzun sürmesine rağmen, bu cevap aslında ilgili noktaları içermektedir. BIOS sistemleri için, çoklu önyükleme yapan kullanıcılar yükleyicide daha fazla kontrole sahip olmak için "Başka bir şey" i tercih etmelidir; Kuvvete gerek yok (bkz "değil GRUB önyükleme aracını kurmak" benim eski cevabını ). UEFI sistemleri için, çoklu önyükleme kurulumu çok açıklanamayan veya denenmemiş görünüyor.
clearkimura

1
lsblk

Ve hangi diskin takılı olduğunu kontrol edin /. Lütfen aşağıdaki yorumları veya /bootbağlı noktalarınızda varsa Ravexina'nın cevabını okuyun .

Emin değilseniz, UUID'yi kontrol edin

lsblk -o UUID,NAME,SIZE,MOUNTPOINT

2
Bu doğru değil, ya benim /bootayrı bir bölümse? sonra bölümde /boot/grub/grub.cfgyer almaz /.
Ravexina

@Ravexina Teknik olun, bu doğru olabilir. Ancak, bu kullanıcının amaçları doğrultusunda /bölüm sayılmaz mı?

@MarkYisri Sanırım her zaman doğru olmadığını söylemeliyim, ancak OP bize dosyayı üç farklı bölümde aldığını söylüyor, bu yüzden ayrı bir /bootilk kontrol etmek daha iyi .
Ravexina

1
@Ravexina'ya işaret ettiğin için teşekkür ederim cevabı güncelledim.
Katu

0

Kullanıcının hangi bölümden önyükleme yaptığını bilmek için , yüklü sistemlerden herhangi birini önyüklemeden önce önyükleme yükleyici menüsüne bakın . Önyükleme yükleyici menüsünü görmeden söylemek zor.

Nereye bakmalı

Aşağıdaki kombine ekran görüntülerinde, kullanıcının hangi bölümden önyüklediğini bildiği üç ipucu etiketledim.

Ek açıklama içeren GNU GRUB PC / BIOS sürümünü kullanan çoklu önyükleme menüsü

Etiket (1): İlk girişin altındaki GNU GRUB menü girişleri

Etiket (2): Önyükleme yükleyici menüsünün üstündeki GNU GRUB sürümü

Etiket (3): GNU GRUB arka plan resmi (manuel kurulum gerekir)

En belirgin ipucu, önyükleme yükleyicisi menüsünün kontrolüne sahip sistemdeki GNU GRUB arka plan görüntüsünü değiştiren etiket (3) 'tür. Kullanıcının önceden ayarlaması şartıyla söylemesi en kolayıdır.

Etiket (1) açıkladı

Partisyon'dan arayın değil ilk girişin altındaki menü girdilerini listelenen. Ekran görüntüsünde sadece iki işletim sistemi kuruluyor, yani "Ubuntu" ve "Ubuntu 14.04.5 LTS".

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)

İkincisi bahsetti (on /dev/sda3), yani birincisi /dev/sda2veya üzerinde olabilir /dev/sda1. Emin olmak için, sistemi önyükledikten sonra, yani "Ubuntu", kullanılabilir bölümleri listelemek için ilgili komutu çalıştırın ( lsblken basit gibi görünüyor).

$ 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 

Sadece çıkışına karşılaştırdıktan sonra lsblk, o zaman sistem yani "Ubuntu" da bulunduğunu biliyoruz /dev/sda2(hangi değil menü girdilerini listelenen) önyükleyici menü yönetilmektedir hangi.

Etiket (2) açıkladı

Önyükleme yükleyici menüsünün üstünde yazdırılan GRUB sürümünü arayın. Bu sürüme dikkat edin ve önyüklemeli sistemde bulunan "Ubuntu" gibi GRUB sürümüyle karşılaştırın.

Ekran görüntüsünde (alt yarıda): GNU GRUB version 2.02~beta2-9

Sistemi, yani "Ubuntu" yu başlattıktan sonra, GRUB paketinin sürümünü kontrol etmek için ilgili komutu çalıştırın ( grub-install --versionuygun ve en açık olanıdır).

$ grub-install --version
grub-install (GRUB) 2.02~beta2-9

Bu nasıl alakalı? Çünkü grub-installve update-grubkomutlarının ikisi de aynı paket tarafından sağlanır grub2-common. Önyükleme yükleyicisi menüsünün aynı paketteki araçlar kullanılarak oluşturulduğu ve güncellendiği göz önüne alındığında, önyükleme yükleyicisi menüsünün üstündeki yazdırılan sürüm aynı olacaktır.

Etiket (3) açıkladı

Önyükleme yükleyici menüsünün varsayılan arka plan görüntüsü yok (yalnızca düz siyah) olduğundan, bu ipucunun manuel olarak ayarlanması gerekir. Arka plan resmi 8 bit derinlikte olmalıdır.

Eğer desktop-basepaket sisteminizde yüklü, GRUB için özel olarak yapılmış bu tür arka plan resimleri kolayca dosya adı soneki ile bulunan *grub.pnghedef dizindeki.

$ 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

Arka plan resmini ayarlamak için:

  1. /etc/default/grubDosyayı süper kullanıcı olarak açın , ardından GRUB_BACKGROUND=seçtiğiniz ve alıntılanan görüntüye tam yol içeren satırı ekleyin .

    $ 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"
    ...
    
  2. Ardından, önyükleme yükleyicisi menüsünü içeren sudo update-grubgüncelleştirmeyi çalıştırın /boot/grub/grub.cfg. Kullanıcı aşağıdakine benzer çıktılar görecektir.

    $ 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
    
  3. Makineyi yeniden başlatın ve önyükleme yükleyici menüsünün sistemden güncelleme komutu tarafından yapılan herhangi bir görünür değişiklik olup olmadığını görün.

Aksi takdirde, adımları tek tek olmak üzere diğer sistemler için tekrarlayın. Kullanıcı, önyükleme yükleyici menüsü üzerinde hangi sistemin kontrol sahibi olduğunun farkındaysa, tekrarlanan adımlar gereksiz olurdu (yine, bu kurulumun nasıl yapıldığına bağlıdır).

feragat

Bu cevap, GNU GRUB PC / BIOS sürümünü kullanarak çoklu önyükleme kurulumuna sahip BIOS sistemi için kanıtlanmış ve iyi test edilmiş kriterleri açıklar. Aşağıdaki istisnalar geçerli olacaktır.

  • GNU Grub EFI versiyonunu kullanarak UEFI sistemi muadili için, bir değil garanti veya olmayan kriterler, yukarıda tarif edilen ile aynı olacak şekilde görünür bilinmemektedir.

  • Vurgu verilir görünüyor önyükleyici menüsünün (Görüntüde farklı yani üst yarısını görünebilir nasıl) yerine nasıl chainloading eserlerini göstermek için daha. "Ekran görüntüsünde görüldüğü gibi Nasıl kurulduğunda çoklu açılış" konusunda, Gibi olurdu değil bu cevap olarak açıklanacaktır.

  • Çoklu önyükleme kurulumu, Ubuntu 14.04, Kubuntu 14.04, Xubuntu 14.04 vb. Gibi benzer işletim sisteminin tam olarak aynı kopyalarından yapılmışsa, kullanıcının hangi bölümden önyüklediğini bilmenin tek güvenilir yolu etikettir (3).

  • Etiket (3), önyüklendiği şekilde açıkça yazılan özel bir arka plan görüntüsü kullanılarak daha iyi çalışabilir, yani "Bu önyükleme menüsü / dev / sda1'den yönetilir". Benzer şekilde, ilgili "GRUB için özel arka plan görüntüsü nasıl oluşturulacağı" olur değil bu cevap olarak açıklanacaktır.

TL; DR Kurulu sistemlerden herhangi birini başlatmadan önce önyükleme yükleyici menüsüne bakın . Bilmenin en kolay ve güvenilir yolu, GRUB arka plan görüntüsünü manuel olarak ayarlamak olan etiket (3) 'tür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.