免费注册 查看新帖 |

Chinaunix

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

[FreeBSD] 一步步教你安装 FreeBSD 9.0 Beta1 于 GPT + ZFS [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-09 20:02 |只看该作者 |倒序浏览
本帖最后由 zeissoctopus 于 2011-10-30 21:57 编辑

修正games.txz 錯誤 2011年 10 月 31 日

已知问题
FreeBSD 9.0-BETA1 虽然以全新 bsdinstaller 来安装,它可以透过 gpart 来把硬盘格式化 GPT+freebsd-zfs,但可惜它仍未支援 mount ZFS 来安装。简言之,
FreeBSD 9.0-BETA1 安装程式仍未支援 GPT+ZFS 安装。

本文范围
  • 重新划分分割表,把所有旧资料清空
  • 使用 gpt 规划硬盘分割表
  • 单颗硬盘全使用 ZFS
  • 使用 ZFS 来规划 SWAP,不必另加独立 SWAP 分区
  • 最少安装 FreeBSD Base,reboot 后可以成功由 ZFS 启动 FreeBSD。
  • 本文不包括网络设定,第三方软件安装


本文参考 2 个网页


硬件环境
Acer Aspire 1810TZ 小笔电
BIOS 3.03
4GB DDR2 RAM
320GB 硬盘

安装媒体
FreeBSD-9.0-BETA1-amd64-memstick.img

硬件准备
BIOS 中把 SATA 设为 AHCI 模式
BIOS 设定由 U 盘启动

安装媒体准备
下载 FreeBSD-9.0-BETA1-amd64-memstick.img,把它写入 U 盘

U 盘启动 FreeBSD 9.0

进入 Live 模式
不要选 install 选 Live
输入 root 按 ENTER 进入 Live 系统 ( 不用密码 )
我建议按 ALT+F2 转至另一个 console 进行续后的程序,减少受 kernel 信息的搔扰

创建一个 RAMDISK,把定 mount 于 /tmp,用来暂存下文提及必要档案 /tmp/zpool.cache
  1. umount /dev/md1
  2. mdmfs -s 512M md1 /tmp
复制代码
建立 GPT+ZFS 分割表

找出硬盘的名称,第一个 AHCI 硬盘通常是 /dev/ada0
  1. ls /dev/ad*
复制代码
检查硬盘是否有分割区
  1. gpart show ada0
复制代码
如果有分割区,使用 gpart 清空
由于每部电脑情况不同,这部份请自行 man gpart 学习有关 gpart delete 和 gpart erase 的语法

清空旧资料后,现在可以重新划分 gpt 分割表
  1. gpart create -s gpt ada0
复制代码
加入 FreeBSD Boot loader 至第一个分割区
  1. gpart add -b 34 -s 64k -t freebsd-boot ada0
复制代码
把余下全部硬盘容量都分给 ZFS 并把它配至于第二个分割区
  1. gpart add -t freebsd-zfs ada0
复制代码
把 FreeBSD gpt+zfs 的 boot loader 写入第一个分割区
  1. gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
复制代码
在第二个分割区中,创建单碟模式的 ZFS,把它命令为 zroot
  1. zpool create zroot /dev/ada0p2
  2. zpool set bootfs=zroot zroot
  3. zfs set checksum=fletcher4 zroot
复制代码
使用 zfs create 命令,创建 SWAP 于 ZFS 之中,我笔电有 4GB RAM,所以想创建一个 10GB SWAP
  1. zfs create -V 10G zroot/swap
  2. zfs set checksum=off zroot/swap
  3. zfs set org.freebsd:swap=on zroot/swap
复制代码
使用 zfs create 命令,自行创建系统目录结构
  1. zfs set mountpoint=/mnt zroot
  2. zfs create zroot/usr
  3. zfs create zroot/var
  4. zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp
  5. zfs create -o compression=lzjb -o setuid=off  zroot/usr/ports
  6. zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
  7. zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages
  8. zfs create -o compression=lzjb -o exec=off -o setuid=off  zroot/usr/src
  9. zfs create -o compression=lzjb  -o exec=off     -o setuid=off   zroot/var/crash
  10. zfs create -o exec=off -o setuid=off zroot/var/db
  11. zfs create -o compression=lzjb  -o exec=on -o setuid=off  zroot/var/db/pkg
  12. zfs create -o exec=off -o setuid=off   zroot/var/empty
  13. zfs create -o compression=lzjb  -o exec=off -o setuid=off  zroot/var/log
  14. zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
  15. zfs create -o exec=off -o setuid=off   zroot/var/run
  16. zfs create -o compression=lzjb  -o exec=on -o setuid=off   zroot/var/tmp
复制代码
使用 zpool export 和 zpool import 把刚才规划的 ZFS mount 进 /mnt,以便下一步安装系统
  1. zpool export zroot
  2. zpool import -o cachefile=/tmp/zpool.cache zroot
复制代码
现在,你所规划的 ZFS 已 mount 到 /mnt,你可以 ls /mnt,会发现有 /mnt/usr /mnt/var /mnt/tmp,此时请完成以下命令
  1. chmod 1777 /mnt/tmp
  2. cd /mnt ; ln -s /usr/home home
  3. chmod 1777 /mnt/var/tmp
复制代码
正式安装 FreeBSD 9.0-BETA1 入 /mnt 中的 ZFS,此时以转用 sh 做 SHELL 为佳,请留意 for 那一行,因为太长,宜使用 \ 分行输入之
  1. sh
  2. cd /usr/freebsd-dist
  3. export DESTDIR=/mnt
  4. for file in base.txz lib32.txz kernel.txz doc.txz games.txz ports.txz src.txz; \ do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done
复制代码
你已把所有 Base 档案安装入 /mnt 中的 ZFS 了,以下一步必需要做,否则你重启电脑会失败,把 zpool.cache 拷贝到指定位置
  1. cp /tmp/zpool.cache /mnt/boot/zfs/zpool.cache
复制代码
最后,为新系统编写相关的 /etc/rc.conf /etc/fstab /boot/loader.conf,指示新系统由 ZFS 启动。注意,未重新启动之前,有关档案是放在 /mnt 以下

编写 rc.conf
  1. echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf
复制代码
编写 loader.conf
  1. echo 'zfs_load="YES"' >> /mnt/boot/loader.conf
  2. echo 'vfs.root.mountfrom="zfs:zroot"' >> /mnt/boot/loader.conf
复制代码
编写 fstab (其实这档案不必有内容,因为一切 mount point 和 swap 都会在启动 ZFS 时自动 mount 好,这个空 fstab 是为了满足一些 系统 script 而存在而已)
  1. touch /mnt/etc/fstab
复制代码
还有最后一步!指示你的 ZFS mount 为 /
  1. zfs set readonly=on zroot/var/empty
  2. zfs unmount -a
  3. zfs set mountpoint=legacy zroot
  4. zfs set mountpoint=/tmp zroot/tmp
  5. zfs set mountpoint=/usr zroot/usr
  6. zfs set mountpoint=/var zroot/var
复制代码
恭喜你,一切大功告成,只要你输入 reboot,重新由硬盘启动 FreeBSD 9.0BETA,你便可以享受全新 FreeBSD 9.0 BETA + GPT + ZFS 的乐趣
重启后,记得以 root 登入,用 tzsetup 设定时区,用 passwd 设定 root 的密码

论坛徽章:
0
2 [报告]
发表于 2011-08-09 22:16 |只看该作者
按照你的一步步做完  重启之后
  1. gptzfsboot:erroe 1 lba 64
  2. gptzfsboot:error 1 lba 1
  3. gptzfsboot:No zpools  loated can't boot
复制代码

论坛徽章:
0
3 [报告]
发表于 2011-08-09 22:21 |只看该作者
本帖最后由 zeissoctopus 于 2011-08-09 22:24 编辑
按照你的一步步做完  重启之后
BSDLover101 发表于 2011-08-09 22:16


你 gpart 改了用 freebsd-zfs 未? 不是 freebsd-ufs
  1. gpart add -t freebsd-zfs ada0
复制代码
若你仍然有問題,莫非是 BIOS 不容於 GPT+ZFS ?

我的 Acer 小筆電運行得非常順暢

论坛徽章:
0
4 [报告]
发表于 2011-08-09 22:36 |只看该作者
本帖最后由 BSDLover101 于 2011-08-09 22:41 编辑

改了

不知道  反正GPT+UFS可以用     用BSD的loader也能启用存放个人数据的ZFS

dell n4020  250GB 2GB DDR3      双核inter 2.0GHZ  cpu

在虚拟机上也行   在实机就是那三行错误

我用的是DVD-9-BETA     而不是USB-9-BETA

不知道是不是DVD和USB 释放的文件不一样   你可以帮忙用DVD测试下吗

论坛徽章:
0
5 [报告]
发表于 2011-08-09 23:34 |只看该作者
改了

不知道  反正GPT+UFS可以用     用BSD的loader也能启用存放个人数据的ZFS

dell n4020  250GB 2G ...
BSDLover101 发表于 2011-08-09 22:36


DVD 和 U 內容盤怎會不一致呢?

若我是你,至少會試
更新
BIOS
以 MBR 來安裝 ZFS 因為此方法會使用另一個 /boot/zfsboot 引導

论坛徽章:
0
6 [报告]
发表于 2011-08-10 12:09 |只看该作者
gpt . zfs 和ufs到底是怎么回事?
zfs分区和ufs分区有什么不同?优缺点是什么?

论坛徽章:
0
7 [报告]
发表于 2011-08-10 13:09 |只看该作者
gpt . zfs 和ufs到底是怎么回事?
zfs分区和ufs分区有什么不同?优缺点是什么?
阳光QQ 发表于 2011-08-10 12:09


百度一下,你就知道

论坛徽章:
0
8 [报告]
发表于 2011-09-09 16:08 |只看该作者
我在xp的vmware7.0上安装试验,bsd安装文件为 beta2-dvd1,进去后进入livecd模式。虚拟主机配置双硬盘8g,内存512m。


什么情况?为什么不能自动挂载呢?
以下是结果

接下来需要怎么做呢?

论坛徽章:
0
9 [报告]
发表于 2011-09-09 16:56 |只看该作者
我在xp的vmware7.0上安装试验,bsd安装文件为 beta2-dvd1,进去后进入livecd模式。虚拟主机配置双硬盘8g,内 ...
vity 发表于 2011-09-09 16:08


請留意 livecd 模式時的根目錄是唯讀,
你想掛任何檔案系統在一個唯讀根目錄,當然不成功

论坛徽章:
0
10 [报告]
发表于 2011-09-09 17:07 |只看该作者
本帖最后由 vity 于 2011-09-09 17:48 编辑

多谢
但是,为什么程序要这么运行呢?

zpool增加的pool信息是不是已经写入硬盘中了呢?

那样的话,我用 mountpoint 指定别的一个路径挂载pool就行了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP