Przy instalacji dowolnej dystrybucji Linuksa, w załączeniu praktycznie zawsze dostajemy, jeden z programów rozruchowych (bootloader), dzięki któremu będzie możliwy wybór systemu jaki pragniemy uruchomić. Ponieważ bootloader naprawdę się przydaje dopiero gdy mamy wiele systemów, więc w tym podręczniku nie bierzemy innego przypadku pod uwagę.

Konfiguracja LILO

edytuj
  1. logujemy się jako root (albo administrator, który ma uprawnienia do zapisywania plików w katalogu /etc)
  2. otwieramy do edycji plik /etc/lilo.conf (za pomocą dowolnego edytora tekstu, np. vi, emacs czy mcedit); w pliku tym są zapisane informacje jakie systemy operacyjne są na naszym komputerze zainstalowane, na jakich partycjach, oraz dodatkowe opcje bootloadera.

UWAGA! Po dokonaniu zmian w lilo.conf, należy uruchomić LILO. Jako root, wydajemy komendę "lilo". Dopiero po tym sprawdzane są zmiany w lilo.conf, jego składnia i bootloader jest wgrywany do MBR (Master Boot Record).

składnia lilo.conf

edytuj

opcje globalne

edytuj
 boot = /dev/dysk 

opcja służy do wskazania LILO gdzie ma szukać lilo.conf. Najczęściej jest to dysk z MBR (Master Boot Record)

 prompt 

Dzięki tej opcji LILO poczeka na nasz wybór. Nie przydatna gdy mamy zdefiniowany jeden kernel, niezbędna gdy wgraliśmy więcej niż jeden. Opcja nie przyjmuje argumentów

 timeout = 100

Czas oczekiwania na wybór użytkownika. Liczony w milisekundach. W przykładzie 10sekund.

 lba32

Pozwala na wgranie LILO poza pierwsze 1024cylindry dysku. Przydatne przy nowych BIOSach. Opcja nie przyjmuje dodatkowych argumentów.

 vga = 791

Pozwala na wybór rozdzielczości i palety kolorów dla konsoli. Lista rozdzielczości jest domyślnie dodawana, przy tworzeniu lilo.conf. Poniżej pełna lista w formacie: vga = numer - rozdzielczość x ilość kolorów

  vga=791 - 1024x768x64k
  vga=790 - 1024x768x32k
  vga=773 - 1024x768x256
  vga=788 - 800x600x64k
  vga=787 - 800x600x32k
  vga=771 - 800x600x256
  vga=785 - 640x480x64k
  vga=784 - 640x480x32k
  vga=769 - 640x480x256
  message = /boot/boot_message.txt

Wskazuje plik tekstowy który zostanie wyświetlony pod menu wyboru partycji. Drobna uwaga: Jeśli już używamy tej opcji, plik na który wskazuje "message" musi istnieć i musi coś w sobie zawierać ( nie może mieć 0-rowego rozmiaru), gdyż zaowocuje to błędem "Fatal: Empty map Section"

  change-rules

Używane z poniższym ze względów bezpieczeństwa. Gdy ktoś ma fizyczny dostęp do komputera, i chcemy zresetować opcje przekazane do kernela

  reset

Resetuje dodatkowe opcje przekazywane do kernela, podczas wyboru systemu. Używane by uniemożliwić zalogowanie się na root-a, bez podawania hasła.

  password=haslo123

Wymusza podanie hasła "haslo123"

  restricted

Zapobiega podaniu do Kernela dodatkowych opcji (np. init 1) - przejścia w tryb jednego użytkownika - roota

opcje wyboru systemu

edytuj
  image = /boot/vmlinuz

Wskazuje obraz kernela (jądra systemu) do wgrania.

  root=/dev/sda2

Wskazanie dysku, który ma być naszym / - głównym katalogiem

  initrd=/boot/map

Wskazanie dodatkowo mapy systemu, dla niektórych dystrybucji jest niezbędna. Drobna uwaga: Jeśli już używamy tej opcji, plik na który wskazuje "initrd" musi istnieć i musi coś w sobie zawierać ( nie może mieć 0-rowego rozmiaru), gdyż zaowocuje to błędem "Fatal: Empty map Section"

  label=nazwa

Nazwa pod jaką będzie figurował system w menu wyboru. Nie musi być podawana. (Może być pusta)

  read-only

Wymusza montowanie partycji w trybie tylko do odczytu. Opcja bezpieczeństwa. Dzięki temu nikt nie zmieni obrazu kernel-a, czy nie zniszczy partycji.

  other = /dev/hda

Używane zamiast "image" dla systemów innych niż *NIX-owe. Np. dla Windows-a czy DOSa. Dzięki tej opcji udajemy iż dysk jest primary master

  boot-as = 0x80

