LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1654|回复: 1

NetBSD启示录--拯救你的旧硬件

[复制链接]
发表于 2008-5-9 13:32:07 | 显示全部楼层 |阅读模式
Mikhail Zakharov作品

05/05/2005

译者:不开花

事情缘起于一个阳光明媚的日子,我查看家里的储藏室看看能否找到感兴趣的东西。不一会儿,我在计算机废品中找到了一个黑灰色的东芝笔记本。那时Intel的奔腾I是最高性能的。我不能错过这个意外的收获,于是把它从回收站里拣了回来。

机器

一段时间之后,伴随着疑惑和好奇,我看着刚洗过的带有3.5寸软盘和一个PS/2键盘口的东芝T2130CS,还有一个并口,一个九针RS-232串口,一个VGA口外接显示器。系统键盘上还有个绿色的轨迹球。还有PCMCI控制器,设计为可插两个卡,现在看来有很多严重划痕,显然不能用了。很明显是英雄无用武之地。电池也不能充电了,但是我可以使用220V交流电。

当我打开电源时,显示一些信息,系统探测到16M内存。接着MS-DOS很快启动起来了。

过了一会,我尝试如何进入BIOS:打开电源,我按ESC直到显示“检查系统。接着请按[F1]键”。接着是嘟嘟声,我吓了一跳。我没有找到进入BIOS的更简单的方法,但是它帮助我发现BIOS版本是5.00并且这个笔记本处理器频率未定。(选项里没有表明任何有关CPU cache=Enable和处理器速度是多高)。我查看了一些不太理解的资料:根据配置,内建可显示4096或222K彩色模式(如果“K”意味着“千”那就很好了)。

为了弄清处理器,显卡和别的东西,我需要做些研究。我到东芝的网站看了看。通过各种参考资料,我最终猜测我的 T2130CS是款跟踪仿制的经典产品。我下载了一些有用的文件:

升级BIOS到5.20版

用户指南

诊断工具

不出我所料,用户指南是用于Windows的并且要求两个空的软盘。除此之外,(未经我许可)它就放了一些有意思的东西到C:\WINDOWS\SYSTEM 目录。通过指南,我了解到:

T2130CS所用的处理器是Intel 486DX4 75MHz.

硬盘为500MB.

10.4寸彩色显示器工作在640x480分辨率256色。 (尽管指南里关于彩色质量显然是混乱的: 我看到4096和256,还有222K,甚至256K)。

PCMCIA允许使用三类卡或是一个或两个一类和二类卡。

笔记本的尺寸是199x226x53mm,重量是3.17千克。

本子还有个埠符,但是我在储藏室没找到。

在指南里还找到一些零碎的信息。读完之后,我决定升级BIOS。当然,这项操作需要一个软盘(很庆幸不是需要两个)。配置程序要求我放软盘到软驱里,然后硬启动机器。接着我按照一些简单的指示,完成了操作。如果这步失败,我就不会在这絮叨了,一切顺利,我升级了BIOS版本到5.20。除了版本数字从5.00升到5.20之外,我没看到任何改观。尽管这样,我期待实质上做了一些看不见的改善。

感觉自己很幸运,我决定还是排除万难,跑起了诊断工具tdiags, 这使我彻底的抛弃了它可怜的功能。

换句话说,tdiags仅仅测试什么在工作。测试通常正确,但不是很智能。





第一个方法
在MS-DOS下一切完好, 但现在真正的黑客没人会用它。顺便说一下,读这个指南的时候,我时不时的用到Windows 3.x/95,但是正如你所了解的,这不是我的风格。我决定安装*NIX, 当然,将是...,不,不是Linux, 而是能真正跑在我的很旧性能又很低的机器上的。实际上,这个机器运行的很慢,硬盘很小,也不可能接个光驱。因此,我必须安装我自己的操作系统或是通过一批软盘或是通过LPT或COM口。无论那种情况下,我都需要一个紧凑和快的操作系统: 例如NetBSD。我一直没有忘记“当然,它可运行NetBSD”这个箴言。我决心安装NetBSD。除了NetBSD还有什么是我最好的选择呢?

