设为首页 收藏本站
查看: 1379|回复: 0

[经验分享] 在VMware 10.0上安装NetBSD 1.0

[复制链接]

尚未签到

发表于 2015-4-7 13:13:09 | 显示全部楼层 |阅读模式
  最近开始系统的学习计算机网络,买了被奉为经典中的经典《TCP/IP详解 卷2:实现》。不过这本书确实也有点过时了,讲解的是4.4BSD-Lite的代码,和当前BSD发布版的代码已经有很大差异了。根据在网络上搜索的结果,FreeBSD-2.0、NetBSD-1.0和BSD/OS 2.0都是基于4.4BSD-Lite的,但是BSD/OS在当时是商业版,现在也没有找到这个版本的源代码。FreeBSD的i386架构的源码,最接近的只有2.0.5版本的,2.0的不知道是没有,还是已经丢失了。比较了FreeBSD-2.0.5、NetBSD-1.0的代码和4.4BSD-Lite代码的差异,FreeBSD的已经差异很大,NetBSD的则几乎没有差异!所以最后决定安装NetBSD-1.0版本的系统。安装的目的当然是为了能对系统的代码进行修改并测试,只是看代码而不能修改多没意思啊^_^.
  折腾了好几天,最后终于是安装成功并且内核的重编和更新也没有问题了。简单记录下经过千辛万苦得出来的步骤:
  1.最开始直接用1.0版本的kcaha-10.fs/kcbt-10.fs进行安装,但是这两个安装映像死活找不到内核文件netbsd,查看过1.0的内核代码,估计问题是出在打开软盘和读写软盘的部分,不过内核代码没法编译,在1.3版本的系统里编译也没通过,最后只能无奈放弃这个安装方式了。
  2.开始的时候1.0版本的没法安装成功,所以就下载了往后的版本,最后确定1.3版本是最接近可以正确启动安装程序的版本。但是比对1.3版本的代码和1.0的代码后,发现1.3版本的网络代码部分也已经改动了不少了,对查看源代码不是很方便。尝试过在1.3版本的系统下直接将内核文件netbsd换成1.0版本的,不过最后系统没法正常启动。在1.3版本的系统下编译1.0版本的内核代码,也不是很顺利。不过对1.3版本的安装过程中,发现安装程序只是将编译好的应用和内核文件直接解压到硬盘上,然后做一些配置工作,之后就可以重启并从硬盘引导安装好的系统了。所以想到使用1.3版本的安装程序,将1.0版本的系统解压到硬盘上,应该可以将1.0版本的系统安装成功。首次尝试这个方法的时候,重启之后从硬盘引导1.0版本的系统时,root文件系统居然变成只读的,其他文件系统/usr、/var和/home都没有mount成功。当时以为这个方法行不通,接着尝试了其他的方式,也都没有成功,最后又回到了这个方式上来,不过糊里糊涂的解决了文件系统挂载的问题后,一下子所有问题都迎刃而解了。
  3.首先创建一个虚拟机,需要带有软盘和光盘,软盘用于存放安装程序,光盘存放编译好的应用和内核。当然,硬盘是必须要有的...
DSC0000.png
  系统类型选择“Other”:
   DSC0001.png
  
  软盘使用的镜像文件就是NetBSD-1.3的启动镜像文件boot.fs:



[tortoise@sea floppies]$ pwd
/home/tortoise/Downloads/NetBSD-1.3/i386/installation/floppies
[tortoise@sea floppies]$ bximage
========================================================================
bximage
Disk Image Creation Tool for Bochs
$Id: bximage.c 11315 2012-08-05 18:13:38Z vruppert $
========================================================================
Do you want to create a floppy disk image or a hard disk image?
Please type hd or fd. [hd] fd
Choose the size of floppy disk image to create, in megabytes.
Please type 0.16, 0.18, 0.32, 0.36, 0.72, 1.2, 1.44, 1.68, 1.72, or 2.88.
[1.44]         -- 这里直接回车
I will create a floppy image with
cyl=80
heads=2
sectors per track=18
total sectors=2880
total bytes=1474560
What should I name the image?
[a.img] boot.img
Writing: [] Done.
I wrote 1474560 bytes to boot.img.
The following line should appear in your bochsrc:
floppya: image="boot.img", status=inserted
[tortoise@sea floppies]$ dd if=boot.fs of=boot.img
2880+0 records in
2880+0 records out
1474560 bytes (1.5 MB) copied, 0.0233093 s, 63.3 MB/s
[tortoise@sea floppies]$
  
  光盘镜像文件包含的文件列表如下:



[iyunv@sea bin]# ls -l /mnt/cd
total 15550
-r-xr-xr-x. 1 root root 6722031 May  7 19:55 base.tgz
-r-xr-xr-x. 1 root root 4446591 May  7 19:57 comp.tgz
-r-xr-xr-x. 1 root root   51083 May  7 19:56 etc.tgz
-r-xr-xr-x. 1 root root 1074976 May  7 19:55 games.tgz
-r-xr-xr-x. 1 root root  349556 May  7 19:59 kern.tgz
-r-xr-xr-x. 1 root root  761644 May  7 19:56 man.tgz
-r-xr-xr-x. 1 root root 1711013 May  7 19:56 misc.tgz
-r-xr-xr-x. 1 root root  805086 May  7 19:57 text.tgz
[iyunv@sea bin]#
  除了kern.tgz外,其他的每个文件都对应NetBSD-1.0/i386/binary下的一个目录,文件生成方式如下(以base.tgz文件为例,其他文件类似):



[tortoise@sea base10]$ pwd
/home/tortoise/Downloads/NetBSD-1.0/i386/binary/base10
[tortoise@sea base10]$ cat base10.* > base.tgz
[tortoise@sea base10]$ tar -tzvf base.tgz | head
drwxr-xr-x root/wheel        0 1994-10-20 03:27 .
drwxr-xr-x root/wheel        0 1994-10-20 03:03 ./altroot
drwxr-xr-x root/wheel        0 1994-10-20 03:10 ./bin
-r-xr-xr-x bin/bin       40960 1994-10-20 03:10 ./bin/[
-r-xr-xr-x bin/bin       40960 1994-10-20 03:08 ./bin/cat
-r-xr-xr-x bin/bin       45056 1994-10-20 03:08 ./bin/chmod
-r-xr-xr-x bin/bin       45056 1994-10-20 03:09 ./bin/cp
-r-xr-xr-x bin/bin      200704 1994-10-20 03:09 ./bin/csh
-r-xr-xr-x bin/bin       57344 1994-10-20 03:09 ./bin/date
-r-xr-xr-x bin/bin       45056 1994-10-20 03:09 ./bin/dd
[tortoise@sea base10]$
  kern.tgz文件是从NetBSD-1.0的启动镜像文件kcaha-10.fs(kcbt-10.fs应该也可以,不过我没试过这个文件)里把netbsd文件抽取出来打包压缩生成的:



[tortoise@sea floppies]$ pwd
/home/tortoise/Downloads/NetBSD-1.0/i386/floppies
[tortoise@sea floppies]$ bximage
========================================================================
bximage
Disk Image Creation Tool for Bochs
$Id: bximage.c 11315 2012-08-05 18:13:38Z vruppert $
========================================================================
Do you want to create a floppy disk image or a hard disk image?
Please type hd or fd. [hd] fd
Choose the size of floppy disk image to create, in megabytes.
Please type 0.16, 0.18, 0.32, 0.36, 0.72, 1.2, 1.44, 1.68, 1.72, or 2.88.
[1.44] 1.2
I will create a floppy image with
cyl=80
heads=2
sectors per track=15
total sectors=2400
total bytes=1228800
What should I name the image?
[a.img]  
Writing: [] Done.
I wrote 1228800 bytes to a.img.
The following line should appear in your bochsrc:
floppya: image="a.img", status=inserted
[tortoise@sea floppies]$ dd if=kcaha-10.fs of=a.img
2400+0 records in
2400+0 records out
1228800 bytes (1.2 MB) copied, 0.0181592 s, 67.7 MB/s
[tortoise@sea floppies]$ sudo mount -o loop -r a.img /mnt/floppy
[tortoise@sea floppies]$ ls -l /mnt/floppy/
total 659
drwxr-xr-x. 2 root root    512 Oct 24  1994 bin
-rwxr-xr-x. 1 root root   2005 Oct 24  1994 copy_kernel
drwxr-xr-x. 2 root root   2560 Oct 24  1994 dev
drwxr-xr-x. 2 root root    512 Oct 24  1994 mnt
-rwxr-xr-x. 1 root root 659600 Oct 24  1994 netbsd
drwxr-xr-x. 2 root root    512 Oct 24  1994 sbin
drwxr-xr-x. 3 root root    512 Oct 24  1994 usr
[tortoise@sea floppies]$ cp /mnt/floppy/netbsd ./
[tortoise@sea floppies]$ tar -cvf kern.tar ./netbsd
./netbsd
[tortoise@sea floppies]$ gzip kern.tar
[tortoise@sea floppies]$ mv kern.tar.gz kern.tgz
[tortoise@sea floppies]$ tar -tzvf kern.tgz
-rwxr-xr-x tortoise/tortoise 659600 2014-05-14 23:12 ./netbsd
[tortoise@sea floppies]$
  8个tgz文件都创建好之后,放在同一个目录下生成iso镜像文件:



[tortoise@sea bin]$ ls -l
total 31468
-rw-rw-r--. 1 tortoise tortoise  6722031 May  7 19:55 base.tgz
-rw-rw-r--. 1 tortoise tortoise  4446591 May  7 19:57 comp.tgz
-rw-rw-r--. 1 tortoise tortoise    51083 May  7 19:56 etc.tgz
-rw-rw-r--. 1 tortoise tortoise  1074976 May  7 19:55 games.tgz
-rw-rw-r--. 1 tortoise tortoise   349556 May  7 19:59 kern.tgz
-rw-rw-r--. 1 tortoise tortoise   761644 May  7 19:56 man.tgz
-rw-rw-r--. 1 tortoise tortoise  1711013 May  7 19:56 misc.tgz
-rw-rw-r--. 1 tortoise tortoise   805086 May  7 19:57 text.tgz
[tortoise@sea bin]$ mkisofs -o NetBSD-1.0-bin.iso *.tgz
I: -input-charset not specified, using utf-8 (detected in locale settings)
62.91% done, estimate finish Wed May 14 23:19:53 2014
Total translation table size: 0
Total rockridge attributes bytes: 0
Total directory bytes: 0
Path table size(bytes): 10
Max brk space used 0
7952 extents written (15 MB)
[tortoise@sea bin]$
  打包压缩成tgz文件格式,是为了符合NetBSD-1.3版本的安装文件格式要求。
  
  4.启动虚拟机,开始安装过程:
   DSC0002.png
DSC0003.png
DSC0004.png
DSC0005.png
DSC0006.png
DSC0007.png
DSC0008.png
DSC0009.png
DSC00010.png
  自定义硬盘的分区方式,
DSC00011.png
DSC00012.png
  根分区使用2G空间,交换分区使用64M,为内存的两倍,
DSC00013.png
  根据硬盘的容量进行分区安排就可以了,
DSC00014.png
DSC00015.png
DSC00016.png
  回车之后就真正格式化硬盘了,
DSC00017.png
DSC00018.png
  按回车后即进入软件包安转界面,选者cdrom安装方式,
DSC00019.png
  按Ctrl-Z退出安装进程,查看当前已挂载的设备,将光盘挂载到系统上(不挂载的话会一直找不到文件):
DSC00020.png
  进入挂载的目录之后再使用fg命令回到安装进程,这里如果不cd进入光盘的挂载目录的话,好像会有问题,懒得去确认了,哈哈:
DSC00021.png
DSC00022.png
  忽略报错信息,继续:
DSC00023.png
  文件路径和之前输入的不一样的,要不是强制加上的,要不就是有bug了,修改路径后继续:
DSC00024.png
DSC00025.png
  再次忽略报错信息,继续往下:
DSC00026.png
DSC00027.png
DSC00028.png
  回车之后就会将cdrom中的文件解压到硬盘上,
DSC00029.png
DSC00030.png
  输出信息有点乱,直接回车:
DSC00031.png
  回到最开始的安装界面了,这里可以直接退出了。
  
DSC00032.png
  把硬盘的分区都挂载到系统上,然后使用chroot命令跳转到/mnt目录下:
DSC00033.png
  跳转成功,进入/etc目录下用 vi 修改 rc 文件:
DSC00034.png
DSC00035.png
  红色方框内的就是需要修改的地方。按照实际的分区输入分区挂载的命令,保存之后退出vi。
  先断开软盘的连接,再reboot重启系统:
DSC00036.png
DSC00037.png
DSC00038.png
  
  NetBSD-1.0 登录成功!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-54599-1-1.html 上篇帖子: linux 安装vmware-tools详解 下篇帖子: 把vmware workstation最小化到系统托盘(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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