📄 remote-boot.txt
字号:
硬碟的初始化与清理 在相同的目录下, 我们建立符号连结到 (或者直接用拷背指令)) bpclean 命名为 XXXclean (或者您认为可以帮助您记住这是用来清理您的客户端机器的名称) 并 且产生一个名为 XXXclean.tab 档叙述您客户端所需的硬碟分割区, 及您要联接 的开机影像档. 例如: 我们对 2 Gb 硬碟使用下面的方法 ______________________________________________________________ # 允许不超过 512 bytes 的说明叙述# 十六进制请在字首加一个 $ 钱字符# Part | | Part# type | Boot? | Size 6 Y +500 Mb $82 N +31 Mb $83 N -50 Mb 0# 联接的影像档/tftpboot/XXXmenu ______________________________________________________________ 完整的档案格式在後面会叙述. 现在您只要知道这些 * 分割区型态 6 是指 BIGDOS, ie. 如. DOS Fat-16 由 32Mb 到 500Mb * 分割区型态 hex 82 是 Linux Swap * 分割区型态 hex 83 是 Linux Ext2fs * 大小如为负值,则表示我们的第三个分割区至少要占据 50 Mb * 分割区型态 0 表示是 空的 (未使用的) 分割区. 现在, bpclean 在不清除分割区资料内容下,将重新写入主要开机计录(master boot record), 当然也包括分割表. 作业系统选单 同样的, 建立符号连结 (或者直接拷贝) bpmenu 命名为 XXXmenu (或者你认为可 以帮助您记住 这是客户端机器开机选单的名称) 并且产生一个名为 XXXmenu.m 档叙述您客户端所需的开 机选单. 您比可以手动产生这个档案或透过我们写的开 机选单全营幕编辑器 [14]menuedit.exe. 例如, 假设您用下列这个档案: ______________________________________________________________ .CLS 23.ATT 23.POS 23 4.WRT Simple Boot Menu \.POS 23 5.WRT ---------------- \.POS 23 8.WRT 1. Boot from local hard disk \.POS 23 10.WRT 2. Boot DOS and Windows 3 \.POS 23 12.WRT 3. Boot Windows 95 \.POS 23 14.WRT 4. Boot RedHat Linux \.POS 23 17.WRT Your choice : \.POS 37 17.KEY 1 :bphdboot.KEY 2 :linux.PX.KEY 3 :win31.P.KEY 4 :win95.P ______________________________________________________________ 测试开机程序 在您的 DHCP 设定档中加入您的客户端. 并设定开机影像档为 /tftpboot/XXXclean. 您可能需要重新启动您的 DHCP 伺服器使您的变更生效. 现在我们起动您的客户端. 您可以讯速的看到由 bpclean, 所送出来的讯息, 告 诉您它所建立的分割区的大小, 然後您会看到开机选单出现在您的营幕上. 您可 以用键盘上的 pause 键来 暂停以便读取刚刚的讯息, 但是这可能会导致 TFTP 的连接逾时. 如果您按下按键 1, 您将收到一个这样的讯息"开机分割区存在一个无效的开机磁 区" (the boot partition contains not valid boot sector). 对未被格式化过 的开机分割区而言这是正常的. 因 为我们现在还未建立任何开机影像档所以其他 的按键将会失效... 现在我们要开始安装各种作业系统. 您可依您的需要来决定先做那一种. 对任何 一种作业 系统, 您都需要先从软碟来做初始化的动作. 所以我们在看到 TCP/IP Bootprom 的标志後立 刻按 space 键换成软碟开机. 有些作业系统会更动主要开机计录 (master boot record). 特别是 Linux kernel loader (lilo) 会这样 做.而这种变动会因 bpclean这个程式而无法完 成, 因此您最好改变客户端的 DHCP 设定内 容使开机影像档直接跳到 /tftpboot/XXXmenu (不做清理的动作). 别忘了要使您的改变生效,您必需重新启 动 DHCP 伺服器. 3.2 设定 Linux 在您的客户端架设 [15]RedHat Linux 4.1 支援网路功能, kernel 原始程式码及 您所需要的软体套件. 准备未来要挂入的点 (放在 /mnt/tmp 比较有用), 设定您 的 X server, 等等. 在 /usr/src/linux-2.0.27 目录中, 您必须有 kernel 2.0.27 的原始程式码. 现在我们要加入一些修正档, 使它升级到 2.0.30, 并且支援 TCP/IP Bootprom 及档案快取的 功能. 档案快取是一个 把 "未确定的" NFS 档案储存在您硬碟中 的结构, 它您可以降低网路 负载. TCP/IP Bootprom 的支援已经由□Marc Vuilleumier Stuckelberg 完成, 并且由 David Clerc 转移到 kernel 2.0 . 档 案快取已经由 Unifix GmbH 完成, 并且已 是 Unifix Linux 2.0 的一部份. TCP/IP Bootprom 及档案快取的支援都已经由它们的作者免费的散布. 值得注意的是 Linux 对 NFS-Root 的支援只能架构在 BOOTP 通讯协定, 不是 DHCP 通讯协 定. 仅管 DHCP 只是 BOOTP 的延伸, Linux 也可以在 DHCP 伺服器 下工作 (如果您没有设 定 DHCP 伺服器拒绝 BOOTP要求). 产生 Kernel 首先, 到您的 /usr/src 目录并加入下列修正档, 使用这个指令 patch -p0 < 修正档的名称: * [16]patch-2.0.28: 这是一个正式的 kernel 更新, 您一定要加入这个修正 档 * [17]patch-config-sound: 一个美化音效设定的修正档, 来自 Unifix Linux 2.0 * [18]patch-PCSP: 一个较大的修正档用来使 PC 的扬声器模拟音效卡, 来自 Unifix Linux 2.0 * [19]patch-bootprom: 一个小的修正档用来产生特别的 kernel image, 使它 可由 TCP/IP Bootprom 开机 * [20]patch-filecache: 一个小的修正档使 kernel 加入一些特别功能, 如 Unifix filecache. 来自 Unifix Linux 2.0 * [21]patch-penguinlogo: 一个小的修正档帮助您的使用者等到 Linux 系统 完全载入 * [22]patch-2.0.29: 另一个小的正式的 kernel 更新档, 如果您不需要最新 版的 kernel 则不用加入它 * [23]patch-2.0.30: 又是一个正式的 kernel 更新档, 满大的. 一样, 您不 需要加入这项修正 (但它会改善 TCP/IP 通讯 协定). 如果在您的机器上 您 没有 alpha 的原始程式码 (这很有可能发生), 这个修正档将出现两次抱怨 含入档不存在的讯息. 不要紧张, 只要回答您要跳过这些缺少的档案,不会发 生任何问题 接著执行 make mrproper 及 make xconfig, 产生 kernel. 记住这将是客户端电 脑以 Linux 启动时, 唯一接收到的软体, 所以 它必须要包含启动整个作业系统 所需的东西. 可以使用模组方式, 但是不包括网路模组. 因为网路功能一定要放 在 kernel 中. 简而言之, 您的 kernel 至少需要 以下这些 * 支援网路 * 在有 BOOTP 通讯协定下,支援 NFS-Root * 支援 filecache * 支援客户端电脑的硬体所需的模组 您可以使用我们的 [24].config 当做起点. 如果您想要在没有 Bootprom 的状况 下测试, 请确定您 已经在 kernel 内包含硬碟机的支援. 当您的选择完成後, 照常地输入 make clean; make dep 接著 make zImage, make modules 与 make modules_install. 这会花一点时间... 现在您准备去测 试您的新 kernel, 先用先用 lilo. 安装您的 kernel (参考 lilo 文件),并重新 启动您的电脑 (由硬碟启动). 如有任何错误, 修正它们并再试一次. 执行 depmod -a 计算 modules dependencies. 当完全无误时, 执行 make bpImage 产 生一个 bootimage 给 TCP/IP Bootprom 使用. 把 Root 档案系统移到 NFS 您的伺服器要有足够的空间来保存您的整个 Linux 档案系统 (几百 Megabytes). 建立一个新 的目录给 NFS 输出, 就叫 rootfs, 并在其中建立另一 个新目录就叫 runtime. 我们使用 /export/linux/rootfs/runtime. 把它输出成 只有您的 Linux 客户端可读可写, 并具有 root 的存取权 ( annon=0). 例如, 我们的 NFS 是在 Solaris 下执行, 我们用以下这个指令: share -F nfs -o rw=pc7971,anon=0 /export/linux/rootfs/runtime. 在您的 Linux 客户端挂上这个分割区并用GNU tar 把整个 Linux 档案系统复制 过去 (预设是 RedHat Linux). 很重要的是当您使用 GNU tar 指令,因为所有的 tar 指令可能无法正确地处理 block device 的 special nodes . 然後编辑档案 /export/linux/rootfs/runtime/etc/fstab 并变更根目录的 设定,使根目录符合 以 nfs mount 取代自己的硬碟机. 你还要移去 (或者 至少要变更名称) /export/linux/rootfs/runtime/etc/sysconfig/network-scripts/ifcfg-eth0 因为网路装置将由 NFS-root 初始化但不能被初始化两次. 现在在您的 /etc/lilo.conf 复制一行 linux, 例如:以 linux-nfs 为名, 并加 入以下的参数: append="root=/dev/nfs nfsroot=/export/linux/rootfs/runtime nfsaddrs=您 的-ip:伺服器的-ip:闸道器的-ip:网路遮 罩:机器名称" (您的-ip 是您的 Linux 客户端的 IP 位址,是以十进位有点的方法表示, 伺服器 的-ip 是 NFS 伺服器的 IP 位址, 闸道器的-ip 是 Linux 客户端的预设闸道 器, 网路遮罩 是 Linux 客户端的 网路遮罩 而 机器名称 是Linux 客户端的主 机名称). 再执行一遍 lilo , 重新启动您的电脑 (仍然是由硬碟机), 并选择 linux-nfs 开机设定. 您的电脑将如先前一般启动, 即使有一点慢. 如果在这里 有某些东西不能正常工作, 您只要重新开机用您原来 local的 linux 开机设定并 试 著修正它. 大部份的状况是, 您的 NFS root 设定错误. 如果有任何东西您不 了解, 看一下 /usr/src/linux/Documentation 这些档案... 您或许可以看看 [25]NFS-Root-Mini-Howto. 您可以再试一次,这次只用 append="root=/dev/nfs" 以确定 Linux kernel 可以 透过 DHCP/BOOTP要求而获得您所设定的 IP 参数. 如果 要这样做, 您必须在您 的 DHCP 设定档中加入以下 这些选项 (当然是要设定您自己的网路组态), 加上 您的机器的硬体及 IP 位址: ______________________________________________________________ option subnet-mask 255.255.252.0;option routers 129.194.68.1;option root-path "/export/linux/rootfs"; ______________________________________________________________ 如果您的 Linux kernel 须要再加入其它指令参数, 您可以用 option option-177 来加入. 下一步要使我们的系统在 唯读的 NFS 档案系统下可以工作. 产生唯读的 NFS Root 档案系统 既然我们要我们的 root 档案系统在大部份的 Linux 客户端以唯读的方式挂上, 那就要使档 案系统有些微的不同, 因此我们将需要写入权限的地方以 ramdisk 或 filecache 取代. 我们把 这个档案系统建立在 /export/linux/rootfs 目录 下, 而标准的版本则直接放到 /runtime/ 下. 登入您 的 NFS 伺服器并在 /export/linux/rootfs目录下,建立以下的目录跟连结: * bin -> cache/bin * dev -> ramdisk/dev * etc -> ramdisk/etc * lib -> cache/lib * root -> ramdisk/root * sbin -> cache/sbin * tmp -> ramdisk/tmp * usr -> cache/usr * var -> ramdisk/var * cache/ + bin -> /runtime/bin + lib -> /runtime/lib + sbin -> /runtime/sbin + usr -> /runtime/usr * mnt/ + cdrom/ + floppy/ + tmp/ * proc/ * ramdisk/ + dev -> /runtime/dev + etc -> /runtime/etc + root -> /runtime/root + tmp -> /runtime/tmp + var -> /runtime/var 就如您所见的, 它看起来像正常的 root filesystem, 除了少部份几个是重新指 到 /ramdisk, 有 些则重新指到 cache 目录. 当用唯读的 NFS filesystem 开 机, 我们将挂上一个已初始化过的 ramdisk 放在 /ramdisk 下. 同样□ 自己硬 碟的分割区将被挂在 /cache 给 NFS 快取使用. 粗略的 说,这个档案快取的原理 是当the principle of the filecache is that whenever a symbolic link from the cache subdirectory is followed, it is replaced by its target. 如果目标自己是一个子目录, 则每一个 子目录会转换成一个符号连结并连结到外 部档案系统的原始位置. 注意档案快取使用绝 对符号连结是必须的, 即使它们在 NFS 伺服器上是无意义的. 如果您不喜欢这样, 可以在 您的 NFS 伺服器上,建立
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -