Gentoo Logo

1.  Wybór bootloadera

Wstęp

Gdy jądro zostało już skonfigurowane i skompilowane, do uruchomienia nowego systemu potrzebny jest bootloader. To, jakiego rodzaju bootloader należy wykorzystać, zależy od typu posiadanego komputera PPC.

Jeśli korzystamy z komputera NewWorld Apple lub IBM, jedyną możliwością jaką mamy jest bootloader yaboot. Dla OldWorld Apple istnieją dwie opcje: BootX (zalecany) i quik. Pegasos nie wymaga bootloadera, jednak w jego przypadku konieczne jest zainstalowanie programu bootcreator, aby możliwe było stworzenie bootmenu SmartFirmware.

1.  Domyślnie: Używanie yaboot

Wprowadzenie

Ważne: yaboot może być używany tylko na komputerach NewWorld Apple lub IBM!

W celu prawidłowego zlokalizowania urządzenia bootowalnego, yaboot potrzebuje węzłów sprzętowych utworzonych przez udev oraz systemu plików sysfs. Systemy te znajdziemy odpowiednio w /dev i /sys. Aby tego dokonać będziemy musieli dowiązać te systemy plików z płyty instalacyjnej do odpowiednich systemów wewnątrz środowiska chroot. Jeżeli już to zrobiliśmy, nie ma potrzeby, aby czynność tę powtarzać.

Listing 1.1: Dowiązywanie systemu plików /dev i /sys

# exit  (opuszczenie chroot)
# mount -o bind /dev /mnt/gentoo/dev
# mount -o bind /sys /mnt/gentoo/sys
# chroot /mnt/gentoo /bin/bash
# /usr/sbin/env-update && source /etc/profile 

Aby skonfigurować yaboota można wykorzystać program yabootconfig w celu automatycznego wygenerowania pliku konfiguracyjnego. Jeśli jednak instalujemy Gentoo na G5 (na którym yabootconfig nie zawsze działa) lub planujemy bootować system z urządzeń podłączanych poprzez firewire lub USB, musimy własnoręcznie przeprowadzić konfigurację yaboota.

Uwaga: W przypadku gdy do wygenerowania jądra użyto programu genkernel, konieczna będzie ręczna edycja pliku yaboot.conf, nawet jeśli wykorzystano yabootconfig. Sekcja obrazu jądra powinna zostać zmodyfikowana w następujący sposób (jako nazwę jądra i pliku initrd używamy pliku vmlinux i initrd):

Listing 1.1: Dodawanie argumentów właściwych dla jąder wygenerowanych programem genkernel do yaboot.conf

###########################################################
## This section can be duplicated if you have more than one
## kernel or set of boot options - the image and initrd
## with the exact filename of your kernel and initrd image.
###########################################################
image=/boot/kernel-genkernel-ppc-${kernel-gentoo}
  label=Linux
  root=/dev/ram0
  partition=3
  initrd=/boot/initramfs-genkernel-ppc-${kernel-gentoo}
  # You can add additional kernel arguments to append such as
  # rootdelay=10 for a USB/Firewire Boot
  append="real_root=/dev/sda3 init=/linuxrc"
  read-only
##########################################################

Domyślnie: Użycie yabootconfig

Yabootconfig automatycznie wykryje podział na partycje i umożliwi uruchamianie wybranego z dwóch lub nawet trzech systemów, którymi mogą być Linux, Mac OS i Mac OS X.

Aby móc używać yabootconfig konieczne jest posiadanie na dysku partycji Apple_Bootstrap oraz odpowiednich wpisów dotyczących istniejących partycji Linuksa w pliku /etc/fstab (należy mieć na uwadze, że partycja Bootstrap nie powinna znajdować się w naszym fstab). Obydwa warunki powinny być już spełnione - wszystkie operacje zostały opisane w poprzednich rozdziałach. Należy jednak upewnić się sprawdzając plik /etc/fstab.

