免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 13465 | 回复: 17
打印 上一主题 下一主题

[FreeBSD] [原创]制作U盘启动的RAMDISK为根目录的FREEBSD完全版 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-09-01 15:11 |只看该作者 |倒序浏览
一:制作可以启动的映象文件
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菜鸟一个,有不对的地方多多提点。 :em11:

论坛徽章:
0
2 [报告]
发表于 2004-09-01 15:39 |只看该作者

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

不错,不错。我顶

论坛徽章:
0
3 [报告]
发表于 2004-09-01 16:00 |只看该作者

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

值得收藏,建议加入精华。

论坛徽章:
0
4 [报告]
发表于 2004-09-01 16:33 |只看该作者

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

值得学习啊!

论坛徽章:
0
5 [报告]
发表于 2004-09-02 14:53 |只看该作者

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

写的不错,等一会试试

论坛徽章:
0
6 [报告]
发表于 2004-09-02 22:21 |只看该作者

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

"6:拷贝启动一个bsd系统需要的文件到/mnt/ram:
包括/boot /etc /bin /sbin /dev /lib /libexec /root 等等。"

不知是否可以给个文件列表,呵呵。

论坛徽章:
0
7 [报告]
发表于 2004-09-03 14:16 |只看该作者

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

不错,马上试试看,顶 !

论坛徽章:
0
8 [报告]
发表于 2004-09-04 13:59 |只看该作者

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

原帖由 "eagerlinuxer" 发表:
"6:拷贝启动一个bsd系统需要的文件到/mnt/ram:
包括/boot /etc /bin /sbin /dev /lib /libexec /root 等等。"

不知是否可以给个文件列表,呵呵。

是这样的:
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中??的数值。

论坛徽章:
0
9 [报告]
发表于 2004-10-08 16:44 |只看该作者

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

请问/dev中的设备文件怎么建立?5.2中没有了MAKEDEV命令了。

论坛徽章:
0
10 [报告]
发表于 2004-11-02 09:48 |只看该作者

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

5.2不用makedev.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP