免费注册 查看新帖 |

Chinaunix

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

[FreeBSD] 请教一下make world 和make kernel 的关系 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-07 17:27 |只看该作者 |倒序浏览
10可用积分
handbook的 23.4.1 更新系统的规范途径 :

 要更新系统, 就一定要首先查看 /usr/src/UPDATING 文件,以了解 buildworld 之前需要完成的步骤, 然后使用下面的过程:

# make buildworld
# make buildkernel
# make installkernel
# reboot

注意: 有时, 可能需要额外地执行一次 mergemaster -p 才能够完成 buildworld 步骤。 这些要求, 会在 UPDATING 中进行描述。 一般而言, 您可以简单地跳过这一步,只要进行的不是大跨度的 FreeBSD 版本升级。

  在 installkernel 成功完成之后, 您需要引导到单用户模式 (举例而言, 可以在加载器提示后输入 boot -s)。 接下来执行:
# mergemaster -p
# make installworld
# mergemaster
# reboot


请问:
一、make world 过程中必须make kernel 吗?我原来定制过内核,那么make world 能否直接应用我原来的内核呢?
二、make installworld 要求进入单用户模式,那么就必须在本机前面操作,远程连接是无法进入单机模式的,是吗?
三、make world的用途在于将系统更新到新的版本,还有别的用途吗?系统上使用的各种软件都可以从ports更新到新的版本,那么不做make world 是不是也可以呢?

最佳答案

查看完整内容

一、make world 过程中必须make kernel 吗?我原来定制过内核,那么make world 能否直接应用我原来的内核呢?必须包括,升级userland以后你的原来的内核和新的userland就在版本上不匹配了,可能top ps会工作不正常。二、make installworld 要求进入单用户模式,那么就必须在本机前面操作,远程连接是无法进入单机模式的,是吗?这个步骤必须是单用户模式。三、make world的用途在于将系统更新到新的版本,还有别的用途吗?系统上使 ...

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
2 [报告]
发表于 2008-10-07 17:27 |只看该作者
一、make world 过程中必须make kernel 吗?我原来定制过内核,那么make world 能否直接应用我原来的内核呢?

必须包括,升级userland以后你的原来的内核和新的userland就在版本上不匹配了,可能top ps会工作不正常。
二、make installworld 要求进入单用户模式,那么就必须在本机前面操作,远程连接是无法进入单机模式的,是吗?

这个步骤必须是单用户模式。

三、make world的用途在于将系统更新到新的版本,还有别的用途吗?系统上使用的各种软件都可以从ports更新到新的版本,那么不做make world 是不是也可以呢?

make wold只是升级你的基本系统,和ports没有关系,升级ports和也不会对基本系统有影响。

注:已经不推荐直接make world了,推荐分来来执行buildworld buildkernel installkernel installworld。

论坛徽章:
0
3 [报告]
发表于 2008-10-07 17:39 |只看该作者
world包括kernel,还有userland呢。

论坛徽章:
0
4 [报告]
发表于 2008-10-07 17:46 |只看该作者
FreeBSD makeworld的过程 收藏
新一篇: FreeBSD内核定制参考 | 旧一篇: 用rsync实现网站镜像和备份
去小恶魔学园没找到, 只好自己翻译一下, 和原版有些出入, 加上一些自己的理解, 有误还请指出
英文原版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

http://blog.csdn.net/freebyu/archive/2004/07/28/54403.aspx

论坛徽章:
0
5 [报告]
发表于 2008-10-07 17:46 |只看该作者
原帖由 周杰伦 于 2008-10-7 17:39 发表
world包括kernel,还有userland呢。


如果kernel不变,那么是否可以从make buildworld直接到make installworld,而跳过make buildkernel和make installkernel呢?

make buildworld和make installworld之后,我原来定制过的kernel没有问题吧?

我理解的make world更新的内容包括内核、系统程序两部分,而ports安装的程序应该都属于系统外的第三方程序,所以如果对于系统没有特别的要求,完全可以不必make world,而ports安装的程序可以随时更新到最新版本,而与系统无关,这么理解对吗?

论坛徽章:
0
6 [报告]
发表于 2008-10-07 17:53 |只看该作者

论坛徽章:
0
7 [报告]
发表于 2008-10-09 18:58 |只看该作者
同时感谢ziggler 、周杰伦 ,其实CU如果能像CSDN一样分配分数就好了……

论坛徽章:
0
8 [报告]
发表于 2008-10-09 19:13 |只看该作者
原帖由 fender0107401 于 2008-10-7 17:27 发表
二、make installworld 要求进入单用户模式,那么就必须在本机前面操作,远程连接是无法进入单机模式的,是吗?

这个步骤必须是单用户模式。


其实这不是必须的。而是推荐单用户模式
我曾远程buildworld kernel installworld 多台服务器。

论坛徽章:
0
9 [报告]
发表于 2008-10-09 21:54 |只看该作者
试验了一下,远程操作,没有进入单用户模式,buildworld kernel installworld ,没有错误提示,看起来正常。

谢谢feillex,以后可以再省事一点儿了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP