Grub2'nin hangi sürücüleri gerçekten bir MBR yüklediğini nasıl kontrol edebilirim?


17

Ben Squeeze yükseltme bir parçası olarak grub2 yükseltilmiş bir Debian / Squeeze sistemi (bir geçmişi en az Woody olacak). Her şey iyi çalışıyor, ancak disk yapılandırmasıyla uğraşmak üzereyim.

Şu anda makine RAID1-ed /, / home ve / boot bölümlerine sahip 2 adet 80GB'lık sürücüden çalışıyor (herhangi birinin takasın nerede olduğunu merak etmesi durumunda RAID1-ed "/ data" ve birkaç takas içeren başka bir çift sürücü var , ama bunlara dokunmuyorum).

2 adet 130GB SSD ekledim, en azından 80GB sürücülerdeki bölümler kadar büyük olacak şekilde bölümledim ve bunları dahil etmek için RAID1'leri büyüterek, senkronizasyonu bekleyerek ve ardından eski dizileri kullanır, böylece yalnızca SSD'ler kalır (ve sonra dosya sistemlerini büyütür). Ama mdadm / ext3 wrangling bu sorunun ne olduğu hakkında değil ...

Bu beni makineden çıkarmak istediğim 2 eski 80GB (IDE) sürücüyle bırakacak. Benim endişem, onları kaldırmanın bazı önemli MBR'leri almasıdır. Makinenin önyüklenebilir kalmasını nasıl sağlayabilirim?

Daha spesifik olarak:

  • Squeeze yükseltmesini yaptığımda, grub2'nin hangi sürücüleri yüklemesi gerektiği hakkında sunulan bazı seçenekler olduğunu hatırlıyorum (tüm sürücüler olan varsayılan ile gittim). SSD'ler o sırada makinede değildi; grubun SSD MBR'lere yüklenmesini sağlamak için bunu nasıl çalıştırabilirim? (Sanırım bazı paketlerin dpkg-yeniden yapılandırması).

  • Hangi sürücülerin kurulu olduğunu düşündüğünü nasıl bulabilirim? İyi keder / boot / grub / bugünlerde neredeyse 200 dosya var! Nereye bakmalı? Ayrıca, /boot/grub/device.map.auto'nun şu anda yalnızca 3 sürücü listelemesi biraz garip görünüyor (80 GB'ların 2'si ancak diğer sürücü çiftlerinden yalnızca biri ve SSD'lerin hiçbiri). Bunu nasıl güncellerim? ( Güncelleme: bu kırmızı bir ringa balığıydı; device.map.auto yıllar önce bir kalıntı gibi görünüyor; device.map grub-mkdevicemap tarafından yapılan bir güncellemede mantıklı görünüyordu. Bu alandaki paranoyamın eski bir mobo'nun BIOS'undan geldiğini düşünün GRUB tarafından görülen cihaz sırasını bir hevesle yeniden sıralayın).

Sonuç: her şey yolunda gitti ve şimdi iki eski 80GB IDE sürücüsünü kutudan çıkardım ve tüm dosya sistemleri yeni bölüm boyutlarına kadar yeniden boyutlandırılmış RAID1-ed SSD'leri çalıştıran hızlı ve hızlı bir önyükleme sistemi var. Aradığım diğer "Grub bulmacasının eksik parçası" dpkg-reconfigure grub-pc, hangi disklerin MBR'yi korumasını isteyen bir şeydi . Aaron'un cevabı aslında bana bunun beklendiği gibi çalıştığından emin olmak için çok şey yaptı ve bu cevabı kabul etti.

Yanıtlar:


17

MBR 512 bayttır, bu yüzden GRUB'un orada olup olmadığını görmenin hızlı bir yolu ...

dd if=/dev/sda bs=512 count=1 | xxd

Bu MBR'yi döker, 0x17F = 383 baytında "GRUB" u görüyorum.

dd if=/dev/sda bs=1 count=4 skip=383

