GRUB en iyi bootloading çözümü mü? Daha kolay bir alternatif var mı?


26

Bazı kötü deneyimlerim oldu GRUB2. Tasarım ve geliştirme süreci hakkında bazı kötü şeyler söyleyebilirdim (ve söylemiştim) . Özellikle güncelleme araçlarından hoşlanmıyorum: ne sebeple olursa olsun, her bir çekirdek güncellemesi için - veya bir çok küçük (ve görünüşte alakasız) konfigürasyon değişikliği için birkaç komut - bir zincirdeki bir diğeri üzerinden dolaylı olarak - otomatik olarak güncellenmesi gerekir .

Bu, yaşadığım önceki deneyimlerle doğrudan çelişiyor LILO; buna ciddi bir şekilde geri dönmeyi düşünüyorum. Bu konuda hiçbir sorun yaşamadım ve yapılandırması oldukça basitti. Bir şey için, hatırladığım kadarıyla, çekirdek güncellemesi başına tek, basit bir şekilde yönetilen bir yapılandırma metin dosyasını güncellemek (ya da sadece güncellemek için) vardı .

Peki LILO bugünün çekirdeği ile modern donanım üzerinde nasıl çalışıyor? GRUB nasıl? Diğer bootloaders nasıl? Herhangi bir ön koşulu yerine getirmek zorunda mıyım, yoksa liloeski günlerde merakla hatırladığım şekilde yapılandırma dosyasını yazmak ve çalıştırma komutuyla mı ilgili? Çekirdek paketi güncellemesi (Debian / Ubuntu) LILO'yu GRUB2 ile olduğu gibi günceller mi?


Bir EFI bellenim tipine sahip olup olmadığına bağlı olarak, linux çekirdeğini bellenim bellekten sevdiyseniz ve yüklediyseniz, yapamadığınız bir şey yapabilirsiniz. Ancak yine de LILO'yu EFI (zaten eLILO) veya BIOS ile kullanabilirsiniz. Çekirdek kaynak ağacında ve korunur. EFI işini nasıl yapacağınızı bilmek istiyorsanız, buna cevap verebilirim, ancak LILO ile kişisel deneyimim yok, sadece tutulduğunu ve çalıştığını biliyorum.
mikeserv

2010 veya 2011'de LILO'yu o zamanki Core 2 Duo'da kullandığımı hatırlıyorum. Hala çalışması gerektiğini düşünüyorum (UEFI vb. Dikkate alınmadan), PC mimarisi o kadar değişmedi.
Renan

@mikeserv, lütfen LILO-EFI düet hakkında bildiğiniz her şeyi yazın. Bu konuyla ilgili herhangi bir bilgi açıktır.

Aslında daha önce yarayabilecek bir şeyler yazdım buraya o kısaca UEFI / bios arasındaki farklar ile ilgilenir. Mesele şu ki uefi bir bootloader içeriyor, böylece grub / lilo / herhangi bir şey gereksiz. Sık sık içermediği şey bir önyükleme yöneticisidir - menüler ve diğer şeyler için - bu yüzden rodsbooks.com/refind adresine gitmenizi tavsiye ederim
mikeserv

3
Hala Slackware ile birlikte gelenler. Bu pek küçük bir topluluk değil.
Bandrami

Yanıtlar:


28

ELILO

Linux için EFI Boot Yükleyicileri Yönetme: ELILO Kullanımı

Hangi parçanın kopyalanacağına + yapıştırılacağına karar vermek benim için gerçekten zor, çünkü hepsi gerçekten iyi, bu yüzden lütfen okumanızı rica ederim.

Rod Smith

Tarafından Yazılan ve hem korur gdiskve rEFInd.

Ama bunu yapmadan önce biraz yorum yapmak istiyorum. Yukarıdaki ELILO bağlantısı, Rod Smith tarafından yazılmış , rodsbooks.com sitesinde bulacağınız UEFI açılışındaki birçok sayfadan birine yöneliktir . Başarılı bir teknik yazar ve eğer UEFI’nın önyükleme konusunu googlediyseniz ve onun hakkında bir şey okumamaya çalıştıysanız, muhtemelen en iyi birkaç sonucu atlamış olmanız muhtemeldi.

Linux UEFI önyüklemesi

Temel olarak, Linux çekirdeği üretici yazılımı tarafından doğrudan çalıştırılabilir.

Yukarıdaki bağlantıda Linux çekirdeğinin EFI saplama yükleyicisinden bahseder - bence, linux çekirdeğinin doğrudan üretici yazılımı tarafından çağrılmasına izin verdiği için kullanmanız gereken şey budur. Yaptığınız şey ne olursa olsun , bellenim tarafından yürütülür - ve bir şey olduğu gibi ses çıkarır grub. Ürün yazılımı os çekirdeğinizi doğrudan yükleyebilirse, bir önyükleyici ne işe yarar? UEFI üretici yazılımı , bölüm tablosu tarafından özellikle işaretlenmiş bir FAT formatlı GPT bölümü monte eder ve yerleşik bir flash bellek modülünde UEFI önyükleme değişkeni olarak kaydettiği bir yolu yürütür. Bu yüzden yapabileceğiniz şey linux çekirdeğini bu FAT bölümüne koymak ve yolunu bu önyükleme değişkeninde saklamak. Aniden çekirdek kendi önyükleyici.

