📄 remote-boot-3.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
<TITLE>Linux Remote-Boot mini-HOWTO: 使用 Red-Hat Linux, DOS, Windows 3.1 及 Windows 95 设定远端开机工作站: 如何设定</TITLE>
<LINK HREF="Remote-Boot-4.html" REL=next>
<LINK HREF="Remote-Boot-2.html" REL=previous>
<LINK HREF="Remote-Boot.html#toc3" REL=contents>
</HEAD>
<BODY>
<A HREF="Remote-Boot-4.html">Next</A>
<A HREF="Remote-Boot-2.html">Previous</A>
<A HREF="Remote-Boot.html#toc3">Contents</A>
<HR>
<H2><A NAME="s3">3. 如何设定</A></H2>
<P>首先, 调整机器位置使手边有下列两台机器:
<UL>
<LI><B>伺服器</B>, 我们是用一台 Unix 主机.</LI>
<LI><B>客户端</B>, 一台已经启动 TCP/IP Bootprom 的个人电脑, 硬碟内不要有重要资料. </LI>
</UL>
<P>如果你想要测试您的组态设定而您还没拿到 TCP/IP Bootprom, 您可以到 <CODE>
<A HREF="http://www.incom.de">http://www.incom.de</A></CODE> 下载测试版的磁片. 这个
磁片可以使您的电脑就好像是插上 TCP/IP Bootprom 一般.If you want to test the configuration but you do not yet have a
<P>学生所使用的电脑, 我们设定 Bootprom 由网路开机, 不能使用硬碟开机及软碟开机. 教学用电脑, 我们设定
Bootprom 可以由往路开机, 也允许硬碟与软碟开机; 在你的客户端设定 Bootprom.
<P>伺服器端, 设定 DHCP daemon (我们使用 Internet Software Consortium 所提供的正式版, 970329 发行). 你也必需启动
TFTP daemon. 这份文件将假设您使用 TCP/IP Bootprom 工具磁片内的加强型 TFTP daemon . 如果您较喜欢使用标准
的 TFTP daemon, 移掉所有开机影像档的副档名 <CODE>P</CODE>, 用来支会 Bootprom 使用标准的 TFTP port (请看 TCP/IP Bootprom
文件).
<P>别忘了 BOOTP/DHCP 通讯协定被限制在子网域中使用. 如果客户端与伺服端不在同一网域, 您必须在这两网域间
架设闸道器. 现在, 先假设两台机器在相同的网域中.
<P>首先, 我们先做所有作业系统都要得做的事,如:
<UL>
<LI>设定初始化硬碟的组态及清理 </LI>
<LI>设定作业系统选单 </LI>
<LI>测试开机流程 </LI>
</UL>
然後, 对每一种作业系统, 我们将完成下列步骤:
<UL>
<LI>建立单独的客户端 </LI>
<LI>把它的组态放到伺服器上 </LI>
<LI>测试远端开机客户端 </LI>
<LI>由本尊产生分身 </LI>
</UL>
完成这些事, 以後你所追加的客户端只要插上 Bootprom 再加几行到 DHCP 设定档.
<P>
<H2><A NAME="ss3.1">3.1 设定开机流程</A>
</H2>
<P>在伺服器端的 <CODE>/tftpboot</CODE> 目录下, 放下列的开机影像档 (这些是二进位格式)
<UL>
<LI><CODE>
<A HREF="soft/tftpboot/bpclean">bpclean</A></CODE>,
硬碟清理工具</LI>
<LI><CODE>bpmenu</CODE>, TCP/IP Bootprom 选单程式 (包含在您的 Bootprom 工具磁片) </LI>
<LI><CODE>
<A HREF="soft/tftpboot/bpunzip">bpunzip</A></CODE>,
我们的硬碟还原工具</LI>
<LI><CODE>
<A HREF="soft/tftpboot/bphdboot">bphdboot</A></CODE>,
传送开机程序到硬碟的影像档</LI>
</UL>
<P>
<H3>硬碟的初始化与清理</H3>
<P>在相同的目录下, 我们建立符号连结到 (或者直接用拷背指令)) <CODE>bpclean</CODE> 命名为
<CODE>XXXclean</CODE> (或者您认为可以帮助您记住这是用来清理您的客户端机器的名称)
并且产生一个名为 <CODE>XXXclean.tab</CODE> 档叙述您客户端所需的硬碟分割区,
及您要联接的开机影像档.
例如: 我们对 2 Gb 硬碟使用下面的方法
<BLOCKQUOTE><CODE>
<HR>
<PRE>
# 允许不超过 512 bytes 的说明叙述
# 十六进制请在字首加一个 $ 钱字符
# Part | | Part
# type | Boot? | Size
6 Y +500 Mb
$82 N +31 Mb
$83 N -50 Mb
0
# 联接的影像档
/tftpboot/XXXmenu
</PRE>
<HR>
</CODE></BLOCKQUOTE>
完整的档案格式在後面会叙述. 现在您只要知道这些
<UL>
<LI>分割区型态 6 是指 <I>BIGDOS</I>, ie. 如. DOS Fat-16 由 32Mb 到 500Mb</LI>
<LI>分割区型态 hex 82 是 <I>Linux Swap</I></LI>
<LI>分割区型态 hex 83 是 <I>Linux Ext2fs</I></LI>
<LI>大小如为负值,则表示我们的第三个分割区至少要占据 50 Mb </LI>
<LI>分割区型态 0 表示是 <I>空的</I> (未使用的) 分割区.</LI>
</UL>
现在, <CODE>bpclean</CODE> 在不清除分割区资料内容下,将重新写入主要开机计录(master boot record), 当然也包括分割表.
<P>
<H3>作业系统选单</H3>
<P>同样的, 建立符号连结 (或者直接拷贝) <CODE>bpmenu</CODE> 命名为
<CODE>XXXmenu</CODE> (或者你认为可以帮助您记住
这是客户端机器开机选单的名称) 并且产生一个名为 <CODE>XXXmenu.m</CODE> 档叙述您客户端所需的开
机选单. 您比可以手动产生这个档案或透过我们写的开机选单全营幕编辑器
<CODE>
<A HREF="soft/dos/bin/menuedit.exe">menuedit.exe</A></CODE>.
例如, 假设您用下列这个档案:
<BLOCKQUOTE><CODE>
<HR>
<PRE>
.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
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>
<H3>测试开机程序</H3>
<P>在您的 DHCP 设定档中加入您的客户端. 并设定开机影像档为 <CODE>/tftpboot/XXXclean</CODE>.
您可能需要重新启动您的 DHCP 伺服器使您的变更生效.
<P>现在我们起动您的客户端. 您可以讯速的看到由 <CODE>bpclean</CODE>,
所送出来的讯息, 告诉您它所建立的分割区的大小, 然後您会看到开机选单出现在您的营幕上.
您可以用键盘上的 <CODE>pause</CODE> 键来
暂停以便读取刚刚的讯息, 但是这可能会导致 TFTP 的连接逾时.
<P>如果您按下按键 <CODE>1</CODE>, 您将收到一个这样的讯息"开机分割区存在一个无效的开机磁区"
(the boot partition contains not valid boot sector).
对未被格式化过的开机分割区而言这是正常的. 因
为我们现在还未建立任何开机影像档所以其他的按键将会失效...
<P>现在我们要开始安装各种作业系统. 您可依您的需要来决定先做那一种. 对任何一种作业
系统, 您都需要先从软碟来做初始化的动作. 所以我们在看到 TCP/IP Bootprom 的标志後立
刻按 space 键换成软碟开机.
<P>有些作业系统会更动主要开机计录 (master boot record). 特别是 Linux kernel loader (<CODE>lilo</CODE>) 会这样
做.而这种变动会因 <CODE>bpclean</CODE>这个程式而无法完成, 因此您最好改变客户端的 DHCP 设定内
容使开机影像档直接跳到 <CODE>/tftpboot/XXXmenu</CODE> (不做清理的动作).
别忘了要使您的改变生效,您必需重新启动 DHCP 伺服器.
<P>
<H2><A NAME="ss3.2">3.2 设定 Linux</A>
</H2>
<P>在您的客户端架设
<A HREF="http://www.redhat.com">RedHat Linux 4.1</A> 支援网路功能, kernel 原始程式码及您所需要的软体套件.
准备未来要挂入的点 (放在 <CODE>/mnt/tmp</CODE> 比较有用),
设定您的 X server, 等等. 在
<CODE>/usr/src/linux-2.0.27</CODE> 目录中, 您必须有 kernel 2.0.27 的原始程式码.
<P>现在我们要加入一些修正档, 使它升级到 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 及档案快取的支援都已经由它们的作者免费的散布.
<P>值得注意的是 Linux 对 NFS-Root 的支援只能架构在 BOOTP 通讯协定, 不是 DHCP 通讯协
定. 仅管 DHCP 只是 BOOTP 的延伸, Linux 也可以在 DHCP 伺服器下工作 (如果您没有设
定 DHCP 伺服器拒绝 BOOTP要求).
<P>
<H3>产生 Kernel</H3>
<P>首先, 到您的 <CODE>/usr/src</CODE> 目录并加入下列修正档, 使用这个指令
<P><CODE>patch -p0 < </CODE><EM>修正档的名称</EM>:
<UL>
<LI><CODE>
<A HREF="soft/linux/src/kernel/patch-2.0.28">patch-2.0.28</A></CODE>: 这是一个正式的 kernel 更新, 您一定要加入这个修正档 </LI>
<LI><CODE>
<A HREF="soft/linux/src/kernel/patch-config-sound">patch-config-sound</A></CODE>:
一个美化音效设定的修正档, 来自 Unifix Linux 2.0 </LI>
<LI><CODE>
<A HREF="soft/linux/src/kernel/patch-PCSP">patch-PCSP</A></CODE>:
一个较大的修正档用来使 PC 的扬声器模拟音效卡, 来自 Unifix Linux 2.0 </LI>
<LI><CODE>
<A HREF="soft/linux/src/kernel/patch-bootprom">patch-bootprom</A></CODE>:
一个小的修正档用来产生特别的 kernel image, 使它可由 TCP/IP Bootprom 开机 </LI>
<LI><CODE>
<A HREF="soft/linux/src/kernel/patch-filecache">patch-filecache</A></CODE>:
一个小的修正档使 kernel 加入一些特别功能, 如 Unifix filecache. 来自 Unifix Linux 2.0</LI>
<LI><CODE>
<A HREF="soft/linux/src/kernel/patch-penguinlogo">patch-penguinlogo</A></CODE>:
一个小的修正档帮助您的使用者等到 Linux 系统完全载入</LI>
<LI><CODE>
<A HREF="soft/linux/src/kernel/patch-2.0.29">patch-2.0.29</A></CODE>: 另一个小的正式的 kernel 更新档, 如果您不需要最新版的 kernel 则不用加入它 </LI>
<LI><CODE>
<A HREF="soft/linux/src/kernel/patch-2.0.30">patch-2.0.30</A></CODE>: 又是一个正式的 kernel 更新档, 满大的.
一样, 您不需要加入这项修正 (但它会改善 TCP/IP 通讯 协定). 如果在您的机器上
您没有 <I>alpha</I> 的原始程式码 (这很有可能发生), 这个修正档将出现两次抱怨含入档不存在的讯息.
不要紧张, 只要回答您要跳过这些缺少的档案,不会发生任何问题
</LI>
</UL>
接著执行 <CODE>make mrproper</CODE> 及 <CODE>make xconfig</CODE>, 产生 kernel.
记住这将是客户端电脑以 Linux 启动时,
唯一接收到的软体, 所以 它必须要包含启动整个作业系统所需的东西. 可以使用模组方式,
但是不包括网路模组. 因为网路功能一定要放在 kernel 中. 简而言之, 您的 kernel 至少需要
以下这些
<P>
<UL>
<LI>支援网路</LI>
<LI>在有 BOOTP 通讯协定下,支援 NFS-Root</LI>
<LI>支援 <CODE>filecache</CODE></LI>
<LI>支援客户端电脑的硬体所需的模组</LI>
</UL>
您可以使用我们的 <CODE>
<A HREF="./good.config">.config</A></CODE> 当做起点. 如果您想要在没有 Bootprom 的状况下测试, 请确定您
已经在 kernel 内包含硬碟机的支援.
<P>当您的选择完成後, 照常地输入 <CODE>make clean;
make dep</CODE> 接著 <CODE>make zImage</CODE>, <CODE>make modules</CODE> 与
<CODE>make modules_install</CODE>. 这会花一点时间...
现在您准备去测试您的新 kernel, 先用先用 lilo. 安装您的 kernel
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -