Linux / xBSD GRUB'dan önce nasıl başlatıldı?


23

Wikipedia'ya göre , GRUB 1995 yılında piyasaya sürüldü. Bu noktada Linux ve xBSD birkaç yıl boyunca vardı. Unix sürümlerinin 70'li ve 80'li yıllardaki donanıma bağlı olduğunu biliyorum, ancak Linux ve xBSD dağıtmak ve kurmakta serbestti. Hangi soru sorulur, Linux'u o zaman nasıl başlatırsınız? Dağıtımlar kendi önyükleyici uygulamalarıyla gönderiyor muydu?


32
Umm ... LILO'nun tek Linux önyükleyicisiyken buralarda değildin mi? Ve BSD sistemlerimde hiçbir zaman LILO veya Grub kullanmamıştım. Hangisine ilgi duyuyorsunuz? Bakınız örn biosboot(8).
Kusalananda

8
@Kusalananda Ne yazık ki, oyuncaklara daha fazla değer verdim ve Ninja Kaplumbağalarını daha çok borulardan, idamlardan ve mermilerden çekerek :) Özgün bootloader değil genel tarihle ilgileniyorum. Bağladığınız sayfadan OpenBSD'nin biosbootiki mimariye sahip olduğunu görüyorum , i386 ve amd64. Bu, OpenBSD'nin özellikle bir birleştirme aracına sahip olmak yerine mimarileri hedeflemesi gerektiği anlamına mı geliyor?
Sergiy Kolodyazhnyy

1
İlk aşamada bootloader her mimari için farklı olurdu (sadece i386 ve amd64'ün zaten bir "bios" BIOS'u var). Bataklık standart PC'den daha egzotik mimarilerle ilgileniyorsanız NetBSD'ye bakın.
Kusalananda

3
@Kusalananda LILO'nun hiç bir zaman Linux önyükleyici olduğunu sanmıyorum. Bildiğim kadarıyla çekirdeğin içine yerleştirilen yükleyici LILO'yu yiyor ve zamanla yerleşik yükleyiciye verilen destek durduruldu, etrafta en az bir avuç dolusu yükleyici vardı.
kasperd

2
LILO, 2000'li yılların başına kadar birçok dağıtım için varsayılan önyükleyiciydi
phuclv

Yanıtlar:


51

90'larda kullandığım ilk Linux dağıtımı ( Slackware 3.0IIRC) LILO'yu bir bootloader olarak kullandı . Ve LILOyıllar boyunca kullanılan birçok dağıtım GRUB"varsayılan" önyükleyici oldu.

Ayrıca, Linux'un ilk yıllarında, bir bootloader / dual boot'a güvenmek yerine Linux'u başka bir işletim sisteminden (yani DOS veya Windows) başlatmak yaygındı. Örneğin, loadlin vardı .

Kendiliğinden yüklenebilen USB yükleme / kurtarma dağıtımlarında sıkça kullanılan basit bir önyükleyici olan Syslinux'ü unutmayın . Veya birçok "Canlı" dağıtım tarafından kullanılan Isolinux (aynı projeden).

Bugün GRUBbirçok işletim sistemini yüklemek için kullanılabileceğini, LILObunun daha sınırlı olduğunu ve özellikle Windows'ta çift önyükleme desteği ile Linux'u (yani LInux LOader) hedeflediğini unutmayın.
GRUB... çünkü vb pek çok ayarlanabilir seçenekleriyle, kodlanabilirliğini, ikili / çok önyükleme için çok yararlıdır
gerektiğini sadece makinenizde tek OS isterseniz "herhangi" (yani hangisi bootloader Linux / BSD dağıtımı için varsayılan) yeterli ol.


5
@ MrShunz: O zamanlar UEFI yoktu. Önyükleme pencereleri, örneğin other=/dev/hda1ile table=/dev/hdaolan girişlerini ekleme meselesiydi lilo.confve lilo, bölüm tablosunun hda'da olacağını bilerek, hda1'deki önyükleme sektörüne kontrolü transfer ederdi.
ninjalj

