FreeBSD makeworld的过程

来源:岁月联盟 编辑:zhu 时间:2008-01-18
FreeBSD makeworld的过程内容简介:【FreeBSD教程】 去小恶魔学园没找到, 只好自己翻译一下, 和原版有些出入, 加上一些自己的理解, 有误还请指出 英文原版file:///usr/share/doc/en/books/handbook/makeworld.html 注重事项 * 备份系统, 备份一下总不至   【FreeBSD教程】去小恶魔学园没找到, 只好自己翻译一下, 和原版有些出入, 加上一些自己的理解, 有误还请指出
  英文原版file:///usr/share/doc/en/books/handbook/makeworld.html
  
  注重事项
  
  * 备份系统, 备份一下总不至于吃亏
  * 订阅对应邮件列表, 希望你的英文不至于太差, 在对应邮件列表上贴上你问题的描述, 描述清楚出现的问题及受影响的系统
  
  STABLE: freebsd-stable@FreeBSD.org
  CURRENT: freebsd-current@FreeBSD.org
  
  升级步骤(假设你已经同步到要升级的代码)
  
  1. 读一下/usr/src/UPDATING, 上面由一些你可能需要注重的事项, 一定要读一下, 但并不代表这一定比从邮件列表上得到的信息有用, 所以推荐订阅邮件列表
  
  2. 检查/etc/make.conf, 查看/etc/make.conf和/etc/default/make.conf的不同之处, /etc/default/make.conf中包含一些缺省定义, 不过大部分都被注释掉了, 可以考虑把它们加入到/etc/make.conf中, 不过要记得/etc/make.conf所有的make命令都起作用
  
  3. 更新/etc下的文件, /etc下存放配置和启动脚本, 有些文件在不同的版本中是不同的, 所以需要进行更新, 从FreeBSD 开始可以在编译前使用命令 mergemaster 加上 -p 选项. 它将检查为了正常运行buildworld和installworld而需要更新的文件, 命令如下:
  
  # cd /usr/src/usr.sbin/mergemaster
  # ./mergemaster.sh -p
  
  4. 进入单用户模式, 避免多用户系统带来的文件升级不成功问题, 还有一种方法就是在多用户模式下编译, 单用户下升级安装, 命令如下
  
  # shutdown now
  
  重启后使用boot -s 进入单用户模式
  
  # fsck -p
  # mount -u /
  # mount -a -t ufs
  # swapon -a
  
  加入升级前系统使用本地时间而没有使用GMT, 必须打入命令
  
  # adjkerntz -i
  
  调整时区等设置, 保证系统的正常安装
  
  5. 移除/usr/obj
  
  # cd /usr/obj
  # chflags -R noschg *
  # rm -rf *
  
  6. 编译
  a 保存编译输出, 注重不要存在/tmp目录下, /tmp下的文件可能在重启后被清除
  
  # script /var/tmp/mw.out
  Script started, output file is /var/tmp/mw.out
  # make TARGET
  ... compile, compile, compile ...
  # exit
  Script done, ...
  
  b 编译
  
  # cd /usr/src
  # make -j4 -DNOPROFILE buildworld #或者在/etc/make.conf加上NOPROFILE=true
  
  FreeBSD 2.2.5后make world分成make buildworld和make installworld, 注重这里只作make buildworld
  c 耗时: PIII500/128M RAM大约需要2个钟头左右
  
  7. 编译安装新内核
  
  # cd /usr/src
  # make buildkernel
  # make installkernel
  
  编译使用GENERIC配置的内核, 推荐编译一个, 以免以后编译内核后无法使用新内核启动没有make installworld前定制编译新内核使用下面的命令
  
  # /usr/obj/usr/src/usr.sbin/config/config KERNELNAME
  
  8. 以新内核重启到单用户模式
  
  9. 升级系统, 注重要使用和make buildworld使用的-D选项, 并且绝对不能使用-j选项
  
  # cd /usr/src
  # make installworld
  
  假如编译时:
  
  # make -DNOPROFILE=true buildworld
  
  安装时就应该:
  
  # make -DNOPROFILE=true installworld
  
  10. 升级那些没有被make world升级的文件, 如/etc下的文件, 可以使用mergemaster或者手工升级, 这一点请参见mergemaster的手册, 在升级前建议备份/etc目录.
  
  11. 更新/dev 通常使用mergemaster, 就会重建/dev, 或使用命令 sh MAKEDEV 建立
  
  12. 更新/stand
  
  # cd /usr/src/release/sysinstall
  # make all install
  
  13. 再次重启
  
  # fastboot
  
  14. 结束升级, 加入有些程序无法运行的话可以重新编译安装, 例如
  
  # cd /usr/src/usr.bin/file
  # make all install
 

图片内容