Bunu yaptığımda ' GRUB' ve ardından ddçıktıyı yazdırır .

Bunu bir bash fordöngüsüne veya daha fazla sürücüye geçmek için bir şeye sarabilirsiniz . manuel olarak yapmak istemiyorsanız.


4
Sadece küçük bir ekleme - GRUB'un pozisyonunun versiyondan versiyona değişmesi muhtemel olduğundan, biri kullanılabilir dd if=/dev/sda bs=1 count=512 | grep -aob GRUB. Bu, işaretleyicinin önyükleme sektörü içindeki konumunu döndürür.
Alessandro Santini

16

Önyükleme işleminde birkaç adım var (geleneksel bir PC BIOS'u tanımlıyorum):

  1. BIOS, önyükleme diskinin ilk kesimini (512 bayt) okur.
  2. Bu ilk sektördeki kod, BIOS arabirimi aracılığıyla sabit bir konumda daha fazla veri ve kod okur. Bu BIOS arabirimi yalnızca iki sabit diski ortaya çıkarır: disk 0 ilk sektörün nereden okunduğunu gösterir ve disk 1 ikiden fazlasına sahipseniz kolayca tahmin edilemeyen başka bir disktir. Önyükleme kesimi, daha fazla verinin hangi sabit diskte olduğunu gösteren bir bayt içerir; bu disk içeren /boot/grub.
  3. Önceki aşamada yüklenen kod, bölümleri, dosya sistemlerini ve diğer üst düzey kavramları anlar. Veriler bir dosya sistemi konumu içerir (ör.(hd0)/boot/grub nerede bulunacağını grub.cfgve daha fazla Grub modüllerini belirleyen ) içerir .
  4. grub.cfg genellikle bir menü göstermek ve bir işletim sistemini önyüklemek için yürütülür.

Önyükleme sektörü grub-setup, normalde çağrılarak oluşturulur grub-install. Önyükleme kesimi grub-installveya grub-setupkomut satırında belirttiğiniz herhangi bir diske (Linux sözdiziminde) sonlanır . Disk üzerinde bir önyükleme sektörünüz olup olmadığını kontrol edebilirsiniz.file -s /dev/sda . Yeni bir disk eklediğinizden ve bu diskten önyükleme yapmak istediğiniz için grub-installyeni diskte çalıştırmanız gerekir . grub-installAynı disk üzerinde birden çok kez çalıştırmak zararsızdır.

Zor kısım yukarıdaki 2. adımdadır. Mümkünse, Grub'u (yani /boot/grubdizini) BIOS önyükleme diskine yerleştirin (veya buna diğer yönden yaklaşarak, BIOS'unuza diskten önyükleme yapmasını söyleyin /boot/grub). İşte burada device.mapdevreye giriyor. Bunun (hd0), içeren diske eşlendiğinden emin olun /boot/grub, ardından grub-installbu disk üzerinde çalıştırın .

İki diskiniz bir yazılım RAID-1 yapılandırmasındaysa, aynı önyükleme sektörleriniz olacaktır. Bu istenen davranıştır: BIOS önyükleme diski olan bir disk arızalanırsa, diğerinden önyükleme sadece çalışır (çünkü aynı ilgili konumlarda aynı baytları içerdiklerinden). Yalnızca belirli bölümleri yansıtıyorsanız, bir önyükleme kesimi yüklemek yalnızca disklerden birini etkiler. İkinci yansıtılmış kopyasını içeren diskle ilişkilendirmek için grub-installdeğiştirdikten sonra ikinci diskte yeniden çalıştırmalısınız .device.map(hd0)/boot/grub

Adım 3 oldukça karmaşıktır, ancak genellikle kutudan çıkar. 4. adımda Grub, dosya sistemlerini UUID'ye göre bulur veya adlandırılmış dosyaları arar, böylece diskleri tanımlamanın çeşitli yolları hakkında endişelenmenize gerek kalmaz.

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.