2
LILO'yu yüklemek için NTLDR'yi elde edebiliyordunuz; bkz jaeger.morpheus.net/linux/ntldr.php ; Aynısını bağımsız olarak, gün içerisinde keşfettim.
Roger Lipscombe

2
LILO yaklaşımının dezavantajı, yüklenecek dosyaların diskinin konumu değişirse kırılmasıdır. Özellikle bu, LILO'nun her çekirdek güncellemesinden sonra önyükleme konumuna (MBR veya bölüm önyükleme sektörü) yeniden yazılması gerektiği anlamına gelir.
plugwash

1
@plugwash: GRUB ikinci aşama dosyasıyla aynı sorunu yaşıyor. Fark burada LILO 1) "İkinci aşama" olduğunu idi o çekirdek güncellemeleri, şeyler kırdı değil LILO güncellemeler bu yüzden çekirdek; ve 2) GRUB güncellemeleri, ikinci aşamadaki konumun MBR'ye otomatik olarak yeniden yazılmasını içerir (ikinci aşamada daha sonra Linux çekirdeği yüklenir, dosya sistemi hakkında tam bilgi sahibi olur, böylece çekirdek konumu önemli değildir). ;-)
DevSolar

1
IIRC grub, eğer mümkünse, MBR ile ilk bölüm arasında dosya sistemini anlayan bir "aşama 1.5" depolayacak ve yalnızca aşama 1.5 için yer yoksa (ya da kurmakta ise MBR yerine bölüm önyükleme kesimi)
plugwash

28

LILO , Grub'dan önce PC'lerde Linux'u başlatmak için fiili bir standarttı (çok ilk aşamada (ilk Linux dağıtımlarından biri olan MCC kullandı).). Çeşitli başka önyükleyiciler eş zamanlı olarak kullanıldı. Loadlin oldukça yaygındı; Linux'u DOS'tan başlattı ve hatta bazı yapılandırmalarda umsdosbir Linux ortamını bir DOS dosya sisteminde barındırmak için bile kullanıldı ... Başka bir genel yapılandırmada bir bootloader içermiyordu: çekirdek kendini bir disketten başlatabilirdi ve çoğu Linux kullanıcıları iyi bilinen bir çift “boot and root” disketi tuttu, biri çekirdeği, diğeri kurtarma amaçlı temel bir kök dosya sistemi.

Linux'u önyüklemek için diğer işletim sistemlerinin önyükleyicilerini kullanmanın birkaç yolu vardı; örneğin, OS / 2'nin önyükleme yöneticisi veya Windows NT'nin NTLDR'si.

Diğer sistemlerin kendi önyükleyicileri vardı:

  • SPARC'taki SILO (Sun iş istasyonları ve diğerleri);
  • PA-RISC'deki PALO (HP iş istasyonları);
  • PowerPC'de YaBoot ve Quik;
  • Alpha üzerinde aBoot ve MILO ...

Bugünlerde bile Grub göreceğiniz tek bootloader değil. Çekirdek önyüklemesini doğrudan disketten almak artık çok kullanışlı olmamakla birlikte (hala mümkün olup olmadığını kontrol etmedim, diskete sığacak kadar küçük bir çekirdek oluşturabildiğinizi varsayarak), doğrudan EFI'den (etkin bir şekilde Grub gibi diğer işletim sistemlerini yüklemek için tasarlanmış kendi küçük işletim sisteminiz vardır) Birçok küçük sistemde (gömülü sistemler, tek kartlı bilgisayarlar ...) U-Boot'u bulacaksınız . (Ayrıca U-Boot için bir EFI katmanı var .)


PowerPC mimarisi de ilginç çünkü bazı anakartlarda Turing-komple BIOS - Openfirmware (temelde önceden kurulmuş bazı fonksiyonlara sahip bir Forth programlama dili) vardı. BIOS'unuzu nasıl yapılandıracağınızı biliyorsanız, bu durum bootloader olmadan doğrudan BIOS'tan önyüklemeye izin verdi
slebetman