Listing 1.1: Instalowanie yaboota z GRP

# emerge --usepkg yaboot

Następnie opuszczamy chroot i wykonujemy polecenie yabootconfig --chroot /mnt/gentoo. Po uruchomieniu programu zostaniemy poproszeni o potwierdzenie lokalizacji partycji bootstrap. W przypadku gdy używamy schematu podanego w tym podręczniku powinno to być partycja /dev/sda2. Należy wpisać Y, jeżeli zgadzamy się z wynikiem polecenia. Jeżeli tak nie jest, należy sprawdzić ponownie plik /etc/fstab. yabootconfig przeskanuje ustawienia naszego systemu, stworzy plik /dev/yaboot.conf i uruchomi polecenie mkofboot. Polecenie to używane jest do sformatowania partycji bootstrap oraz instalacji pliku konfiguracyjnego na tej partycji. Ponownie wracamy do środowiska chroot.

Listing 1.1: Powrót do chroot

# chroot /mnt/gentoo /bin/bash
# /usr/sbin/env-update && source /etc/profile

Być może wystąpi potrzeba modyfikacji zawartości pliku /etc/yaboot.conf. Jeśli zostaną wprowadzone do niego jakieś zmiany (jak na przykład zmiana domyślnie uruchamianego systemy), konieczne będzie uruchomienie ybin -v, aby zmiany odniosły skutek na partycji Apple_Bootstrap. Za każdy razem gdy zmieniamy zawartość yaboot.conf, musimy pamiętać o wykonaniu polecenia ybin -v, aby zaktualizować partycję bootstrap.

Po wykonaniu tych operacji, kontynuujemy instalację zgodnie z instrukcjami w podrozdziale Ponowne uruchomienie systemu.

Alternatywnie: Ręczna konfiguracja yaboot

Najpierw, należy zainstalować yaboot w systemie:

Listing 1.1: Instalowanie yaboota

# emerge --usepkg yaboot

Poniżej znajduje się przykładowy plik yaboot.conf. Konieczna jest jego modyfikacja w celu dopasowania do wymagań systemu i użytkownika.

Listing 1.1: /etc/yaboot.conf

## /etc/yaboot.conf
##
## Więcej szczegółów: "man yaboot.conf". Nie należy wprowadzać zmian przed
## zapoznaniem się ze stronami man yaboot.conf!!
## Przykładowe konfiguracje znajdują się w : /usr/share/doc/yaboot/examples
##
## Aby możliwe było uruchamianie innych systemów, należy dodać jedną lub
więcej
## z przykładowych pozycji:
## bsd=/dev/sdaX, macos=/dev/sdaY, macosx=/dev/sdaZ

## partycja bootstrap:

boot=/dev/sda2


## ofboot w Open Firmware służy do wyboru partycji startowej.
## Bez tego parametru, yaboot nie zadziała na G5 (dopóki nie zostaną
przekazane
## odpowiednie opcje do programu mkofboot/ybin).
## hd:X oznacza /dev/sdaX .
##
## Posiadacze G5 powinni odkomentować tą linię!

#ofboot=hd:2

## Bootujący z urządzeń firewire powinni użyć linii podobnej do poniższej:
# ofboot=fw/node/sbp-2/disk@0:

## Bootujący z urządzeń USB powinni użyć linii podobnej do poniższej:
# ofboot=usb/disk@0:

## hd: w terminologii Open Firmware oznacza hda
device=hd:

## Bootujący z urządzeń Firewire/USB muszą określić nazwę aparatu OF
## Można ją uzyskać przy użyciu programu ofpath, który jest dołączony do
yaboota.

# device=fw/node@0001d200e00d0207/sbp-2@c000/disk@0:


delay=5
defaultos=macosx
timeout=30
install=/usr/lib/yaboot/yaboot
magicboot=/usr/lib/yaboot/ofboot

#################
## Ta sekcja może zostać powielona w przypadku posiadania więcej niż
## jednego jądra lub zestawu parametrów startowych. Należy zastąpić
## nazwę obrazu dokładną nazwą pliku z naszym jądrem.
#################
image=/boot/${kernel-name}
  label=Linux
  root=/dev/sda3
  partition=3
#  append="rootdelay=10"  # Wymagane dla bootowania z urządzeń
USB/Firewire
  read-only
##################

## Użytkownicy G5 i niektórzy użytkownicy G4 powinni wykorzystać ustawienia:
##   macos=hd:13
##   macosx=hd:12
## zamiast przykładowych wartości.
macos=/dev/sda13
macosx=/dev/sda12
enablecdboot
enableofboot

Gdy plik yaboot.conf jest prawidłowo skonfigurowany, należy uruchomić mkofboot -v, czego efektem będzie sformatowanie partycji Apple_bootstrap i zainstalowanie na niej aktualnej konfiguracji. Jeśli yaboot.conf zostanie zmodyfikowany po utworzeniu partycji Apple_bootstrap, konieczne będzie zaktualizowanie ustawień przy użyciu polecenia ybin -v.

Listing 1.1: Ustawianie partycji bootstrap

# mkofboot -v

Więcej informacji o yabootcie uzyskać można na stronie projektu yaboot. Po skonfigurowaniu bootloadera kontynuujemy instalację zgodnie z instrukcjami w podrozdziale Ponowne uruchomienie systemu.

1.  Alternatywnie: BootX

Ważne: BootX może być używany tylko na systemach OldWorld Apple z zainstalowanym systemem MacOS 9 lub wcześniejszym!

Aby BootX mógł zbootować Linuksa z wnętrza MacOS-a, jądro systemu musi zostać przekopiowane z partycji Linuksa na partycję MacOS-a. Dokonamy tego montując najpierw partycję MacOS-a spoza środowiska chrootowanego, a następnie kopiując kernel do folderu systemowego, aby BootX mógł go odnaleźć. W celu określenia, na której partycji znajduje się MacOS użyjemy polecenia mac-fdisk -l (sda6 zostało poniżej użyte jako przykład).

Listing 1.1: Kopiowanie jądra na partycję MacOS-a

# exit
cdimage ~# mkdir /mnt/mac
cdimage ~# mount /dev/sda6 /mnt/mac -t hfs
cdimage ~# cp /mnt/gentoo/usr/src/linux/vmlinux "/mnt/mac/System Folder/Linux Kernels/${kernel-name}"

Jeśli użyto programu genkernel, to zarówno jądro, jak i initrd muszą zostać skopiowane na partycję MacOS-a.

Listing 1.1: Kopiowanie jądra i initrd wygenerowanych genkernelem na partycję MacOS-a

# exit
cdimage ~# mkdir /mnt/mac
cdimage ~# mount /dev/sda6 /mnt/mac -t hfs
cdimage ~# cp /mnt/gentoo/boot/kernel-genkernel-ppc-${kernel-gentoo} "/mnt/mac/System Folder/Linux Kernels"
cdimage ~# cp /mnt/gentoo/boot/initramfs-genkernel-ppc-${kernel-gentoo} "/mnt/mac/System Folder"

Gdy jądro zostało skopiowane, musimy ponownie uruchomić komputer i skonfigurować BootX.

Listing 1.1: Odmontowywanie wszystkich partycji i rebootowanie

cdimage ~# cd /
cdimage ~# umount /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo/sys /mnt/gentoo /mnt/mac
cdimage ~# reboot

Oczywiście należy usunąć wszystkie bootowalne nośniki, ponieważ teraz powinien uruchomić się MacOS.

Gdy uruchomiony zostanie MacOS, otwieramy panel sterowania BootX. Jeśli nie korzystaliśmy z genkernela, wybieramy Options i odznaczamy Use specified RAM disk. Natomiast jeśli użyliśmy genkernela, musimy upewnić się, że initrd genkernela jest wybrany zamiast initrd płyty instalacyjnej. Użytkownicy niekorzystający z genkernela mogą określić teraz partycję root - podajemy tutaj wartość odpowiadającą naszemu podziałowi dysku. W zależności od konfiguracji jądra można dodać inne argumenty.

Program BootX można skonfigurować tak, aby automatycznie startował Linuksa. Jeśli się na to zdecydujemy, najpierw zobaczymy ekran ładowania MacOS, a następnie, już w trakcie wczytywania systemu, BootX załaduje i wystartuje Linuksa. Więcej informacji można uzyskać na Stronie domowej BootX.

Ważne: Należy upewnić się, że posiadamy w jądrze wkompilowane wsparcie dla systemu plików HFS oraz HFS+, w przeciwnym razie nie będziemy mogli zaktualizować lub zmienić jądra na naszej partycji.

Następnie jeszcze raz restartujemy komputer, uruchamiamy Linuksa i kontynujemy instalację zgodnie z instrukcjami w rozdziale (Finalizowanie instalacji Gentoo).

1.  Alternatywnie: quik

Program quik pozwala na bootowanie z pominięciem MacOS-a na komputerach OldWorld. Nie jest to jednak dobrze wspierane i zalecane rozwiązanie, gdyż może spowodować występowanie licznych dziwactw. Jeśli tylko istnieje taka możliwość, zalecane jest korzystanie z programu BootX zamiast quik, ze względu na znacznie większą stabilność i łatwiejszą konfigurację tego pierwszego.

Jeśli mimo wszystko zdecydujemy się na to rozwiązanie, postępujemy zgodnie z poniższymi instrukcjami. Po pierwsze musimy zainstalować quik:

Listing 1.1: Emergowanie quik z GRP

# emerge --usepkg quik

Następnie musimy dokonać jego konfiguracji. Edytujemy plik /etc/quik.conf ustawiając w nim obraz naszego jądra, które skopiowaliśmy na partycję boot.

Listing 1.1: Konfigurowanie quik.conf

# Przykładowy plik quik.conf
init-message = "Gentoo 2008.0\n"
# Partycja boot
partition = 2
root = /dev/sda4
timeout = 30
default = gentoo
# To jest nasze jądro
image = /${kernel-name}
label = gentoo

Plik quik.conf musi znajdować się na tym samym dysku co bootowalny obraz, ale niekoniecznie na tej samej partycji. Jest jednak wskazane, aby przenieść go do partycji boot.

Listing 1.1: Przenoszenie quik.conf do /boot

# mv /etc/quik.conf /boot/quik.conf

Teraz musimy ustawić zmienne związane z bootowaniem, aby quik był uruchamiany. Użyjemy do tego programu nvsetenv. To, jakie zmienne musimy ustawić, zależy od komputera jaki posiadamy. Zaleca się odszukanie prawidłowych wartości quirks przed rozpoczęciem konfiguracji.

Listing 1.1: Ustawianie zmiennych związanych z bootowaniem

# nvsetenv auto-boot true # Ustawiamy "false", aby uruchamiać
# OF; nie wszystkie komputery mogą korzystać z trybu OF
# nvsetenv output-device video # Wartość wybieramy na podstawie powyższej strony quirks
# nvsetenv input-device kbd
# nvsetenv boot-device scsi/sd@1:0 # Dla SCSI
# nvsetenv boot-device ata/ata-disk@0:0 # Dla ATA
# nvsetenv boot-file /boot/${kernel-name} root=/dev/sda4
# Pierwszy element wskazuje ścieżkę do jądra, drugi do partycji root. Dodać tu można wszelkie inne opcje jakie chcemy przekazać do jądra.
# nvsetenv boot-command boot # Ustawiamy "bye" dla MacOS i "boot" dla Linuksa

Uwaga: Możliwa jest także modyfikacja zmiennych związanych z bootowaniem z poziomu MacOS-a. W zależności od posiadanego modelu należy użyć bootvars lub Apple System Disk. Warto odwiedzić powyższą stronę quirks w celu uzyskania szerszych informacji na ten temat.

Gdy ustawiliśmy już opcje uruchamiania, musimy upewnić się, że bootowalne obrazy są poprawnie zainstalowane. Uruchamiamy quik -v -C /boot/quik.conf. Powinniśmy uzyskać informację, że posiadamy boot block QUIK.

Uwaga: Jeśli coś poszło nie tak, możemy zresetować PRAM do ustawień domyślnych poprzez kombinację command + option + p + r, przed uruchomieniem naszego komputera. Wyczyści to wartości jakie ustawiliśmy przy pomocy programu nvsetenv i powinno umożliwić uruchomienie zarówno z bootowalnej płyty MacOS-a jak i z płyty instalacyjnej Linuksa.

Kolejnym krokiem jest Ponowne uruchomienie systemu.

1.  Alternatywnie: BootCreator

Ważne: BootCreator stworzy menu bootowania SmartFirmware napisane dla komputerów Pegasos.

Po pierwsze, upewnijmy się, że mamy zainstalowaną najnowszą wersję programu bootcreator:

Listing 1.1: Instalowanie programu bootcreator z GRP

# emerge --usepkg bootcreator

Teraz przekopiujmy plik /etc/bootmenu.example do /etc/bootmenu i zmodyfikujmy go, aby odpowiadał naszym potrzebom:

Listing 1.1: Edycja pliku configuracyjnego programu bootcreator

# cp /etc/bootmenu.example /etc/bootmenu
# nano -w /etc/bootmenu

Poniżej znajduje się przykładowy plik /etc/bootmenu. Zmienne vmlinux oraz initrd powinny zostać zamieniony na nazwy obrazów z naszym jądrem i plikiem initrd.

Listing 1.1: Plik konfiguracyjny programu bootcreator

#
# Przykładowy plik dla programu bootcreator 1.1
#

[VERSION]
1

[TITLE]
Boot Menu

[SETTINGS]
AbortOnKey = false
Timeout    = 9
Default    = 1

[SECTION]
Local HD -> Morphos      (Normal)
ide:0 boot2.img ramdebug edebugflags="logkprintf"

[SECTION]
Local HD -> Linux (Normal)
ide:0 ${kernel-name} video=radeonfb:1024x768@70 root=/dev/sda3

[SECTION]
Local HD -> Genkernel (Normal)
ide:0 kernel-genkernel-ppc-${kernel-gentoo} root=/dev/ram0 real_root=/dev/sdaa3 init=/linuxrc initrd=initramfs-genkernel-ppc-${kernel-gentoo}

Następnie musimy skopiować plik bootmenu na partycję boot, aby SmartFirmware mógł go odczytać. Użyjemy do tego programu bootcreator:

Listing 1.1: Instalowanie bootmenu

# bootcreator /etc/bootmenu /boot/menu

Uwaga: W czasie rebootowania musimy upewnić się, że menu jest plikiem, który zostanie załadowany jako domyślny.

Następnym etapem instalacji jest Ponowne uruchomienie systemu.

1.  Ponowne uruchomienie systemu

Opuszczamy środowisko chrootowane i odmontowujemy wszystkie partycje, aby możliwe było czyste ponowne uruchomienie. Następnie używamy komendy reboot.

Listing 1.1: Opuszczanie chroot, odmontowywanie partycji i rebootowanie

# exit
livecd ~# umount /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo/sys /mnt/gentoo
livecd ~# reboot

Gdy nasze nowe Gentoo uruchomi się, kończymy instalację zgodnie z instrukcjami w rozdziale (Finalizowanie instalacji Gentoo).

Zaktualizowano 2 maja 2008

Oryginalna wersja dokumentu nie jest już aktualizowana

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.