Ubuntu sunucusu, gpt bölümleme tablosu, mdadm, grub önyükleme başarısız


9

Temel çalışma sistemi detayları:

Bir sunucu kurmak için Ubuntu 12.04 sunucu CD'sini kullandım.

4 diskim var. Tüm disklerde ben benzer aşağıdakileri yaptım bu howto :

  • 2GB takas bölümü oluşturdu
  • 256 GB / önyükleme bölümü oluşturdu
  • 64 GB RAID10 bölümü oluşturdu (root için)
  • alanın geri kalanını alan büyük bir RAID10 bölümü oluşturdu

Önyüklemeyi ext3 olarak biçimlendirdim. Kökte ve büyük bölümlerde RAID10 kurdum. Kök bir ext4'ü biçimlendirdim. Büyük olanda mantıksal bir birim oluşturdum ve ext4'ü biçimlendirdim.

Ortaya çıkan sistem iyi çalışıyor ve iyi çalışıyor.

Sorun ayrıntıları:

Sonra bir başarısızlık prosedürü belgelemeye karar verdim. İlk adım olarak grub'u tekrar kuracağım.

# grub-install /dev/sda
warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
error: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
# grub-install /dev/sdb
warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
error: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..

Bu yüzden başarısız gibi görünüyor, ama aynı zamanda vazgeçmiş ve değişiklik yapmamış gibi görünüyor. Bu yüzden yeniden başlattım. Önyükleme başarısız oldu. Sadece 4 satır aşağıya yanıp sönen bir imleç ile siyah bir ekranla asılı kalır. "Shift" tuşunu basılı tutarak önyükleme yaparsam, imlecin soluna "GRUB" kelimesini alıyorum, ancak etkileşimli istem yok.

Bu noktada, bu raporu oluşturmak için önyükleme-onarım-diskini kullandım: http://paste.ubuntu.com/966531/

Yukarıdaki raporda, önyükleyicinin core.img için doğru sektörü işaret etmediğini unutmayın. (sda sanal cd'dir; sdb önyükleme diskidir; sdc sdb'nin bir aynasıdır, ancak önyükleme yansıtılmaz, sadece ayrı bir ilgisiz bölüm vardır ve biçimlendirilmiş ext3; sdd ve sde önyükleme için alan var, ancak biçimlendirilmemiş)

Sonra Ubuntu sunucu CD'sinden önyükleme yaptım, kurtarma sistemini başlattım ve hatasız tamamlanan aşağıdaki komutları verdim (burada sda sanal CD'dir ve b, c, d, e a, b, c olan disklerdir , önceki grub komutlarında d):

# parted /dev/sdb set 2 bios_grub on
# parted /dev/sdc set 2 bios_grub on
# grub-install /dev/sdb
# grub-install /dev/sdc

Bu noktada, bu raporu oluşturmak için önyükleme-onarım-diskini kullandım: http://paste.ubuntu.com/966561/

Yukarıdaki raporda, core.img ile ilgili sorunun ortadan kalktığını unutmayın. Doğru sektöre işaret ediyor gibi görünüyor.

Şimdi önyükleme yapmaya çalışırsam grub istemi alırım. Eğer "set" komutunu çalıştırırsam, kökün bulunduğunu ve ayarlandığını görürüm. Eğer "ls /" çalıştırırsam vmlinuz çekirdek dosyası da dahil olmak üzere raid biriminden kök dizinimi görüyorum. "Ls / vmlinuz" yazarsam "hata: dosya bulunamadı" yazıyor. Çekirdeği yüklemeyi denemek için "linux" komutunu kullanırsam aynı hatayı söylüyor. "Ls -l /" kullanırsam vmlinuz dosyası listelenmez.

Takip etmek istediğinizde aşırı ayrıntılı detaylar:

Ben de /boot/grub/grub.cfg olduğunu fark ettim, bu yüzden koştum

# grub-mkconfig -o /boot/grub/grub.cfg

Ancak sorun devam ediyor.

"Gptsync" aracını kullanırsam, bu davranışta bir değişiklik olmaz.