Hey, merak ediyorum, NTLDR doğrudan linux çekirdeğini yükleyebilir mi? NTLDR'nin grub4dos zincirleme makinesini çalıştırabileceğini ve ardından linux çekirdeğini yükleyebileceğini duydum.
德里克 薯条 德里克

@slebetman: Daha doğrusu OpenFirmware, Sun for SPARC tarafından geliştirildi ve daha sonra PowerPC Referans Mimarisi için PowerPC ittifakı (IBM, Apple, Motorola) ve özellikle PowerPC tabanlı Macintosh'lar için Apple tarafından kabul edildi. Güçlü yönlerinden biri, basit sürücülerin genişletme kartlarındaki ROM yongaları içinde veya bir HDD'nin belirlenmiş bazı önyükleme alanlarında saklanabilmesi ve bilinen bir ABI'ye göre bytecode ile yazılmış olmalarından, hangi CPU'dan bağımsız olarak çalışacaklarıydı. mimarisi ve işletim sistemi önyüklemeye çalıştığınız.
Jörg W Mittag

Örneğin, bir ROM yongası içinde OpenFirmware sürücüsüne sahip RAID adaptörünüz olabilir, ardından OpenFirmware ortamı bu sürücüyü RAID'e erişmek için kullanabilir, RAID içinde OFW ortamına izin verecek olan bölüm tablosu formatı için başka bir sürücü olabilir. bölümleri bulmak için, her bölümün başında, OFW sisteminin çekirdeği bulmasına izin verecek bir dosya sistemi için OFW sürücüsü olacaktı ve çekirdeğin başında OFW bayt kodu ile yazılmış küçük bir önyükleyici olacaktı.
Jörg W Mittag

GRUB benzer şekilde çalışabilir, ancak fark bu sürücülerin tümünün özellikle GRUB için yazılması gerektiğidir, bununla birlikte OFW'nin güzelliği, aygıtın sürücülerini de yanına almasıydı; OFW ortamı yazıldığı zaman, sadece "sihirli bir şekilde" çalışacaktı. UEFI de benzer şekilde çalışabilir, ancak “taşınabilir bayt kodu formatı” aslında Itanium'ların hala x86 emülatörüne ihtiyaç duymalarının ana nedeni olan DOS'un bir alt kümesidir.
Jörg W Mittag

12

2.6 çekirdeklerin ortasına kadar, x86 çekirdeği, bir diskete kopyalandığında doğrudan önyüklenebilirdi (sanki bir disk görüntüsü gibi).

Aslında bu, Linux'u başlatmanın orijinal yoluydu.

Bugün bir x86 çekirdeğinin başlığına bakarsanız, artık böyle bir disketten önyükleme yapılmadığını belirten bir hata mesajı görüyorsunuz.


2
Öte yandan, x86 çekirdeği şimdi bir UEFI ürün yazılımına verilirse doğrudan önyüklenebilir durumdadır. Demek hala çekirdeğin önünde
sıkışmış bir inişli bagaj yükleyici var

@grawity: x64 demek istemediğinize emin misiniz?
Joshua,

1
@Joshua: Bununla ne demek istediğinizi anlamadım. EFI bu bölümü kod olarak kullanmıyor.
saat

2
@Joshua ne? 16-bit modunda “DEC BP”, “POP DX” (32-bit modunda EBP / EDX). Ancak yine de yürütülmemelidir; EFI ikilileri PE dosyalarıdır (bir önyükleme sektörüne yazılmışsa elbette önemli değil).
Stephen Kitt

1
@Joshua Tamam, ama beynimdeki tanımsız x86 davranışı değil ;-). (“Tanımlanmamış x86 davranışı” nı, davranışı tanımlanmamış, tanımlanmamış platform davranışı olarak tanımlanmayan kodlar olarak düşünüyorum.)
Stephen Kitt

5

