手动安装freebsd

上周在newsmth上和intron商量说准备做一个freebsd安装程序,既然打算着手做这个,那么弄明白freebsd的安装流程,是必要的。

今天是拿了一个空闲的U盘做实验

1、初始化硬盘分区表
fdisk –BI da3或者 gpart create -s MBR da3 ,然后gpart add –b xxx –s xxx –t frebsd-ufs da3
需要做两件事情,初始化硬盘分区表,把boot0填进去,把freebsd所在的主分区设置为bootable

2、初始化disklabel
bsdlabel -B -w da3s1 auto
写一个标准的label到da1s1,并且把boot2放进去

3、初始化ufs2文件系统
newfs /dev/da3s1a

4、挂载,放置引导程序和kernel

mkdir –p /mnt/usb
mount /dev/da3s1a /mnt/usb
mkdir /mnt/usb/boot

因为boot2之后是loader,所以需要把loader、loader.4th、support.4h、loader.rc、defaults/loader.conf 复制过来。
重启了一遍,发现成功了,继续放kernel
建一个kernel文件夹,把/boot/kernel/kernel复制过来,其它的暂且不要
再次重启,发现走到挂root fs的时候停了。需要手动输入ufs:/dev/da0s1a继续。呃……难道是因为没有/etc/fstab ? 不管。往下继续走,开始到用户态了,找不到init

5、放用户态程序
经我试验,实际只需要2个。/sbin/init和/bin/sh. 因为/bin/sh是动态链接的,所以我从/rescue复制了一个过来。但是/dev目录必须得有,不然没有devfs,走不到sh这一步。

大功告成!

实际上,loader不是必须的。真想砍掉它,forth那套东西真是烦人。如果是试图从win下最小安装一个freebsd,那么只需要boot2、kernel、init、sh一共4个东西就够了。我的想法是,在winxp下做个小工具完成一个最小化安装。然后用户切换到freebsd下,用pkg_add和sysinstall完成其它事情。最小化安装freebsd需要多久呢?我以前的纪录是大约50秒(包括重启),我想再突破。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