声明: 本手册已经被新版本代替了,不再被维护。 |
现在,您已经配置并编译好了内核,你将需要一个引导程序来启动你新安装的Linux。接下来将要使用的引导程序与你所拥有PPC机器的类型有关。
如果你使用的是NewWorld架构的Apple或IBM机器,你需要使用yaboot。OldWorld架构的Apple机器有两个选择,BootX(推荐)和quik。虽然Pegasos机器并不需要一个引导程序,但是你仍然需要emerge bootcreator来创建SmartFirmware启动菜单。
重要: yaboot只能用于NewWorld架构的Apple和IBM系统中! |
为了能找到启动设备,yaboot需要能访问到在启动中由udev创建的设备节点以及sysfs文件系统。这两个文件系统分别可以在/dev以及sys下找到。为了达到这样的效果,你需要把安装光盘中根目录下的这两个文件系统“bind mount”到chroot环境中的/dev和/sys挂载点上。如果你已经bind mount了这些文件系统,那就没有必要再做了。
代码 2.1: Bind mount device和sysfs文件系统 |
# exit # 这个命令会退出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 |
为了设置yaboot,你可以使用yabootconfig来为你自动创建一个配置文件。如果你在一台G5上安装了Gentoo(在这上面yabootconfig可能并不能正常工作),或者你计划从firewire或USB设备启动,那么你就需要手动配置yaboot了。
注意: 当使用genkernel的时候,你需要手动修改yaboot.conf,即使yabootconfig已经使用过也需要修改。内核映像中的yaboot.conf需要做如下修改(使用vmlinux和initrd作为内核和initrd映像文件的名字): |
代码 2.2: 将genkernel启动参数加到yaboot.conf中 |
########################################################### ## 如果你有一个以上的内核或是启动选项的组合,这部分内容可以被复制 ## ——用你内核和initrd映像的确切名字替换image和initrd的值。 ########################################################### image=/boot/kernel-genkernel-ppc-2.6.24-gentoo-r5 label=Linux root=/dev/ram0 partition=3 initrd=/boot/initramfs-genkernel-ppc-2.6.24-gentoo-r5 # 你可以在此附加上额外的内核参数比如rootdelay=10用于USB/Firewire启动 append="real_root=/dev/sda3 init=/linuxrc" read-only ########################################################## |
yabootconfig会自动侦测在你机器上的分区并会设置诸如Linux、Mac OS和Mac OS X这样的双重或三重的启动组合。
为了能使用yabootconfig,你的硬盘上必须拥有一个Apple_Bootstrap分区,并且/etc/fstab必须能反映出你的Linux分区状况(请注意Bootstrap分区不应该在你的fstab文件中)。虽然这些步骤应该已经完成了,但是还是请检查/etc/fstab后再进行下一步。现在可以安装yaboot了。
代码 2.3: 从GRP方式安装yaboot |
# emerge --usepkg yaboot
|
现在退出chroot并运行yabootconfig --chroot /mnt/gentoo。首先,程序会确认bootstrap分区的位置。如果你使用了建议的磁盘分区布局,那你的bootstrap分区应该是/dev/sda2。如果输出正确请键入Y。如果出现错误,请再次仔细检查你的/etc/fstab。yabootconfig会接着扫描你的系统设置,创建/etc/yaboot.conf并运行mkofboot。mkofboot是格式化Apple_Bootstrap分区以及安装yaboot的配置文件用的。在此之后请再次进入chroot。
代码 2.4: 重新进入chroot |
# chroot /mnt/gentoo /bin/bash # /usr/sbin/env-update && source /etc/profile |
你可能需要校验/etc/yaboot.conf的内容。如果你在/etc/yaboot.conf中做了些更改(比如设置默认/启动的操作系统),请确保再次运行一次ybin -v以便将这些更改应用到Apple_Bootstrap分区中去。无论何时你对yaboot.conf做了任何改动,比如测试一个新内核时,永远记得要运行ybin -v来用以更新bootstrap分区。
接下来请阅读重启系统。
首先确保你已经在系统上安装了yaboot:
代码 2.5: 从GRP方式安装yaboot |
# emerge --usepkg yaboot
|
虽然下面给出了一个yaboot.conf示例文件,但是你仍然需要通过修改它来满足你自己的要求。
代码 2.6: /etc/yaboot.conf |
## /etc/yaboot.conf ## ## 运行:“man yaboot.conf”可以得到更多详细帮助。在未看帮助前请不要做任何改动!! ## 也可以参考:/usr/share/doc/yaboot/examples可以得到一些配置的示例。 ## ## 如果需要双重启动菜单,请添加以下一项或多项: ## bsd=/dev/sdaX, macos=/dev/sdaY, macosx=/dev/sdaZ ## bootstrap分区: boot=/dev/sda2 ## ofboot是Open Firmware的指定bootstrap分区的方式。 ## 如果没有定义过这个变量,则yaboot会在G5和某些G4机器上失效(除非 ## 你将一些必要的参数传给mkofboot/ybin程序)。 ## hd:X表示/dev/sdaX。 ## G5用户应该去掉这一行的注释!! #ofboot=hd:2 ## 使用firewire启动的用户应该使用类似下面这行的指定方式: # ofboot=fw/node/sbp-2/disk@0: ## 使用USB启动的用户应该使用类似下面这行的指定方式: # ofboot=usb/disk@0: ## hd:代表OpenFireware能看到的第一个硬盘的缩写 device=hd: ## Firewire和USB用户需要指定整个OF设备名 ## 这个可以通过使用ofpath找到,它也同时包含在yaboot中。 # 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 ########################################################### ## 如果你有一个以上的内核或是启动选项的组合,这部分内容可以被复制 ## ——用你内核映像的确切名字替换image值。 ########################################################### image=/boot/kernel-2.6.24-gentoo-r5 label=Linux root=/dev/sda3 partition=3 # append="rootdelay=10" # 从USB/Firewire启动时必需 read-only ################## ## G5用户和某些G4用户需要设置 ## macos=hd:13 ## macosx=hd:12 ## 用以替代示例值。 macos=/dev/sda13 macosx=/dev/sda12 enablecdboot enableofboot |
一旦yaboot.conf配置完成,运行mkofboot -v来格式化Apple_bootstrap分区并安装配置好的设定。如果你在Apple_bootstrap分区创建好后修改了yaboot.conf,你可以运行ybin -v来更新设定。
代码 2.7: 配置bootstrap分区 |
# mkofboot -v
|
更多关于yaboot的信息,你可以参看yaboot项目。现在,请阅读重启系统来继续安装。
重要: BootX只能用于使用MacOS 9及更早的操作系统的OldWorld架构的Apple机器! |
因为BootX需要从运行着的MacOS里启动Linux,所以需要将内核从Linux分区拷贝到MacOS分区。首先,从chroot环境外挂载MacOS分区。使用mac-fdisk -l来查找MacOS分区号,这里使用sda6作为示例。当这个分区被挂载起来后,我们就要将内核拷贝至系统目录以便BootX能够找得到它。
代码 3.1: 将内核拷贝至MacOS分区 |
# 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-2.6.24-gentoo-r5" |
如果使用的是genkernel,内核和initrd都需要拷贝至MacOS分区。
代码 3.2: 将genkernel生成的内核和initrd拷贝至MacOS分区 |
# exit cdimage ~# mkdir /mnt/mac cdimage ~# mount /dev/sda6 /mnt/mac -t hfs cdimage ~# cp /mnt/gentoo/boot/kernel-genkernel-ppc-2.6.24-gentoo-r5 "/mnt/mac/System Folder/Linux Kernels" cdimage ~# cp /mnt/gentoo/boot/initramfs-genkernel-ppc-2.6.24-gentoo-r5 "/mnt/mac/System Folder" |
现在内核已经拷贝完毕,我们需要重启来设置BootX。
代码 3.3: 卸载掉所有的分区并重启 |
cdimage ~# cd / cdimage ~# umount /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo/sys /mnt/gentoo /mnt/mac cdimage ~# reboot |
当然,请不要忘记将可启动的CD从光驱中取出,否则机器会再次启动CD,而不是MacOS。
一旦机器启动至MacOS,打开BootX控制面板。如果你没有使用genkernel,选择Options后取消掉Use specified RAM disk。如果你使用了genkernel,请确认你使用的是genkernel生成的initrd而不是安装CD中的initrd。如果你使用的不是genkernel,这儿有个选项用于指定机器的Linux根磁盘和分区。请用适当的值将这些都填好。根据内核的配置情况,可能还会增加一些额外的启动参数。
您可以配置BootX让MacOS在启动时自动启动Linux。如果你这样做了,你将会先看到你的机器启动了MacOS,然后在启动时,BootX会装载并启动Linux。更多详细信息请看BootX主页。
重要: 确保在你的内核中已经有了HFS和HFS+文件系统的支持,否则你将无法升级或改变位于你MacOS分区中的内核。 |
现在重新启动并启动至Linux中,并请继续阅读结束你的Gentoo安装。
quik允许OldWorld架构的Mac机器不需要MacOS就能启动。然而,这个功能的实现并不完美而且有一些古怪行为。如果你能用BootX,我们建议你还是用BootX而不要用它,毕竟前者比起后者更可靠且易于设置。
首先,我们需要安装quik:
代码 4.1: 从GRP形式Emerge quik |
# emerge --usepkg quik
|
接下来,我们需要设置它。修改/etc/quik.conf并把image设置为已经拷贝至你的启动分区中的那个内核映像。
代码 4.2: 配置quik.conf |
# quik.conf示例 init-message = "Gentoo 2008.0\n" # 这个是启动分区 partition = 2 root = /dev/sda4 timeout = 30 default = gentoo # 这个是你的内核 image = /kernel-2.6.24-gentoo-r5 label = gentoo |
你的quik.conf文件必须和quik启动镜像存放在相同的磁盘上,它也可以是在相同磁盘的不同分区上,推荐你将它移动到你的启动分区上。
代码 4.3: 将quik.conf移动至/boot |
# mv /etc/quik.conf /boot/quik.conf
|
现在我们将设置你的启动变量,因为quik在启动时需要加载它们。为此,我们需要使用一个叫做nvsetenv的程序。你想设置的这些变量随机器的不同而有所变化,在尝试这步之前最好先查找你机器的quirks。
代码 4.4: 设置启动变量 |
# nvsetenv auto-boot true # 如果你想要启动至OF请设置成false,并不是所有的型号都能显示OF输出 # nvsetenv output-device video # 请检查quirks页面,在那儿你可以找到很多变化 # nvsetenv input-device kbd # nvsetenv boot-device scsi/sd@1:0 # 对应SCSI # nvsetenv boot-device ata/ata-disk@0:0 # 对应ATA # nvsetenv boot-file /boot/kernel-2.6.24-gentoo-r5 root=/dev/sda4 第一项是内核的路径,第二项是root分区。你可以在这一行末尾附加任何的内核选项。 # nvsetenv boot-command boot # 对于MacOS来说设置成bye,对于Linux来说设置成boot |
注意: 在MacOS中也可以改变你的启动变量。根据不同的型号,有可能需要用bootvars或是Apple系统磁盘。请参看以上的quik quirks页面以获得更多的信息。 |
现在我们的机器已经设置好并能启动,我们需要确保已经正确安装了启动镜像文件。运行quik -v -C /boot/quik.conf。它会告诉你第一阶段QUIK启动块已经安装好了。
注意: 如果出了什么错,你可以通过在通上电源前按住command + option + p + r来重设你的PRAM到默认值。这样会清除掉你用nvsetenv设置的值而且会允许你启动MacOS的启动盘或是Linux的启动盘。 |
现在,请阅读重启系统来继续安装。
重要: BootCreator会为Pegasos创建一个漂亮的由Forth写成的的SmartFireware启动菜单。 |
首先确保你已经在系统上安装好bootcreator:
代码 5.1: 从GRP形式安装bootcreator |
# emerge --usepkg bootcreator
|
现在拷贝文件/etc/bootmenu.example至/etc/bootmenu并且根据你的需要修改它:
代码 5.2: 修改bootcreator配置文件 |
# cp /etc/bootmenu.example /etc/bootmenu # nano -w /etc/bootmenu |
以下是一个完整的/etc/bootmenu配置文件。应该用你所使用的内核和initrd映像的文件名来替换掉vmlinux和initrd。
代码 5.3: bootcreator配置文件 |
#
# 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-2.6.24-gentoo-r5 video=radeonfb:1024x768@70 root=/dev/sda3
[SECTION]
Local HD -> Genkernel (Normal)
ide:0 kernel-genkernel-ppc-2.6.24-gentoo-r5 root=/dev/ram0 real_root=/dev/sda3 init=/linuxrc initrd=initramfs-genkernel-ppc-2.6.24-gentoo-r5
|
最终bootmenu必须转成Forth并被拷贝至你的启动分区,这样SmartFirmware才能读取它。因此你需要调用bootcreator:
代码 5.4: 安装bootmenu |
# bootcreator /etc/bootmenu /boot/menu
|
注意: 当你重启时请确认一下SmartFirmware的设置,menu文件就是那个会被默认加载的文件。 |
现在,继续安装请看重启系统。
退出chroot环境且卸载掉所有已挂载的分区。随后键入那个已经等待多时的魔幻命令:reboot。
代码 6.1: 退出chroot,卸载所有的分区并重启 |
# exit livecd ~# umount /mnt/gentoo/proc /mnt/gentoo/dev /mnt/gentoo/sys /mnt/gentoo livecd ~# reboot |
当重启进入到您新装的Gentoo系统之后,请阅读结束您的Gentoo安装来完成剩下的工作。
本文档的内容遵循知识共享-署名-相同方式共享许可协议