mafa 回复于:2005-08-12 09:01:48 |
hand book真不愧为经典中的经典。 |
linuxbao3 回复于:2005-08-12 09:06:13 |
是啊,我有了不会的就先看hand book,要是新人能潜下心来看一眼,也就没有那么多小问题了。
现在觉得,hand book才是最大的精华,能通读hand book,自然也就能修成正果了 |
剑心通明 回复于:2005-08-12 09:23:42 |
[quote:c3105019e5="linuxbao3"]
所以,在你buildworld时要先删除/usr/obj哦。 这个贴子建议所有新手老手都看看。[/quote:c3105019e5] 回头重新编译一次试试 |
Zer4tul 回复于:2005-08-12 09:35:44 |
那是当然,不想想Handbook都谁写的……肯定是最权威的啦…… |
剑心通明 回复于:2005-08-12 16:23:20 |
经过测试,发现:
可以加速 make buildworld 的过程, 并避免相互依赖关系等复杂的问题 但是依然是在/usr/obj/usr/src/sys下面: virtual# uname -a FreeBSD virtual.×××× 5.3-RELEASE-p15 FreeBSD 5.3-RELEASE-p15 #0: Fri Aug 12 15:25:55 CST 2005 root@virtual.××××:/usr/obj/usr/src/sys/KERNEL i386 |
剑心通明 回复于:2005-08-12 16:24:25 |
在虚拟机上重新make了半天,累死了,机器太差劲,开始make之后几乎都快不能用了,慢死了,好不容易make完了 |
linuxbao3 回复于:2005-08-12 16:52:26 |
在你make buildkernel时应该指定下
[code:1:5391ff9af4] # cd /usr/src # make buildkernel KERNCONF=MYKERNEL # make installkernel KERNCONF=MYKERNEL[/code:1:5391ff9af4] |
剑心通明 回复于:2005-08-12 16:58:19 |
就是那样做的啊 |
linuxbao3 回复于:2005-08-12 17:07:03 |
我去看hand book,找答案去。 |
linuxbao3 回复于:2005-08-12 17:27:19 |
通明,能不能把你的做法贴上来?就是用过的命令按顺序发上来?
中间的过程不要。说真的,这个问题我也是在build失败后才现的。但是根据hand book第19章, [code:1:c744136a0c] 19.4.16.3. 我完成后可以删除 /usr/obj 吗? 简短地说,可以。 /usr/obj 包含了所有在编译阶段生成的目标文件。通常, 在 make buildworld 过程中 第一步之一就是删除这个目录重新开始。 这种情况下,在您完成后,保留 /usr/obj 没有多大意义,还可释放一大堆磁盘空间(通常在 340 MB 左右)。 只是,如果您清楚您在干什么,您可以让 make buildworld 跳过这一步。 这会让后 继的 build 执行得更快,因为大部分的源码都不必再进行编译了。 这个的另一面就 在于敏感的依赖问题可以潜在, 并以奇怪的方式引起 build 的失败。这在 FreeBSD 邮件列表里经常引起沸腾, 当有人抱怨他们 build 失败时,并没意识到这是因为自 已是想抄近路 (意思是说少了些必要的步骤)。 [/code:1:c744136a0c] 显然,/usr/obj只是个目标文件夹,是个中间过程,可以删除。 你先把你的发上来吧。 |
剑心通明 回复于:2005-08-12 18:11:43 |
[quote:ce013510c3="linuxbao3"]显然,/usr/obj只是个目标文件夹,是个中间过程,可以删除。
你先把你的发上来吧。[/quote:ce013510c3] 按照这样写的好像是啊,但我重新make了以后确实还是那样的,很是奇怪: cd /usr/src make buildworld make buildkernel KERNCONF=KERNEL make installkernel KERNCONF=KERNEL shutdown now adjkerntz -i fsck -p mount -u / mount -a -t ufs swapon -a mergemaster -p cd /usr/src make installworld mergemaster reboot uname -a |
原始人 回复于:2005-08-12 22:16:50 |
1. sysctl -a 输出头几行中有个 kern.version 变量, 大家看看
2. 查看 /usr/src/usr.bin/uname/uname.c 源代码文件得知,uname 命令就是读取的这个变量 3. GENERIC 内核安装后运行 uname -a 结果同样是位于/usr/obj/usr/src/sys/GENERIC下面 4. root 身份通过 sysctl 命令 修改 kern.version 时提示变量只读 5. 如果使用 config, make depend, make 的方式编译, 会显示内核"位于"/usr/src/sys/i386/compile/内核名 目录下 6. 这不是什么问题 |
bluebell 回复于:2005-08-12 22:18:15 |
[quote:76b16703fd="linuxbao3"]
所以,在你buildworld时要先删除/usr/obj哦。 这个贴子建议所有新手老手都看看。[/quote:76b16703fd] 请问这不是针对第一次buildworld吧? 我看王波先生的《FREEBSD技术内幕》中写,主要是针对第一次之后。而且这也不仅仅是影响性能,会影响新系统正常运行。所以做为常规操作,应该在buildworld之前进行删除。 今天刚给前几天装的系统buildworld,时间挺长的(也有可能是机器的速度比较慢吧)。 |
剑心通明 回复于:2005-08-13 08:09:54 |
[quote:a526543ae5="原始人"]1. sysctl -a 输出头几行中有个 kern.version 变量, 大家看看
2. 查看 /usr/src/usr.bin/uname/uname.c 源代码文件得知,uname 命令就是读取的这个变量 3. GENERIC 内核安装后运行 uname -a 结果同样是位于/u..........[/quote:a526543ae5] desktop# sysctl -a |more kern.ostype: FreeBSD kern.osrelease: 5.4-RELEASE-p6 kern.osrevision: 199506 kern.version: FreeBSD 5.4-RELEASE-p6 #0: Sun Jul 31 15:43:33 CST 2005 jjp@desktop.×××:/usr/obj/usr/src/sys/KERNEL ftp# uname -a FreeBSD ftp.×××4.8-RELEASE FreeBSD 4.8-RELEASE #1: Mon Mar 29 19:55:48 CST 2004 root@ftp.×××:/usr/src/sys/compile/ipf i386 确实是这样啊,多谢大哥指点 |
剑心通明 回复于:2005-08-13 08:10:53 |
desktop# sysctl kern.version=aaaa
sysctl: oid 'kern.version' is read only 没错,是这样的 |
linuxbao3 回复于:2005-08-13 08:31:19 |
厉害,高手,原来秘密就是,要用传统的方法来重新make world |
linuxbao3 回复于:2005-08-13 08:46:57 |
看看才注意到,原始人大侠是个大水牛,03年注册到现在,才发贴63,水到家了。高手~~~ |
gsging 回复于:2005-08-13 10:34:51 |
[quote:5360fa9373="bluebell"]
我看王波先生的《FREEBSD技术内幕》中写..........[/quote:5360fa9373] 技术内幕不是王波写的 :mrgreen: |
剑心通明 回复于:2005-08-13 10:47:22 |
[quote:7874bb1be8="gsging"]
技术内幕不是王波写的 :mrgreen:[/quote:7874bb1be8] 呵呵,还真没注意,我说哪,怎么看着那么别扭,王波写的是使用大全,技术内幕是翻译的国外的 |
loveKDE 回复于:2005-08-13 12:09:14 |
刚刚我也看到这个了 |
bluebell 回复于:2005-08-13 12:51:31 |
[quote:c30cf977aa="gsging"]
技术内幕不是王波写的 :mrgreen:[/quote:c30cf977aa] :oops: :oops: :oops: 是个老外写的。 主要是两本都看,所以就容易…… :oops: :oops: :oops: |
skysnowolf 回复于:2005-08-15 08:34:21 |
楼主为什么不在偶那个帖子下面回帖,搞新一帖,让偶没有加精的机会,呜呜!
偶还有一个问题:单用户下mergemaster -p和mergemaster两个步骤各位是怎么做的?提示的问题好多要做好久啊。 比如提示选择root的临时目录/var/tmp/temproot还是新一个临时目录有什么用?还有如何合并passwd?反正偶有一两次编译world的时候都是进去就咔嚓了出来,重启也就正常了。手册说好像可以不用做这个步骤。 |
linuxbao3 回复于:2005-08-15 08:35:43 |
呵呵,以后会的~~~~呵
其实加不精对我无所谓的,关键是让大家能知道原因 |
skysnowolf 回复于:2005-08-15 08:41:20 |
[quote:780d120d76="linuxbao3"]呵呵,以后会的~~~~呵
[/quote:780d120d76] 偶也是开玩笑,别介意呵。 :mrgreen: 偶还有一个问题:单用户下mergemaster -p和mergemaster两个步骤各位是怎么做的?提示的问题好多要做好久啊。 比如提示选择root的临时目录/var/tmp/temproot还是新一个临时目录有什么用?还有如何合并passwd?反正偶有一两次编译world的时候都是进去就咔嚓了出来,重启也就正常了。手册说好像可以不用做这个步骤。 |
剑心通明 回复于:2005-08-15 09:49:59 |
偶都是直接回车20.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 阅读进一步的说明: 上边描述的序列只是有助于您开始工作的简要。要清楚的理解每一不步,尤其是您想使用定制内核配置, 您就应阅读下面的部分。 到这里就可以了,具体的要看/usr/src/UPDATING |
skysnowolf 回复于:2005-08-15 16:21:12 |
楼上斑竹还没理解, 我的意思是mergemaster进去后怎么做,好麻烦的说。 |
剑心通明 回复于:2005-08-15 16:30:57 |
偶都是全部回车,呵呵 |