发博文
个人资料
  • 博客访问:62592
  • 博文数量:27
  • 博客积分:1581
  • 博客等级:上尉
  • 注册时间:2006-11-12 14:10:54
订阅我的博客
  • 订阅
  • 订阅到鲜果
  • 订阅到抓虾
  • 订阅到Google
字体大小: 博文
从freebsd-6.2跳到7.0 bate (2007-10-28 14:21)
分类: freebsd

    竟然升级一个系统要花一天的时间。唉,不过还好,学到了很多:
 
    下面是我花了一天升级出来的系统。

    上午:
       把7.0的源码用cvsup来获取:
          #cd /usr/share/examples/cvsup/
          #cvsup -gL2 standard-supfile
       那就把7.0-bate放到了/usr目录下了。
   
    中午:
       编译源码:
          一开始我是用make buildkernel来编译源码的,不过一开始就出现了这样一个错误:

-------------------------------------------------------------- >>> Kernel build for KERNEL started on Sat Oct 27 11:22:48 CST 2007 -------------------------------------------------------------- ===> KERNEL mkdir -p /usr/obj/usr/src/sys -------------------------------------------------------------- >>> stage 1: configuring the kernel -------------------------------------------------------------- cd /usr/src/sys/i386/conf; PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/obj/usr/src/tmp/usr/games:/sbin:/bin:/usr/sbin:/usr/bin config -d /usr/obj/usr/src/sys/KERNEL /usr/src/sys/i386/conf/KERNEL ERROR: version of config(8) does not match kernel! config version = 600003, version required = 600004 Make sure that /usr/src/usr.sbin/config is in sync with your /usr/src/sys and install a new config binary before trying this again. If running the new config fails check your config file against the GENERIC or LINT config files for changes in config syntax, or option/device naming conventions *** Error code 1 Stop in /usr/src. *** Error code 1 Stop in /usr/src.


        我还以为是我之前的kernel是stable的而发生错误(我把之前的release kernel编译成stable kernel了,是    用cvsup的啦,别以为我很神啊,能把release直接编译成stable),然后我就论坛去寻找答案(准    确来    话是问人家),经很多好心人的帮忙,还加上去看了一下手册,终于知道了错误的原因:
    要先进行
       make buildworld
    它的作用是:编译所有的源码。那就是将你的拿来的源码放到系统的各个地方里,让系统去适应你这个新    的环境。
    那就先
       make buildworld
    好了,你先去睡上一觉吧,把闹钟调到2个小时之后吧。因为一个make buildworld在花掉你两个钟头左右。
    如果你问有没有什么可以加快这编译的,答案是有的,那你就看一下下面的链接吧:

     http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/makeworld.html

      告诉你一个不好的消息: 在单人模式下无法编译通过make buildworld,在命令行或图形界面下是可以    的。
    最少是我的不行,希望你的可以咯。可以之后可以告诉我原因吗?
    然后就是:
       #cd /usr/src
       #make  buildkernel KERNCONF=NEWKERNEL
       #make installkernel KERNCONF=NEWKERNEL
        其中KERNCONF=是你指定的那个内核配置文件,就是GENERIC的copy版,这个copy版是你已修改好的配    置文件。如果你不指定的话,那它就会直接编译GENERIC这个内核配置文件了。而NEWKERNEL是就是那个c     copy版配置文件了。
        就这样,我就直接重启进入了新的系统了,没想到啊,竟然还在有个下午才能搞定整个新建的系统            啊!

       下午:
       经过了中午的编译,我还以为系统已经新建成功了。我用
          #uname -a
       显示了以下内容:

FreeBSD OS.M-gtuiw.com 7.0-BETA1 FreeBSD 7.0-BETA1 #0: Sun Oct 28 04:35:11 CST 2007 M-gtuiw@OS.M-gtuiw.com:/usr/obj/usr/src/sys/KERNEL i386

        系统新建成功??这是我中午的想法罢了。我看了下/etc下内内容,发现有点不对:在新的内核里不    是已加入了zfs文件系统吗,那应该在/etc/zfs这个目录吧(因为我之前有安装过7.0-current)。不过这里    面就没有了。

       一个字:懒!!!!!!!!!!无知!!!!!!!!!!因为
          #cd /usr/src
          #make buildworld
          #make buildkernel KERNCONF=NEWKERNEL
          #make installkernel KERNCONF=NEWKERNEL
          #reboot
       之后还有一个过程的,就是
          进入单用户模式
          #cd /usr/src
          #make installworld
       而我认为一个make buildworld已经要2个小时了,那一个make installworld不要二个小时也要一个半小时        吧。更何况make installkernel都已经把内核安装进去了,还要一个make installworld来干什么呢?就是        这个原因,让我要再花多几个小时来重复上面的步骤,好惨啊!

       这就是我的一天了,用到的命令有:

          #cd /usr/src
          #make buildworld
          #make buildkernel KERNCONF=NEWKERNEL
          #make installkernel KERNCONF=NEWKERNEL
          #reboot
          进入单用户模式
          #mergemaster -p
          #make installworld
          #mergemaster
          #reboot
       注: mergemaster是一个bourne脚本,用于检测/etc 和 /usr/src/etc 源码树里的配置文件的不同点,    这是保持系统配置文件同源码树里的一起更新的推荐方式。

       就这样,一个新的系统就产生了。

我的更多文章
亲,您还没有登录,请[登录][注册]后再进行评论