⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remote-boot-3.html

📁 Linux初学者最好的老师就是howto了。相当于函数man。
💻 HTML
📖 第 1 页 / 共 4 页
字号:
(或 
<A HREF="soft/linux/src/util/dhcptag.c">dhcptag.c</A>) 必须放在 
<CODE>runtime/usr/local/src</CODE> 目录下: 它是一个发送 BOOTP/DHCP 要求, 并以相容於 shell 的标准输出格式回应
BOOTP/DHCP 内容的小程式, 就如下的□例所示: 
<P>
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
bootp_your_ip='129.194.71.32'
bootp_server_ip='129.194.77.31'
bootp_filename='XXXclean'
bootp_subnet_mask='255.255.252.0'
bootp_routers='129.194.68.1'
bootp_domain_name_servers='129.194.69.200 129.194.8.7 129.194.4.32'
bootp_host_name='pc7132'
bootp_domain_name='unige.ch'
bootp_root_path='/export/linux/rootfs'
bootp_broadcast_address='129.194.71.255'
bootp_nis_domain='cuisunnet.unige.ch'
bootp_nis_servers='129.194.69.200'
bootp_option_132='dufour'
</PRE>
<HR>
</CODE></BLOCKQUOTE>

标记的名称与 RFC 2132 很相似. 如果您使用 <CODE>dhcptag</CODE>, 您将得到一些以 <CODE>dhcp_</CODE> 开头的标记, 这些是
DHCP-规格的选项内容; 为了顾及相容性, 其它的资讯仍然以 <CODE>bootp_</CODE> 为字首. 我们使用这个程式自动设
定 <CODE>rc.sysdetect</CODE>. 最後, 在 <CODE>runtime/lib</CODE> 安装 
<A HREF="soft/linux/src/util/makeramdisk">makeramdisk script</A> . 我们将用它自动产生 ramdisk 影像档. 这些软体
都在超文件的版本中.
<P>现在试著由客户端以 read-write NFS 开机 (仍然用硬碟开机). 它将侦测您客户端的个别组态, 并
产生适当的档□ 检查 <CODE>/etc/fstab</CODE>, <CODE>/etc/hosts</CODE>, <CODE>/etc/sysconfig/network</CODE> 是否设定正确. 如果您看到的不是这样, 请在
单人工作模式下重试一遍, 并找出您在 <CODE>rc.sysdetect</CODE> 叙述档中所犯的错误. 
<P>等到它可以正常工作, 到 <CODE>/lib</CODE> 目录下执行 <CODE>./makeramdisk</CODE>. 将会花几秒钟, 来产生一个 ramdisk 影像档给唯
读的 NFS 客户端. 把产生出来得 ramdisk image 放在这 <CODE>/lib/ramdisk.gz</CODE>, 就这样您的组态就绪了!
<P>
<H3>由 Bootprom 开机</H3>

<P>如果您还未完成它, 请安装您的 TCP/IP Bootprom-相容的 kernel 影像档 (可在这找到 
<CODE>/usr/src/linux/arch/i386/boot/bpImage</CODE>) 即您伺服器上的 <CODE>/tftpboot/linux.PX</CODE> . <CODE>rc.sysdetect</CODE> 这个叙述档用来初始化您的
Linux swap 及 Linux 资料分割区. 因为要启动它, 故编辑伺服器上 <CODE>XXXclean.tab</CODE> 这个档案并改变分割区
的型态由 hex 82 改为 hex 28, 及 hex 83 改为 hex 38. 这是一种未知的分割区型态, 但是安装程序档能把它当成<EM>预备分割区</EM>来辨
识. 在 DHCP 的设定档中, 把开机档设定为 <CODE>XXXclean</CODE> , 使它能重新
建立分割表. 别忘了在修改完设定档後要重新启动 DHCP daemon.
<P>最後, unexport 可读写的 <CODE>runtime</CODE> 目录, 并 export 唯读的 <CODE>/export/linux/rootfs</CODE> 目录. 重新启动客户端, 这一次使
用开机使用 <B>Linux</B> 选单的选项. 您的系统现在已是 remote-boot Linux.
<P>
<H3>系统维护与更新</H3>

<P>如果您以後想更新软体,安装一些错误修正档或安全性修正档, 请按照下列步骤: 
<UL>
<LI>Unexport <CODE>rootfs</CODE> 目录</LI>
<LI>Export <CODE>runtime</CODE> 目录为可读可写给您得客户端</LI>
<LI>设定您客户端的 <CODE>nfsroot</CODE> 目录为 runtime (在 <CODE>/etc/bootptab</CODE> 中设定)</LI>
<LI>启动您得 Linux 客户端, 并安装您想安装的东东. 不要怕使用 <CODE>rpm</CODE>, 它可以做得很好 (只要小心当
您安装任何软体套件时,要注意一些您做过的修正可能有些要作修改). </LI>
<LI>当您完成後重新换成正常的 export </LI>
</UL>