Linux ile 90'ların sonunda başladım ve dediğim gibi lilovarsayılan. DOS sistemiyle çift önyükleme yapmak istiyorsanız, HIMEM'e veya CD sürücülerini vb loadlin. Yüklemeden ve kullanmadan bir önyükleme yapabilirsiniz . Win95 çift önyüklemesi için, sürücüyü önce DOS ile önyüklenebilir hale getirebilir, ardından '95'i yükleyebilir ve '95'in önyükleyici yükleyicisi DOS çekirdeğini hala önyüklemenize izin verir ve sonra da kullanabilirsiniz loadlin.

NT4 ile çift önyükleme yapmak için püf, /bölüme LILO yazmak , sonra dd( dd if=/dev/sda2 of=/path/to/file bs=512 count=1) kullanarak ilk 512 bayttan soyun ve elde edilen dosyayı ntldrgörebileceği bir yere koymak ve WinNT'nin boot yükleyicisinden kullanabilmeniz oldu. Bunu yapmanın sorunu, çekirdeğinizi yükselttiğinizde, yeniden başlatmadan önce tüm adımları tekrarlamayı hatırlamanız gerektiğidir, aksi takdirde Linux sistemine geri dönme sorunlarınız olur. Aynı işlem Win2k ile çalıştı.

LILO ile, çekirdek ne zaman güncellendiyse, LILO'yu güncellemeyi hatırlamanız gerekiyordu.

İle loadlinçekirdek güncellenmiş herhangi bir zamanda, size DOS bölümü için çekirdek dışarı kopyalamak hatırlamak zorunda kaldı.

Diğer cevaplarda belirtilen diğer bir seçenek de, çekirdeği doğrudan bir diskete yazmaktı, dd if=/path/to/vmlinuz of=/dev/fd0ancak BUT kullanarak kök aygıtın ya derleme zamanında ya da rdevyardımcı programı kullanarak çekirdeğe uygun şekilde ayarlanması gerekiyordu .

Geldiğinde GRUB, artık çok sevindirici oldu çünkü artık LILO'yu güncellemek ya da LILO'yu güncellemek ve önyükleme bilgilerini yeniden silmek gibi şeyleri artık hatırlamak zorunda kalmadınız, vb. bilgi...


Öyle bir iş vardı ki ve o zamanlar önyüklemeyen makineyle bırakılma şansı yüksek, ama kesinlikle eğitimsel bir deneyim
Sergiy Kolodyazhnyy

@SergiyKolodyazhnyy evet, ve internette böyle bir bilgi hazinesi yoktu, ya da varsa, onu bulmak için harika arama motorları yoktu. LILO'yu önyüklemek ve düzeltmek için yeterli Linux'a sahip birkaç disket kurtarma dağıtımı vardı, vb. Uzun bir yol kat ettik!
ivanivan

Koşmak make installkoşuyor /sbin/lilo, bu yüzden gerçekten hiçbir şeyi elle güncellemeniz gerekmiyordu (ve eğer lilokuruluysa yine de geçerli olabilir ). Bu bir fikir meselesi olabilir, ama grubtam tersine çok sevindiğini hatırlamıyorum . Ve lilo(en azından 1999 sürümü) çift önyükleme penceresine gerek yok, sadece iyi olabilir loadlin.
mosvy

0

LILO ve GRUB'dan önce, bir tür özel önyükleyici programı ile komut satırından başlatmak zorunda kaldınız.

Örnek olarak, Amiga'da Linux mevcuttu. Çekirdek ELF'yi belleğe yüklemek ve atlamak için amiboot adlı bir komut satırı yardımcı programını kullanmak zorundaydınız.

İşte bir Amiga 600 üzerinde linux başlatmak için komut satırından amiboot kullanan birinin bir videosu . Onun StartInstall betiği amiboot çalıştırılabilirini çağırıyor. Amiboot yapılandırma hafızasını izleyebilir, istenen yükleme adresini bulabilir ve parametreleri saat 0:55 civarında çekirdeğe iletebilirsiniz.

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.