bootloaders

UEFI sistemlerinde, önyükleyiciler gereksiz - ELILO dahil.

Bootloader'ların çözmesi için tasarlanan sorun, BIOS sistemlerinin yalnızca boot bayraklı bölümünün ilk bölümünde okuduğu ve uyguladığıydı . 512 baytlık bir çekirdekle anlamlı bir şey yapmak biraz zor, bu nedenle yapılacak en yaygın şey, asıl çekirdeği tuttuğunuz ve zincir yükünü tuttuğunuz bir dosya sistemi oluşturabilecek küçük bir yardımcı program yazmaktı.

Aslında, 512 bayt, bootloaders için bile çoğu zaman yeterli değildi. grubörneğin, çekirdeğinizi zincirleme işlemine başlamadan önce kendisini zincir olarak yükler, çünkü ikinci aşamasını önyükleme kesimi ile dosya sisteminizin ilk kesimi arasındaki boş alana sıkıştırır . Bir tür kirli kesmek - ama işe yaradı.

Bootmanagers

Kolay yapılandırma uğruna olsa, bazı aralarında yararlı olabilir.

Rod Smith'in rEFInd'in yaptığı şey bir EFI uygulaması olarak piyasaya sürülüyor - bu nispeten yeni bir kavram. Diskten - yürütülen ve bellenime geri dönen bir programdır. REFInd'in yaptığı, önyükleme menülerini yönetmenize izin verir ve önyükleme seçiminizi yürütmek için ürün bilgisine geri döndürür . UEFI dosya sistemi sürücüleri ile birlikte gelir - bu nedenle, örneğin, EFI saplama yükleyicisini FAT olmayan bir bölümde (şu anki gibi /boot) kullanabilirsiniz. Yönetilmesi çok kolaydır - eğer böyle bir şey gerekliyse - çalıştırılabilir bir sistem çekirdeğinin sadeliği, yapılandırılabilir bir bootmanager'ın rahatlığına ekler.

Atomik Dolaylı

Çekirdeğin sembolik bağlantılara ihtiyacı yoktur - olabilir mount --bind.

Bulunduğunuz /yerde , birbirine bağlamaya izin vermemeniz gereken herhangi bir yol varsa, öyledir /boot. An öksüz sembolik link /bootolduğu değil Hiç, arıza tespiti gerekirken sorun da. Yine de, /bootyerinde çekirdek güncellemelerini ve / veya çoklu çekirdek konfigürasyonlarını idare etmek için çeşitli dağılımlarla ayrıntılı bir yüklemeyi (korkunç bir fikir olsa bile) kurmak yeterince yaygın bir uygulamadır .

Bu bir sorun EFI sistemleri için değil yük dosya sistemi sürücüleri için yapılandırılmış (örneğin refind paketi ile sağlanır) FAT oldukça aptal dosya sistemi genel olduğunu ve bunları anlamıyor çünkü.

REFInd ile sağlanan UEFI dosya sistemi sürücülerini kişisel olarak kullanmıyorum, ancak çoğu dağıtım paket yöneticisi aracılığıyla yüklenebilen ve sadece kendi korkunç /bootsembolik yapılandırma ve rEFInd'in paketlenmiş UEFI dosya sistemi sürücülerini kullanmayı unutmuş bir rEFInd paketi içeriyor .

Benim yapılandırma

Bir keresinde bunun üzerine bir takım talimatlar yazdım ve buraya gönderdim , ancak şöyle görünüyor:

% grep esp /etc/fstab && 
> ls /esp/EFI

LABEL=ESP          /esp  vfat defaults      0 1
/esp/EFI/arch_root /boot none bind,defaults 0 0 

arch_root/  arch_sqsh/  arch_xbmc/  BOOT/  ipxe/

Bu yüzden bu iki satırı /etc/fstabişaretime koyup yeni linux kurulumlarını içerecek bir klasöre koydum /bootve neredeyse her şey için endişelenmek üzereydim. Ayrıca yapmam gerek:

cat /boot/refind_linux.conf 

"Arch" "root=LABEL=data rootflags=subvol=arch_root,rw,ssd,compress-force=lzo,space_cache,relatime"

refind-efiPaketi pacmanbirincisi üzerinden yüklemek dışında , istediğim kadar ayrı kurulum / konfigürasyon kurmak için gerekli olan budur. Bu dizginin büyük kısmının, çekirdek parametreleri olarak belirtilen btrfs'ye özgü mount seçeneklerinden oluştuğunu unutmayın. Daha tipik bir /boot/refind_linux.confolasılıkla şöyle görünür:

"Menu Entry" "root=/dev/sda2"

Ve hepsi bu.

rodsbooks.com

Hala ELILO'yu istiyorsan kurulum talimatlarını yukarıdaki linkte bulabilirsiniz. Eğer rEFInd istiyorsanız, oradaki ilk paragrafta buna linkler bulacaksınız. Temel olarak herhangi bir UEFI önyükleme yapılandırması yapmak istiyorsanız, önce rodsbooks.com adresini okuyun .


3

GRUB2 yerine LILO kullanıyorum. Dürüst olmak gerekirse, benim seçimim değildi - GRUB2 kurulumu Debian Live CD yükleyicide başarısız oldu, ancak başarılı olan LILO'yu kurma seçeneği vardı. Debian Stable ile çalışan 2 yaşında bir dizüstü bilgisayarım var. LILO benim için kusursuz çalışıyor.


1

LILO hala olduğu bile UEFI BIOS'larda ile, kullanışlı. UEFI, genellikle Linux çekirdeğini doğrudan yükleyebilir. Bu olsa da, UEFI kendisine bağlıdır.

Ancak, bir önyükleme seçim ekranına ihtiyacınız varsa, örneğin bir makinede birkaç işletim sistemine geçiyorsanız, küçük bir önyükleyici kullanışlı olabilir.

Yerine EXTLINUX kullanmayı düşünürdüm . Bu bir SYSLINUX çeşididir, ancak exttip bölümlerinde bulunur.

EXTLINUX'un güzelliği, daha genişletilebilir olmasına ve LILO'dan daha fazla seçeneğe sahip olmasına rağmen, aynı derecede basit olabileceği ve aktif olarak korunabileceğidir.


-1 (deb / ubuntu) çekirdek paketi EFI'yi güncellemez. (EFI, sembolik bağları destekleyen yazıları okumaz, bu yüzden cevabımı kullanamazsınız). LILO'ya daha yeni bir alternatif olarak EXTLINUX için +1. Bağlantınız, iyi bir işaret olan diğer bazı dosya sistemlerini desteklediğini gösteriyor. EFI desteği gerektiğinde biraz yeni görünüyor.
sourcejedi

@sourcejedi - yanılıyorsun. Uygun EFI dosya sistemi sürücülerinin yüklü olduğu bir EFI sistemi, sembolik bağlantıları kolayca yönetebilir.
mikeserv

Bazı nedenlerden dolayı, doğrudan syslinux.com sitesine bağlanmak yasaktır.
polemon

@mikeserv Biliyorum, ancak bir dosya sistemi sürücüsü yüklemek beni çoğu durumda biraz belirsiz gördü. Sürücüyü ve daha sonra çekirdeği yüklemek için bir çeşit EFI betiği (terminoloji?) Bile yüklemeniz gerekir. Oh, bahse girerim hiç kimse bu sürücüler için MS güvenli önyükleme imzalarına sahip değildir, bu yüzden başka bir kurtçuk: p.
sourcejedi

@sourcejedi - lütfen burada yazdığım cevabı okur musunuz? Ve evet - sürücüyü yüklemek için bazı araçlara ihtiyacınız olacak.
mikeserv

1

Hiçbir eşdeğerini hatırlamıyorum update-grub. Ancak hala Debian'da desteklenen eski bir sistem var. (ARM sunucumda uboot için kullanılır).

En son çekirdek, ile bağlanır /boot/vmlinuzve initrd /boot/initrd.img. Çekirdek paketi tarafından güncellendi. Önyükleyici, bunlara işaret eder ve her önyüklemedeki sembolik bağlantıyı kaldırır.

Yani bir kurtarma seçeneği alamayabilirsiniz. Her durumda, bu en yaygın şekilde test edilen seçenek olmayacak, bu yüzden çalışan bir önyükleme diskini :-) civarında tutmanız daha da tavsiye edilir.


Güncelleme: Amacınız modern bir bilgisayarda LILO kelimesini tam anlamıyla çalıştırmaktan başka bir şeyse, buradaki diğer cevap (lar) da açıklandığı gibi muhtemelen daha iyi alternatifler vardır :).

Yukarıdakiler yalnızca LILO'nun orijinal BIOS tabanlı sürümü için anlamlıdır. Modern donanım, aynı menüden güvenli bir şekilde önyükleme yapmak veya Windows 8'i başlatmak istemiyorsanız, EFI'nın üstüne BIOS uyumluluğu sağlıyor. Teorik olarak ELILO'yu çalıştırabilirsiniz ancak güvenli önyükleme veya Windows 8'i yüklemeyi desteklemiyor olabilir. ELILO artık genel olarak anlam ifade etmiyor.


öf. içinde / dan sembolik bağlar, /bootherhangi bir problem için kirli bir çözeltidir.
mikeserv

welp lilo öldü (ve uboot kullanımdan kaldırıldı) yani evet. Aklında ne vardı? İnsanlar henüz / boot için FAT kullanmıyorlar ... BootLoaderSpec iyi bir proje ama henüz orada değil ... ve bunun için iyi bir sebep var (kötü patentler, sadece EFI birlikte çalışabilmesi için verilen FLOSS uyumlu lisans).
sourcejedi

Bu iyi bir düzenleme oldu.
mikeserv
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.