Önyükleme-onarım-diski sistemi onarmaz, çünkü EFI özellikli bir bios ile önyükleme yapmamı istiyor. Kısaca buna baktım, ama bunun nasıl çalıştığını bilmiyorum. Önyükleme seçeneklerimde bir UEFI kabuğu buldum, ancak bunun hakkında hiçbir şey bilmiyorum ve oradan başlatmayı nasıl değiştireceğinizi göremiyorum (örneğin, CD'yi o EFI kabuğundan önyüklemek için).

Bu sayfayı da okudum , ancak Ubuntu "grub" komutuyla gelmiyor, bu yüzden tam olarak takip edemiyorum. Bu komutu yükleyebilirim, ancak Ubuntu yükleyicisinin farklı bir kuruluma sahip olmak yerine onu nasıl kurmayı başardığını merak ediyorum. Blok listeleri kullandı mı?

Burada önyükleme çıktısı, önyükleme-onarım-diskinde önyükleme yapılırken (burada sdb ilk sabit disk, diskten önyüklendiğinde sda ​​ve 2. macun bağlantısında "bios_grub" olarak değişir):

Model: ATA Hitachi HUA72303 (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name   Flags
1      17.4kB  2000MB  2000MB  linux-swap(v1)  swap1
2      2000MB  2256MB  256MB   ext3            boot1  boot (this says bios_grub in 2nd link)
3      2256MB  66.3GB  64.0GB                  root1  raid
4      66.3GB  3001GB  2934GB                  data1  raid

Karşılaştırma için ilgisiz bir süper eski sanal makine ( önyükleme-onarım-diski bilmeyen herkes için ): http://paste.ubuntu.com/966799/

Yukarıdaki grub-mkconfig çalıştırdıktan ve ayrıca "bios_grub" ayarını "boot" olarak ayarladıktan sonra, sorunlu sistemden en son yapıştırıcıdır. http://paste.ubuntu.com/966808/

İkisini karşılaştırdığımızda, bu ilginç görünüyor:

sdb2: __________________________________________________________________________

File system:       
Boot sector type:  Grub2's core.img
Boot sector info: 
Mounting failed:   mount: unknown filesystem type ''

md/bcserver8:0: ________________________________________________________________

File system:       ext4
Boot sector type:  -
Boot sector info: 
Operating System:  Ubuntu 12.04 LTS
Boot files:        /boot/grub/grub.cfg /etc/fstab /boot/grub/core.img

Baskının önyükleme dosyalarına sahip olduğu ve sdb2 biçimlendirilmemiş gibi görünüyor. (buna rağmen, sistem grub-install çalıştırmadan önce önyükleme yaptı). Kurtarma CD'sinden "mount -t ext3 / dev / sdb2 / boot" başarısız olur. Ancak grubun 2. bölümü açıkça kullandığından (parted komutundaki bios_grub ayarını yapan 2) açık olduğu için, bunun işleri karıştırması mantıklıdır.

Yani böyle bir şey yaptım:

# mkfs.ext3 -L boot1 /dev/sdb2
# mv boot boot_on_root
# mkdir boot
# mount /dev/sdb2 boot
# rsync -avHP boot_on_root/ boot/
# parted /dev/sdb set 2 bios_grub on
# parted /dev/sdc set 2 bios_grub on
# grub-install /dev/sdb
# grub-install /dev/sdc

Sonra yeniden önyükleme ve tekrar siyah ekran var, istem yok. http://paste.ubuntu.com/966848/

Bu noktada, benim tahminim bios_grub ayarlandığında, grubun MBR'ye değil, ext3'teki ext3 dosya sistemine değil, bölümün kendisinde, EFI gibi sanki ... orada ext3 dosya sistemi. EFI hakkındaki kısa okumamdan, EFI ilk bölümün önyükleme olduğunu varsayıyor gibi geliyordu, ama benim durumumda ilk takas ve aynı zamanda sökülemez bir şey yerine FAT olmalı ... bu yüzden çok az / hayır yapıyor bir ipucu olmadan hala tamamen kayboldum. [EDIT: şimdi bir ipucum var ... güncelleme için biraz aşağı atla]

Ve şimdi önyükleme-onarım-diskinde onarım'ı tıklattığımda başka bir şey soruyor. En son hata pencerenin altında gizlendi ve görmek için diğerini sürüklemek zorunda kaldı. Bu sefer ana pencere gitti ve yeni pencere şöyle diyor:

GPT detected.       You may want to retry after creating a
BIOS-Boot partition (>1Mo, flag). Do you want to continue?

Evet'i tıkladım ve başarıyla tamir edildiğini ve başka bir macun oluşturduğunu söyledi: http://paste.ubuntu.com/966862/

Ama hala yanıp sönen imleci olan siyah bir ekranım var.

Şimdi benim teorim, önyükleme daha önce 0-63 sektörlerde olurdu sadece grub kodu olan yağ olmayan bir EFI şey tarafından üzerine yazılmıştır. Neyse ki bu sayfada çok açık bir ifadeyle karşılaştım, bu da muhtemelen tüm bunların ne anlama geldiğini anlamamı tamamladı. Ve sonra bunu bulduktan sonra, Jeremy, eğer doğruysa, bunun eksik anahtar kavram olduğunu doğrulayan bir cevap gönderdi. http://blog.psych0tik.net/2011/08/grub-embedding-blocklists-and-bios_grub-partitions/

Sorular:

Ne oluyor? Grub neden önyükleme yapamıyor? Neden "dosya bulunamadı" yazıyor?

Grub neden ayrıldığım (Ubuntu yükleyicisi tarafından ayarlanmayan) ayarladığım bu ayar olmadan yüklemek istemiyor? Kurmak için gereken tek şey, köküm RAID'de ve bölüm tablosu GPT olduğundan, LVM veya yazılım RAID'de olmayan ayrı bir / önyükleme olduğunu düşündüm.

Ubuntu CD yükleyicisi bu sorun olmadan ve bios_grub ayarı olmadan nasıl kurulur?

Ayrıca EFI kullanmayı da düşünürdüm. Bu iyi bir fikirse ve bunu kurmanın standart bir yolu varsa, her zaman yeni şeyler öğrenmek için hazırım.

Tüm sorularıma cevap vermeden bile beni mutlu edecek en hızlı cevap, önyükleyiciyi yükleme CD'sinde olduğu gibi düzeltmek için kurtarma CD'sinden çalıştırabileceğim bir dizi komut olacaktır. CD yerine önyüklemeli sistemle çalıştırabilirsem çok güzel olurdu.


Ayrılmış yazdırma çıktısını ekleyebilir misiniz?
Jeremy

Bunu 993 satırındaki 2 yapıştırma bağlantısında görebilirsiniz, ancak istek üzerine soruma ekleyeceğim.
Peter

Yanıtlar:


8

Çözüm, / boot bölümü ile aynı olmayan bir bios_grub bölümü kullanmaktır.

Varsayılan olarak bios_grub bölümü 1MiB'dir ve bios_grub olarak işaretlenmelidir. Benimki diskimdeki ilk bölüm. Bölüm 2 aslında / önyükleme önerdiği gibi önyükleme, bu doğru olmaz ve başka bir 1MiB bölüm yapmak gerekir.

GPT ve GRUB2 ile minimum dosya sisteminin üç bölümü vardır: bios_grub, root, swap. (takas gerektiğinden tam olarak emin değilim)

Neden grub "install-install" komutunu çalıştırdıktan sonra neden önyükleme yapılamıyor?

Bilinmiyor ... Gömemeyeceğini ve çalışamayacağını açıkça söylüyorsa hiçbir şeyi değiştirmeyeceğini düşünürdünüz.

Neden "dosya bulunamadı" yazıyor?

/ vmlinuz, önyükleme bölümünü kullanan bir symlink'tir ve önyükleme bölümü bozuktur. Bios_grub kodu ext3 yapısının üstüne yazılmıştır. Bu muhtemelen / boot'ın monte edilmediği anlamına geliyordu ve orada görülen grub dosyaları aslında çekirdeği içermeyen kök sistemindeydi.

Neden ayrıldığım ayarladığım bu ayar olmadan grub yüklemek istemiyor?

GPT bölümleme tablosunun MBR'den farklı olarak bir önyükleyici için alanı yoktur. Bu nedenle, önyükleme kodunu tutmak için belirli bir bölüm oluşturulmalıdır. "Grub-install" komutunu çalıştırmadan önce bu bölümü şu komutla belirtin:

    parted /dev/sda set 1 bios_grub on

Tek ihtiyacım olanın ayrı bir bot olduğunu düşündüm. Ubuntu CD yükleyicisi bios_grub ayarı olmadan nasıl kurar?

Bu gereksinim Ubuntu yükleyicisi için gereken her şey gibi görünüyor, ancak kolayca bozulan standart dışı bir sistem oluşturuyor.

GRUB, "Bu GPT bölüm etiketinde BIOS Önyükleme Bölümü yoktur " dediğinde, / boot değil bios_grub bölümü anlamına gelir.


Teşekkür ederim. Bu aslında üzerinde çalıştığım şeye çok yakın. Benim "hala bir ipucu olmadan tamamen kayboldum" bakın. bölümü. Şimdi benim teorim, önyükleme daha önce 0-63 sektörlerde olurdu sadece grub kodu olan yağ olmayan bir EFI şey tarafından üzerine yazılmıştır. Ben bir deney üzerinde çalışıyorum ve sonra bunun nasıl gittiğini size bildireceğim.
Peter

Ubuntu mu kullanıyorsunuz? Ubuntu yükleyicisinin bios_grub bölümünü kullanarak düzgün şekilde yükleyebilmesinin bir yolu var mı?
Peter

@Peter Ubuntu kullanıyorum ve yönlendirmeli bir bölümleme yapıyorsanız yükleyicinin doğru ayarlanması gerekir. 11.10 yükleyicisiyle benim için yaptığını biliyorum.
Jeremy

Çok teşekkür ederim. Cevap bu. Daha sonra daha karmaşık kurulumlarla (önyüklemede baskın ve lvm) deneyeceğim ve sonra cevabınızı ayrıntılarla düzenleyeceğim.
Peter
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.