跳至主要内容

制作U盘启动的RAMDISK为根目录的FREEBSD完全版

http://bbs.chinaunix.net/forum/viewtopic.php?t=398680&start=0&postdays=0&postorder=asc

作者:YIWUTIAN
一:制作可以启动的映象文件
1:dd if=/dev/zero of=/mnt/image bs=1k count=50k
用dd命令生成一个文件,名为image,大小为5M。

2:mdconfig -a -t vnode -f image -u 0
建立一个用image为映象的ramdisk,设备为/dev/md0
-a 增加一个ramdisk
-t 代表ramdisk的类型
-f 代表用来作ramdisk的映象文件
-u 为ramdisk的设备号

3:disklabel -Bw /dev/md0
B 安装启动程序到ramdisk的启动标签。
w 用已有的启动程序写标签。(bsd分区)

4:newfs /dev/md0a
为a分区建立UFS文件系统。

5:mount /dev/md0a /mnt/ram
将md0a设备装载到/mnt/ram目录

6:拷贝启动一个bsd系统需要的文件到/mnt/ram:
包括/boot /etc /bin /sbin /dev /lib /libexec /root 等等。
为了方便检查可
ln -s bin sbin
ln -s bin usr/bin
ln -s bin usr/sbin
ln -s lib usr/lib
ln -s libexec usr/libexec
等等。
为了节约磁盘空间。/usr/lib可根据需要的程序拷贝。例如:sshd
ldd /usr/sbin/sshd命令可以列出sshd需要的lib文件,只拷贝需要的文件。
内核最好从新编译,只保留需要的设备。
然后用kgzip /boot/kernel/kernel压缩。
mv /boot/kernel/kernel.kgz /boot/kernel/kernel
修改/etc/fstab
删除不需要的部分(基本上都不需要)
加入
/dev/md0a / ufs rw 0 0
注意后面一定用0 0.否则rc过不了。因为fsck -p不能用到ramdsk上面。


7:cd /mnt
umount ram
卸载ramdisk
压缩image
gzip -9 image

二:制作可以启动的u盘

8:插入u盘(大多u盘都可以启动,大多p4主板都支持usbhdd方式启动)
disklabel -wB /dev/da0
newfs /dev/da0a
(前面讲过的分区,格式化)

9:只拷贝/boot到u盘。删除不要的ko文件
如果内核编译时选择了所有需要的模块可以全部删除ko文件。

10:编辑u盘里的/boot/default/loader.conf文件
在最后面加入:
exec="unset acpi_load"(如果你需要acpi可以不要这行,当然BIOS也必须打开,如果加入这行,bios中acpi必须打开)
exec=".(空格loading kernel空格) cr"(系统执行到这里将显示括号里的内容)
exec="load kernel"
exec=".(空格loading mdimage ) cr"
exec="load -t md_image /image"
去掉vfs.root.mountfrom=""前面的“#”号在“”号中填入:ufs:/dev/md0a
系统将/dev/md0a装载为根目录。

11:将image.gz 拷贝到u盘。

12:启动测试。


备注:
1:在测试image文件是否可用时最好直接试用:
方法:启动系统时出现菜单选6
输入:
unload
load kernel
load -t md_image /mnt/image
set vfs.root.mountfrom=ufs:/dev/md0a
boot
然后系统将不从硬盘启动,而从预先装载的image启动,反复检查出错信息,添加需要的文件。

2:多用ldd命令检查程序执行需要的lib文件。

3:由于系统启动过后可能有需要保存的内容,可以利用cron来解决。
比如我的ppp.secret
我写了个简单的sh 在系统启动时拷贝u盘根目录的ppp.secret 到/etc/ppp/和/tmp
然后写了个比较/etc/ppp/ppp.secret /tmp/ppp.secret的sh如果不同就备份/etc/ppp/ppp.secret到u盘根目录。
相信其他的需要保存的内容也可以参考我的方法。

4:这个东西可以运用到很多地方。防火墙、服务器、甚至工作站(ramdisk非常快)

5:本人系正中bsd菜鸟一个,有不对的地方多多提点。
编者注:关于一、6步下的启动FreeBSD所需要的文件,作者做了如下解释
1:/bin和/sbin全部
ln -s bin sbin
2: /lib和/libexec全部
3:/boot和/root全部.
4:mkdir tmp
chmod 1777 tmp
5: etc全部
6:mkdir usr
ln -s lib /usr/lib
/usr/lib/libo*
/usr/lib/libr*
/usr/lib/libp*
/usr/lib/liby*
/usr/lib/pam*
7:其实最好根据具体应用来决定需要的文件。

8:然后启动系统时系统提示需要的文件

9:由于系统从u盘启动时已经读取内核,所以image文件中可以没有kernel文件。
但是一些可能会用到的ko文件需要放到image中。这样可以减小不少容量。

10:当制作完成后,看看image文件装载到内存中磁盘空间剩余多少,如果剩余较多就需要减小image文件的大小。就是减少dd /dev/zero image bs=1k count=??k中??的数值。

评论

此博客中的热门博文

使用StrongSwan搭建 IKEv1 IKEv2 VPN服务器

#2016-01-04 决定将本文作废,因我要另再写新版本的配置。这篇作于 2013年,而strongswan已经更新很多版本。 #本文需要有独立的VPS,如果你需要一台速度快,每月30元的左右的VPS,可以使用我的邀请注册 http://www.vultr.com/?ref=6813064 并且在注册时使用 SSDVPS 可以送 $20(或者 $10 不等)。一定要选日本线路,这个到国内延迟约40ms ~ 100ms ,一般是 80ms 左右,非常快非常稳定,一个月32元,可以和几个人合租了。 #LOG:2014-04-30 对ipsec.conf进行修改,增加了android手机的兼容,现在可以支持完整支持android 自带的VPN设置啦~~~~ #LOG:2013-0609 对ipsec.conf进行修改,加入清楚DPD代码,防止IP 地址池不正确占用 #LOG: 2013-0519 删除ipsec.conf 中多余的conn iOS一节,这本是我一年前调试用的,时间不起作用; 删除了 %default中的 rightsubnet ,如果不删除,在定义了多段IP路由的情况下会导致账号无法上网(只有一段IP没这个bug),感谢  JackWindows  ‏ @ JackWindows #LOG 2013-05-12 修正bug,原配置文件会导致一个ID不可以同时多次登陆。得蒙  @ KhaosT   指点,对  strongswan.conf 加入duplicheck.enable = no ,对 ipsec.conf 加如 uniqueids=never #完成度100% 在我们生活的周围,通常要用到很多种VPN: PPTP, L2TP/IPSec, Cisco IPSec, IKEv2, 这些不同类型的VPN覆盖了目前我们常见的所有手机或者电脑平台,比如 iOS, Blackberry OS, BB10, Android, WebOS, Windows XP, Windows Vista/7/8, Unix/Unix-like。 (*如果你正在找blackberry 翻墙方法、ios ipsec vpn、windows IKEv2 VPN、Blackberry...

简易 APN Proxy (APN代理)的搭建

2012年2月1日 ,新增加了一种方案,请看 《 搭建增强型代理服务器(APN Proxy) 》 2012-01-03 更新 3proxy 及 监控进程脚本,分别见 B 3) 和 曾经在twitter被封锁的时候,我在长城宽带干过一件事,那就是将twitter的请求和通讯使用SSH,让全网用户可以无阻访问,不过也因此付出了代价,略不去说了。 后来得厨神 @paveo 的创意,何不将其用在手机等移动设备上?厨神的APN现在已经很成熟并在免费有限量专供中。我今天这里写得,是如何搭建自己的APN Proxy(APN 代理),但在阅读下面内容之前,需要一个刚性要求:一台在国内的Unix-Like的主机(可以是Linux/FreeBSD/Mac Osx Server/Solaris等等)并且是公网IP地址以及在国外的VPS主机(Unix类)。这个要求可以看出成本比较高,所以我看到淘宝上已经有人开始出售APN代理了,这个可以理解。 第一部分 原理 原理图1 如上图所示,我们要实现的功能原理是,将上网请求先发送到“国内VPS”,再由“国内VPS”通过SSH隧道转送到国外,最终实现无阻上网。点击查看大图可以看出,主要配置是在“国内VPS”上,包括配置SSH -D、Squid、Privoxy或者Polipo(socks代理程序你可以选自己喜欢的)。 第二 配置 1 国外VPS 国外VPS上,你需要有一个SSH帐户,并且请注意,使用密钥方式登录你的SSH而非密码,之所以如此,是为了下一步建立长久的SSH以及断线自动重连做准备,这个很重要。关于“SSH 免密码 密钥 登录”请使用google看一下。 这里有一个小插曲,部分centos 上如果默认的话,SSH帐户会报错,大约 是adminitstatly close之类,这有可能是 openfile数目问题,可以轻松解决。我非Linux爱好者,所以是临时google,并没有记录下来,你只要记得如果遇到同样问题,5分钟之内就可以google解决。 2 国内VPS 这一节将会是我们的主战场,基本上,我将会按下面的逻辑图来进行配置,这其中会涉及很多文件的配置,需要你注意哦,最后部分我会提供部分配置文档下载,由于我使用的是FreeBSD,因此会有少量差...

Blackberry PushMail企业激活利器:BlackberryUnite!---免费的BES哦

很久很久以前,我们公司里有三部黑莓,我们当时想能不能破解BES来实现我们几个的PushMail,但是失败了;很长时间以来,我们众多的莓友为了能实现PushMail,不断地尝试着尚邮和Berrymail等等邮件客户端,于是延时和耗电成为了我们的焦点。而今天,我们原生的push mail终于可以手机上使用了,这就是blackberry Unite! 1.0.3,在我的ota上早已经提供下载。 1 安装方法: 在安装blackberry Unite的时候,请注意,尽量选择Sever版的系统,目前我测试了在win 2000 ADS,Win 2003 都可以一次性成功,而我自己的XP则是没有一次成功。当然并不绝对,Twitter 好友 @smallzheng 就能成功。还要注意的是,不要使用精简的XP,我试过了三个ghost版的XP,全都没有成功,因为已经没有力气再折腾所以不打算重装系统测试了。 其实Blackberry Unite过程中没有任何特别的,一路下一步就行了,根本不需要用代理或者国外的VPN!但是有个技巧要注意一下,因为在安装过程中,blackberry Unite!会强制安装.NET Framework 2.0 和 Java 6 Update 2,时间较长,你可以事先从我的服务器上下载安装,这样的话BU就只会下载安装MSSQL和msxml4.0了。 这一步里,由于要下载和安装,所以那个程序会卡死,请你能注意一下,不要看着程序假死就强制关闭,这样一来程序安装不完全,就会启动不了。我在这里了吃了大亏了。 2 安装后,桌面上就会多出一个链接和一个文件夹。点一下那个链接就能直接使用了。我这里重点说一下无法打开那个链接的情况也就是 http://localhost:8080/unite 无法打开。 为了能实验成功这个软件,我在Twitter上号召过大家,也有好心的推友转发了那个号召,实际上那是因为我当时我已经14个小时还没有解决 这个问题,由于blackberry Unite资料很少,如果有需要请参阅一些BES的资料。 a  Blackberry Unite需要在XP的服务里加几个常规服务进去,他们都是有依赖的。如果启动不成功,请你去看一下依赖有没有问题。 b 我的依赖就没有问题,但是仍然不能启动。教你一个方法,可以测试一下是不...