这里我们将展示 PALO 启动介质管理工具可以做什么。关于 palo 使用的深入信息,我们强烈建议您查看 PALO 的README文件,该文件可以在palo/目录中找到,位于 http://cvs.parisc-linux.org/。
对于接下来的两个步骤,您将需要一个编译器工具链,请参阅 第 5.1 节。
首先要弄清楚:您应该在什么时候这样做?
在 PA/Linux 项目的早期阶段,lifimage非常有用。事实上,只需将此文件放在启动服务器树中,您就可以使用 boot lan 指令启动您的 PA 主机,而无需任何进一步的参与(请参阅 第 4.3 节)。RAMDISK的主要优点是它会在 RAM 中解压缩自己的文件系统,因此完全独立于机器的 I/O 能力(硬盘驱动器等)。主要缺点是您必须构建自己的RAMDISK,如果您有内存限制或需要一些自定义文件。现在,让我们看看如何获得一个lifimage使用RAMDISK.
我们假设您获得了 PA/Linux 内核树的最新源代码(以下简称 "linux/目录"),并且您对内核配置有所熟悉。查看 第 5.2 节 以了解 PA-RISC 特定的选项。主要是,您需要一个(交叉)编译器、linux/目录和已安装的 PALO 包。如果您没有安装,请以 root 身份运行 apt-get install palo。一切都可以在 http://www.parisc-linux.org/ 找到。完成内核配置步骤。然后,运行 make palo,如果 PALO 已安装,则编译结束时应出现以下消息
A generic palo config file (./palo.conf) has been created for you. You should check it and re-run "make palo". WARNING: the "lifimage" file is now placed in this directory by default! |
# This a generic Palo configuration file. For more information about how # it works try 'palo -?'. # # Most people using 'make palo' want a bootable file, usable for # network or tape booting for example. --init-tape=lifimage --recoverykernel=vmlinux ########## Pick your ROOT here! ########## # You need at least one 'root='! # # If you want a root ramdisk, use the next 2 lines # (Edit the ramdisk image name!!!!) --ramdisk=ram-disk-image-file --commandline=0/vmlinux HOME=/ root=/dev/ram initrd=0/ramdisk # If you want NFS root, use the following command line (Edit the HOSTNAME!!!) #--commandline=0/vmlinux HOME=/ root=/dev/nfs nfsroot=HOSTNAME ip=bootp # If you have root on a disk partition, use this (Edit the partition name!!!) #--commandline=0/vmlinux HOME=/ root=/dev/sda1 |
此方法被广泛使用,因为内核和文件系统可以直接在您的启动服务器上访问。测试新内核也很容易。您只需生成内核并将其放入正确的目录中。启动时,PA 主机将在 BOOT_ADMIN 中输入 boot lan 来启动新内核。最后,这是 I/O 设备不受支持的系统(例如,撰写本文时的 E 类)的唯一方法。
启用NFSROOT支持比RAMDISK更容易。您必须编辑palo.conf以指定启动服务器 IP 地址,而不是字符串HOSTNAME。例如,如果您的服务器的 IP 地址为 10.10.10.2,则palo.conf文件应包含
# This a generic Palo configuration file. For more information about how # it works try 'palo -?'. # # Most people using 'make palo' want a bootable file, usable for # network or tape booting for example. --init-tape=lifimage --recoverykernel=vmlinux ########## Pick your ROOT here! ########## # You need at least one 'root='! # # If you want a root ramdisk, use the next 2 lines # (Edit the ramdisk image name!!!!) #--ramdisk=ram-disk-image-file #--commandline=0/vmlinux HOME=/ root=/dev/ram initrd=0/ramdisk # If you want NFS root, use the following command line (Edit the HOSTNAME!!!) --commandline=0/vmlinux HOME=/ root=/dev/nfs nfsroot=10.10.10.2 ip=bootp # If you have root on a disk partition, use this (Edit the partition name!!!) #--commandline=0/vmlinux HOME=/ root=/dev/sda1 |
中等待您。NFSROOT有关
安装 PALO 包后,默认palo.conf的副本可以在/usr/share/doc/palo/palo.conf找到。我们将在此处解释如何自定义它以满足您的需求。
要设置可启动硬盘,您必须正确地对其进行分区(也就是说,如果您想将其用作您的主要启动设备)。这意味着只有在您已经在您的 PA-RISC 主机上启动了一个最小系统(从 CD 或网络,请参阅 第 4 章)或者您打算使用目标计算机以外的另一台计算机准备您的硬盘驱动器(这对于解压缩和设置下载的文件系统对于速度较慢的主机来说很有用)时,才能实现此步骤。本 HOWTO 的目的不是教您如何使用 fdisk 及其朋友,所以这里是您必须知道的一些事情
完全包含在您的目标设备的前 2GB 中的分区必须是分区类型 'f0',这是为 PALO 引导加载程序保留的分区类型。
有两种使用 PALO 的方法:旧方案(在所有版本中可用),该分区仅存储配置和恢复内核;以及新方案(自 PALO 1.5 起可用),该分区将被格式化为 ext2 或 ext3,并挂载在/boot.
在第一种情况下,分区不需要很大。这是 PALO 将保存其配置、恢复内核(每个约 5MB)和可选恢复 ramdisk 的地方,因此 32MB 似乎已经足够了。
或者,在第二种情况下,因为您将使用它作为/boot,您应该适当地调整其大小。100MB 是一个不错的选择。
![]() | 小心!vmlinux实际启动的文件也必须位于硬盘驱动器的前 2GB 内。我们强烈建议要么(在*旧*方案中)在磁盘的开头创建一个单独的/boot分区(除非您计划每次都启动恢复内核),要么使用*新*方案并将 PALO 分区挂载为/boot,因为如果您的 vmlinux 二进制文件被物理存储在磁盘的前 2GB 之后(例如,当使用数据填充 '/' 时),主机将不再启动。 |
事实上,PALO 的第三种用法是最常见的,因为默认的/etc/palo.conf使得配置很容易。
隐藏分区已弃用。不要将此用于新设置。请改用新方案(请参阅 第 3.3.3.2 节)。记录隐藏分区方法是为了后代着想。
这是 fdisk 的输出,它代表一个具有 16MB PALO 空间、128MB 交换空间和大约 1GB '/' 分区的主机的硬盘驱动器
bash# fdisk -l /dev/sda Disk /dev/sda: 133 heads, 62 sectors, 1017 cylinders Units = cylinders of 8246 * 512 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 4 16461 f0 Linux/PA-RISC boot /dev/sda2 5 34 123690 82 Linux swap /dev/sda3 35 277 1001889 83 Linux |
现在让我们处理 PALO 配置。以下是您可以更改的各种参数
recoverykernel(顾名思义)是您想要在故障保护会话中启动的内核的路径,它将存储在 'f0-type' 分区中。
bootloader是iplboot引导加载程序实用程序的路径,该实用程序由 PALO 在您执行 make iplboot 时创建。
![]() | 通常您不想更改甚至指定此项。 |
init-partitioned用于指示 palo 将写入其启动参数的预分区设备。效果是立竿见影的。这意味着 PALO 将写入(并擦除)此设备的 'f0' 分区的内容,该分区必须存在。
commandline:第一个数字是您的 ext2/ext3 分区的编号,内核文件位于该分区,如 fdisk 报告的那样。从逻辑上讲,下一个字符串是从此分区的根目录到内核的绝对路径 [1]。以下空格分隔的参数(请勿使用任何引号!)将作为其参数传递给内核。例如HOME=和TERM=是启动时传递给 init 的环境变量。它们不是强制性的,但它们可能很有用。root=告诉内核必须在启动时将哪个分区挂载为根文件系统。当您有多个磁盘时,这可能会很棘手,并且是强制性参数。命令行的最大长度为 127 个字符。
您也可以添加console=,以强制指定输出控制台。您应该记住console=ttyS0用于串行控制台,而console=tty0用于 STI(图形)控制台。已添加对 MUX 控制台的支持(如果在内核中启用,请参阅 第 5.2 节),使用console=ttyB0。PALO 的最新版本会自动检测正确的控制台路径(除了 MUX),并且可以确定应该使用 32 位还是 64 位内核。如果没有,请发送邮件到邮件列表。最后但并非最不重要的是,如果您使用的是 Debian 2.6 内核,您还需要添加initrd=X/path/to/initrd,遵循与内核路径[1]相同的规则,请参见上文。
根据上面的 fdisk 示例,我们想使用/dev/sda3作为我们的根分区。因此,配置文件应如下所示
# The following arguments are set up for booting from /dev/sda, specifically # mounting partition 3 as root, and using /boot/vmlinux as both the # recovery kernel, and the default dynamically-booted kernel. --recoverykernel=/boot/vmlinux --init-partitioned=/dev/sda --commandline=3/boot/vmlinux root=/dev/sda3 |
查看前面的示例(第 3.3.3.1 节),只需要更改很少的东西。基本上,如果您需要一个单独的/boot分区,它将在下面详细介绍的方案中消失。 PALO 的配置也会略有不同,但仅此而已。
这是 fdisk 的输出,它代表一个具有 100MB PALO 空间(将挂载为/boot)、128MB 交换空间和大约 1GB '/' 分区的主机的硬盘驱动器(请记住f0分区仍然必须完全包含在磁盘的前 2GB 中)
bash# fdisk -l /dev/sda Disk /dev/sda: 133 heads, 62 sectors, 1017 cylinders Units = cylinders of 8246 * 512 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 26 100461 f0 Linux/PA-RISC boot /dev/sda2 27 36 123690 82 Linux swap /dev/sda3 37 277 917889 83 Linux |
现在让我们处理 PALO 配置。与前面的示例相反,配置文件中需要放置的选项要少得多,并且设置是一个单步操作:初始化步骤,只需要完成一次。
要首次将 PALO 分区初始化为 Linux 系统可以理解的东西(ext2或ext3文件系统),您需要运行以下命令(作为root):
[user@machine ~/dir]> palo --format-as=N --init-partitioned=target_disk |
其中N是2的ext2或3的ext3和target_disk是包含 PALO 分区的设备,/dev/sda在当前示例中。继续使用此示例,假设我们想要一个ext3分区,我们将使用
[user@machine ~/dir]> palo --format-as=3 --init-partitioned=/dev/sda |
![]() | 不要使用 mkfs 或 mke2fs 在此分区上生成文件系统。 PALO 将块标记为已使用,其中 PALO 的引导加载程序部分存储在磁盘上。这些工具不知道 PALO 引导加载程序! |
![]() | 这只需要运行一次,因为它会擦除f0分区上的任何现有数据。 |
最后,我们需要告诉 PALO 关于分区、我们希望如何使用它以及我们不希望在每次运行 PALO 时都将其擦除。因此,与我们当前的示例保持同步,配置文件应如下所示
# The following arguments are set up for booting from /dev/sda, specifically # mounting partition 3 as root and booting the vmlinux file in /dev/sda1, palo # partition formatted as ext3. --update-partitioned=/dev/sda --format-as=3 --commandline=1/vmlinux root=/dev/sda3 |
正如人们所见,因为我们将直接在f0分区上存储我们的内核,所以我们告诉 PALO 从中加载它们(因此1中的commandline参数。
[1] | 例如:/boot 从一个单独的分区挂载,根据 fdisk 来说,该分区号是 4。从 Linux 的角度来看,该文件的绝对路径是/boot/vmlinux,但从分区的角度来看,它是/vmlinux。因此,命令行将以 "4/vmlinux" 开头。我们希望这足够清楚了! |
[2] | 的format-as开关有点容易误导。当与init-partitioned一起使用时,它是用来指定格式化新分区的文件系统类型,但与update-partitioned一起使用时,它是用来告诉 PALO 已经格式化的分区上使用的文件系统类型。 |