Zmienia domyślny sposób bootowania. Dzięki temu możliwe jest bootwanie np. Windows-a czy DOSa.

  map-drive 0x80 to 0x81
  map-drive 0x81 to 0x80

Mapuje, czyli rzutuje dysk linuxa, na dysk windows-a, potem odwrotnie. Używane do bootowania Windows-a czy DOSa.

przykład lilo.conf

edytuj

Przykładowy lilo.conf z użyciem ww. opcji. Ponieważ najlepiej się uczy na przykładzie, załączam plik konfiguracyjny LILO, taki jaki otrzymałem po zainstalowaniu Slackware 12.0. Komentarze zaczynają się od znaku hasha, innymi słowy wszystkie znaki do końca linii, po # będą ignorowane. Obiektem jest komputer z trzema systemami zainstalowanymi na dwóch dyskach SATA (nazwy dysków sda i sdb). Dwa linuxy, na sda2 i sda3. sda1 zawiera /boot, który jest wspólny dla obu systemów. Windows jest sdb2.

# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
lba32 # Allow booting past 1024th cylinder with a recent BIOS
boot="/dev/sda"
message = /boot/boot_message.txt
prompt
timeout="100"
password=L1n3&ux9
# Override dangerous defaults that rewrite the partition table:
change-rules
reset
# Normal VGA console
vga="791"
# VESA framebuffer console @ 1024x768x64k
# vga=791
# VESA framebuffer console @ 1024x768x32k
# vga=790
# VESA framebuffer console @ 1024x768x256
# vga=773
# VESA framebuffer console @ 800x600x64k
# vga=788
# VESA framebuffer console @ 800x600x32k
# vga=787
# VESA framebuffer console @ 800x600x256
# vga=771
# VESA framebuffer console @ 640x480x64k
# vga=785
# VESA framebuffer console @ 640x480x32k
# vga=784
# VESA framebuffer console @ 640x480x256
# vga=769
# End LILO global section

# Linux bootable partition config begins
image="/boot/vmlinuz-slack"
        root="/dev/sda2"
        label="Slackware_12"
        read-only
# Linux bootable partition config ends

# Linux bootable partition config begins
image = /boot/vmlinuz
        password=Cathy
        restricted
        root = /dev/sda3
        label = KateOS
        initrd = /boot/initrd
        read-only
# Linux bootable partition config ends

# Windows bootable partition config begins
other = /dev/sdb2
        label = Windows
        boot-as = 0x80
# Windows bootable partition config ends

przykład lilo.conf niezależnego od kontrolera dysku

edytuj

Poniższy przykład uniezależnia nas od zmiany kontrolera dysku. Wskazane id w opcjach boot i root zawsze wskazują na właściwą partycje, nie ważne czy system rozpoznaje ją jako: hda, hdb, hdc, hdd... czy sda,sdb,sdc,sdd... W przykładzie są też opcje dla 'splash screen-a' w postaci bitmapy:

boot = /dev/disk/by-id/ata-AA6666666A_6AA6A66A  #/dev/hdd
 bitmap = /boot/slack.bmp
 bmp-colors = 255,0,255,0,255,0
 bmp-table = 60,6,1,16
 bmp-timer = 65,27,0,255
 append="vt.default_utf8=1" ## przekaż do Kernela dodatkowe opcje. Tu, konsola w utf8
 prompt
 timeout = 50
 lba32
 vga = 791
 image = /boot/vmlinuz
  root = /dev/disk/by-uuid/a666aaaa-a6a6-6a6a-aa66-66a6aaaa666a #/dev/hdd1
  label = Slackware-13.0
  read-only  # Partitions should be mounted read-only for checking

Bootowanie Windows

edytuj

LILO potrafi oczywiście wystartować i systemy ze stajni Microsoftu. Konfiguracja jednak lekko się różni. Spójrzmy na parę przykładów. Wpierw Windows na innym dysku:

other = /dev/hdc2 # other, informuje iż system nie jest GNU/Linux.
label = windows # analogiczny wpis, jak dla linuxów. Tytuł jaki będzie widoczny w menu LILO.
boot-as = 0x80 # informuje by inaczej startować partycje z windowsem.

Metoda pierwsza

edytuj

Kolejny przykład. Tym razem windows i linux na jednym dysku.

# Linux:
image = /boot/vmlinuz
root = /dev/hdd1
label = Slackware
read-only
#Windows
other = /dev/hdd2
label = Windows
boot-as = 0x80

Metoda druga

edytuj

zamiast boot-as, możemy użyć składni na sposób GRUB-a

other = /dev/hdd2
label = Windows
map-drive = 0x80 to 0x81
map-drive = 0x81 to 0x80

Metoda trzecia

edytuj

W sieci można znaleźć jeszcze trzeci sposób bootowania Windowsa:

 other = /dev/hdd2
 label = Windows
 table = /dev/hdd