我曾用软盘安装过一次,但这对于21世纪来说明显不适合。我面临串口(COM)和行式打印机(LPT)的选择。并口提供了更高的带宽,但是需要特殊的电线。附近的商店并没有这样的电线,我也不想自己做个。此外,很久之前我的工具盒里还有非调制的电缆。因此,我决定使用串口。

鉴于狂热激情和NetBSD-2.0发布,我成功的安装到了家里的机器上。我决定把它当作服务器,因为我打算在它的协助下通过非调制电缆使笔记本上网。顺便说下,为什么调制解调器主板通常只有一个串口?

安装服务器是我的一个小胜利,受此鼓舞,我很高兴的转向我的笔记本,兴冲冲的插上非调制电缆,并打开电源。接着机器死在某一步上了。由于不可能在笔记本上使用光驱。我不得不返回到我的服务器并准备安装软盘,NetBSD发行套件在/i386/installation/floppy/ 目录包含软盘映象。结果, boot1.fs和boot2.fs对我是可用的。该死的东芝指南里要求两个软盘,我把一个放到服务器的软驱并键入如下命令:
server# echo "/dev/cd0a /cdrom cd9660 ro,noauto 0 0" >> /etc/fstab
server# mount /cdrom
server# cd /cdrom/i386/installation/floppy
server# dd if=boot1.fs of=/dev/rfd0a bs=64k

我对第二个软盘和boot2.fs执行相同的操作。在NetBSD标准的安装软盘做好后,我可以从软盘引导了。

说时迟那时快,我立马这么做了。

接着是标准的NetBSD安装过程。我给硬盘分区,创建文件系统,接着选择安装套件。当然,我选择了最小化安装:内核,基本系统。我准备使用NFS安装发行套件因为我担心硬盘上没有足够的空间,因为如果我从FTP下载和解压到相应目录时很可能会那样。

接着我遇到了令人痛苦的挫折,你从图一自己看吧。


图一

基于“当然,它可运行NetBSD”的信念,我不希望这种诡异的事情发生。没找到网络接口,那串口怎样呢?我很困惑,感到有点不爽。特别是设置PPP是很简单的,更不必说SLIP。

我不想半途而废于是到Google上搜索。我一下跳进各种邮件列表文档,论坛和how-to。有时也找到和我一样通过串口安装的问题的热心人,但是没看到谁给出解决方法。也许是我找错地方了。这上面花了两天,什么也没找到,我决定自己解决这个问题。对于这样的自信感到很吃惊,我一头扎进了源代码。

补丁

我发现NetBSD的安装程序是sysinst它的源码在/usr/src/distrib/utils/sysinst目录。当然,首先安装源码包, 我在ftp://ftp.netbsd.org/下载的 ... 需要准备工具:

server# mkdir /usr/obj
server# cd /usr/src
server# ./build.sh tools
我不打算详述我深入sysinit后如何发现ignored_if_names[]这个数组问题的,这里列出NetBSD安装期间未初始化的网络接口名。SLIP和PPP接口(sl和ppp)不知怎的使其放到这个数组,于是sysinst忽略了它们,这就导致了如上图一所示的问题。
在研究安装软盘的源码后(/usr/src/distrib/i386/floppies/),真相变得清晰起来, pppd守护程序根本就没有。我尝试制作包含pppd的软盘都没成功;每次做的都超过了软盘的容量。也许你类似尝试能够成功。对于我来说,我幸运的突然发现,程序列表里的/sbin/slattach可以安装到软盘。我编辑 sysinst的源文件。不久我制作了sysinst20.patch补丁,在英文版的 sysinst里支持sl-interface。我也为NetBSD-1.6.2制作了补丁sysinst162.patch
为了应用到服务器的sysinst,我运行如下命令:

server# cd /usr/src/distrib/utils/sysinst
server# patch < /full/path/to/sysinst20.patch
现在可以是用我打过补丁的sysinst重启安装软盘了。首先,我编译了默认的INSTALL-kernel:

server# cd /usr/src/sys/arch/i386/conf
server# config INSTALL
server# cd /usr/src/sys/arch/i386/compile/INSTALL
server# make depend && make
在制作软盘之前,我必须制作MAKEDEV脚本:

server# cd /usr/src/etc
server# make MAKEDEV
最后,我返回到/usr/src/distrib/i386/floppies/ 制作软盘:

server# cd /usr/src/distrib/i386/floppies/ramdisk-big
server# make
server# cd ../instkernel
server# make
server# cd ../bootfloppy
server# make
在NetBSD-1.6.2里, 这么做:

server# cd /usr/src/distrib/i386/floppies/ramdisk-big
server# make
server# cd ../kernel-ramdisk
server# make netbsd.INSTALL.gz
server# cd ../bootfloppy
server# make
之后, 在/usr/src/distrib/i386/floppies/bootfloppy/目录 (对于NetBSD-1.6.2是/usr/src/distrib/i386/floppies/bootfloppy/obj/ ) 看到两个软盘安装映象boot1.fs 和boot2.fs。我安装到东芝用户指南里要求的两个软盘里:

server# cd /usr/src/distrib/i386/floppies/bootfloppy
server# dd if=boot1.fs of=/dev/rfd0a bs=64k
# (remove the first diskette an insert the second)
server# dd if=boot2.fs of=/dev/rfd0a bs=64k
软盘制作好了,我可以重启笔记本了。

第二次尝试
用软盘引导系统之后,执行了通常的安装步骤,分区,选择套件,等等,我把套件源码放到NFS上。现在可以看网络接口为sl0。由于这个补丁,我在下一步可以配置了。例如,我指定服务器的IP地址地址为192.168.10.10笔记本的IP地址为192.168.10.100。在网络配置的最后一步, sysinst建议为了启动SLIP我需要给 slattach一个标识。我保留了默认值,如图2所示。


图2

现在我需要配置服务器:

挂载NetBSD安装套件到NFS目录,例如, /cdrom。

启动nfs-server。

配置服务器的sl-interface。

我插入NetBSD发行套件到服务器端的光驱里并挂到/cdrom:

server# mount /cdrom
接着我配置NFS并启动相应的守护程序:

server# echo "/cdrom -ro -alldirs" >> /etc/exports
server# nfsd
server# mountd
server# rpcbind -l
最后,配置SLIP接口:

server# ifconfig sl0 inet 192.168.10.10 192.168.10.100
server# slattach -s 115200 -l /dev/tty00
现在我只要测试接口是否工作:

server# ping 192.168.10.100
PING 192.168.10.100 (192.168.10.100): 56 data bytes
64 bytes from 192.168.10.100: icmp_seq=0 ttl=255 time=20.564 ms
64 bytes from 192.168.10.100: icmp_seq=1 ttl=255 time=19.730 ms
64 bytes from 192.168.10.100: icmp_seq=2 ttl=255 time=20.750 ms
64 bytes from 192.168.10.100: icmp_seq=3 ttl=255 time=20.737 ms
^C
----192.168.10.100 PING Statistics----
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 19.730/20.445/20.750/0.484 ms
我很高兴看到我的T2130CS的响应接着回到笔记本上继续安装。我只需要指定NFS主机和何处安装的目录。我键入192.168.10.10 (我的服务器)和套件目录/cdrom/i386/binary/sets/。

现在只要最后一步就可证明(我的工作是否有效)。我屏住呼吸,我按下Enter。没发生什么大问题: 我的笔记本很慢但是可以正确的解压安装套件,如图三所示。


图3.

结果
安装过程自然不快,但是在一切完成之后,新鲜的NetBSD-2.0在我的古董东芝笔记本T2130CS上跑得很欢。我随后发现,X Window系统在笔记本上跑起来也没什么问题;完美的工作在640x480分辨率256色模式。尽管这已经算是另外一个故事了。

Mikhail Zakharov 现在是Moscow 银行主要的UNIX 管理员,他管理大批运行着各种Unix类操作系统的机器。
发表于 2008-5-9 17:00:58 | 显示全部楼层
翻译挺累的,顶你一把。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表