这是指, 您必须在 local 安装的状态下, 才能更新您的 server-based 设定的软体.
<P>
<H2><A NAME="ss3.3">3.3 设定 DOS 6 及 Windows 3.1</A>
</H2>

<P>在您的客户端电脑, 使用您喜欢的 dos 软碟开机 (记得开机时, 按空白键取消 BootPROM 开机). 格式
化您硬碟中的 dos 分割区并加上 <CODE>/S</CODE> 参数, 使它放入作业系统. 建立一个名为 <CODE>DOS</CODE> 的子目录, 把 DOS 拷
贝进去. 安装你所喜欢的网路客户端程式 (例如 Microsoft LanManager), Windows 3.1, 等等. 使用 DHCP
通讯协定设定 IP 组态.
<P>您必须恢复原本被 BootPROM 所使用掉的记忆体空间 (当 DOS 启动後这些记忆体不再需要用到啦)
加入下面这一行到您 <CODE>config.sys</CODE> 内的第一行:
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
device=\util\bputil.sys -r
</PRE>
<HR>
</CODE></BLOCKQUOTE>

(<CODE>bputil</CODE> 是一个 TCP/IP BootPROM 工具磁片中的程式). 不用怕使用 EMM386 最佳化您所使用的记忆体,
您可以把网路卡 ROM 所占的区域纳入管理, 因为它在这时已经用不到了. 但要记得把网路卡所使用
的 RAM 区块不纳入管理, 否则您将无法连接到您的伺服器.
<P>如果您不让您的客户端机器使用无效的登入名称, 把我们的 <CODE>
<A HREF="soft/dos/bin/nobreak.sys">nobreak.sys</A></CODE>
pseudo-device 驱动程式放在您 
<CODE>config.sys</CODE> 的开头处并把以下这些东西放到您的 <CODE>autoexec.bat</CODE>: 
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
rem -- 我们使用 c:\logged 为一个旗号
del c:\logged >nul
:loginneeded
cls
echo Please type in your login name and password
echo.
net logon *
rem -- the login script 已经建立好 c:\logged
if not exist c:\logged goto loginneeded
del c:\logged
rem -- 使 break 功能生效
echo Yes >NOBRK
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>重新开机并在开机选单中选择 <EM>Boot from local hard-disk</EM> 选项, 确定可以开机.
<P>
<H3>把组态设定移到伺服器</H3>

<P>回到伺服器上, 建立一个分享名称为 <CODE>admin</CODE> , 用来放一些系统管理者用的东东. 如果伺服器是跑 Unix,
建议您把 <CODE>/tftpboot</CODE> 子目录用 softlink 放一份到 <CODE>admin</CODE> , 这样您可以直接由客户端传回开机影像档. 在 <CODE>admin</CODE> 目
录内, 建一个 <CODE>/utils</CODE> 子目录并放入如下的工具: 
<UL>
<LI><CODE>
<A HREF="soft/dos/bin/mrzip.exe">mrzip.exe</A></CODE>,
一个用来压缩您客户端硬碟影像档的程式. </LI>
<LI><CODE>
<A HREF="soft/dos/bin/mrunzip.exe">mrunzip.exe</A></CODE>,
一个用来回存您硬碟影像档到伺服器的程式. </LI>
</UL>

您也需要把一些用来清理硬碟及产生压缩影像的批次档放到相同的目录下,这些批次档如下: 
<BLOCKQUOTE><CODE>
<HR>
<PRE>
@echo off
if "%1"=="" goto error
echo >c:\lanman.dos\lmuser.ini
l:\utils\mrzip l:\tftpboot\%1
goto end
:error
echo Usage: MAKEIMG {image-name-without-extension}
:end
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>现在回到您的客户端, 以下将以 <CODE>admin</CODE> mount 为磁碟机 <CODE>L:</CODE> 为□例作说明接著执行您建立的批次档, 如
果您还没做那可以按下列的指令执行 (不一定要用绝对路径 ) 
<P>
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
        L:\util\mrzip L:\tftpboot\win31
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>一分钟过後, 您伺服器上的 <CODE>/tftpboot</CODE> 子目录下将有两个新档案, 名称为 <CODE>win31.imz</CODE>, 是您硬碟内容的压缩
影响档<CODE>win31.chk</CODE>, 这是相关的检查档 (是 partition boot record 细部修改後的拷贝). 在这真正的目录内, 只
要建立一个 <CODE>bpunzip</CODE> 的 symbolic link (或这用拷贝的) 且命名为 <CODE>win31.P</CODE>.
<P>您的硬碟为主的远端开机设定现在一切就绪啦.
<P>
<H3>测试远端开机客户端</H3>

<P>现在重新启动您的客户端并在开机选单中选 <I>DOS and Windows 3.1</I> 的选项. <CODE>bpunzip</CODE> 这程式将传给您一
些它产生影像的表格讯息, 并自网路下载整个开机影像档
(因这是第一次它看到这个开机影像档). 这
将会花掉一分钟左右. 接著它会解压缩这个影像到 DOS 分割区, 并由他开机. 
这就是你要的, 您的远端开机客户端完成啦 ! 
<P>下一次您重新开机, 它只会解压所这个影像档, 大概在 30 秒内完成.
<P>
<H3>转换设定档给其他机器</H3>

<P>如果您要为每台机器修正一些设定 (例如预设印表机), 或者如果您需要变更一些不能透
过 DHCP 通讯协定修改的网路设定, 您可以使用 <CODE>
<A HREF="soft/dos/bin/unzipreg.exe">unzipreg.exe</A></CODE> 程式来处理, 
它必须放到客户端的 <CODE>autoexec.bat</CODE> (原始程式码在
<A HREF="soft/dos/src/unzipreg.zip">这</A>). 
这程式将读取一个由 <CODE>bpunzip</CODE> 产生的特殊隐藏档案, 名称为 <CODE>BOOTP.ANS</CODE>,
它的内容是由伺服器透过 BOOTP/DHCP 通讯协定回传的. 接著, 它将读取第一个参数所指的档案名
称, 藉由 BOOTP/DHCP 的回应内容, 以 <CODE>UNZIPREG:</CODE> <I>标签名</I> <CODE>:</CODE> 这种格式取代所有的字串, 并把结果写入
第二个参数所指的档案名称. 例如, 如过您有个档案名为 <CODE>input.bat</CODE> 内容为: 
<P>
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
set hostname=UNZIPREG:HOSTNAME:
set domainname=UNZIPREG:DOMAINNAME:
set gateway=UNZIPREG:ROUTER:
set subnetmask=UNZIPREG:SUBNET:
set printer=UNZIPREG:T180:
</PRE>
<HR>
</CODE></BLOCKQUOTE>

而您执行了这个指令
<BLOCKQUOTE><CODE>
<HR>
<PRE>
        unzipreg input.bat output.bat
</PRE>
<HR>
</CODE></BLOCKQUOTE>

您将得到一个档案名为 <CODE>output.bat</CODE> 包含内容: 
<BLOCKQUOTE><CODE>
<HR>
<PRE>
set hostname=pc7179
set domainname=unige.ch
set gateway=129.194.76.1
set subnetmask=255.255.252.0
set printer=laserwriter1
</PRE>
<HR>
</CODE></BLOCKQUOTE>

假设您的 DHCP 设定档定义这台机器名为 <CODE>pc7179</CODE>, 领域名称为 <CODE>unige.ch</CODE>, 等等, 而 <CODE>option-180</CODE> 标记是 
<CODE>laserwriter1</CODE>.
<P>也可以透过这种登入修改 Windows 桌面. 我们写了一个小程式 
<A HREF="soft/dos/src/addgroup.pas">simple program</A> 用来增加 <CODE>PROGMAN.INI</CODE> 档案, 允许为一
群使用者设定同样的桌面.
<P>在为任何一台客户端机器设定後, 别忘了使用 <CODE>mrzip</CODE> 重新建立磁碟影像档以维持您的所有变更.
<P>
<H2><A NAME="ss3.4">3.4 设定 Windows 95</A>
</H2>

<P>在此份文件先前的版本, 我们使用过微软公司的 Windows 95 server-based installation, 但是用这方法太
过痛苦又不是那麽的有价值: 
<UL>
<LI>它就真的是非常的虚拟</LI>
<LI>大部份的软体套件都不支援它而且如果您试著去安装结果通常是失败的. 包括, Microsoft Internet
Explorer, OnNet 32, Novell's Protected-mode client (这较 Microsoft Client for Netware安全). </LI>
<LI>因为微软公司不提供 Windows 95 在真实模式下的 TCP/IP 相容的驱动程式所以您无法使用
Microsoft Network client over TCP/IP 这也就意味著您不能使用 Samba </LI>
<LI>因为当客户端一启动就会锁住一些动态连结档造成许多程式几乎无法更新, 如果您试著去更新
它则会出现<EM>违背分享</EM>(sharing violations)的错误. </LI>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -