CVSup 系統更新與升級

FreeBSD 4.2-RELEASE CVSup 升級為 FreeBSD 4.6-STABLE

寫在前面


備份系統檔案


檢查HD狀況並修復錯誤

fsck -y


檢查HD剩餘容量

df -m


建立相關的 gid,uid

pw groupadd -n sshd -g 22

pw groupadd -n smmsp -g 25

pw groupadd -n mailnull -g 26

pw useradd -n sshd -g sshd -u 22 -m -d /var/empty -s /sbin/nologin -c "Secure Shell Daemon"

pw useradd -n smmsp -g smmsp -u 25 -m -d /var/spool/clientmqueue -s /sbin/nologin -c "Sendmail Submission User"

pw useradd -n mailnull -g mailnull -u 26 -m -d /var/spool/mqueue -s /sbin/nologin -c "Sendmail Default User"


安裝 CVSup 的工具程式


抓取 CVSup 設定檔

cd /usr/src

fetch ftp://freebsd.csie.nctu.edu.tw/pub/CVSup/cvsupfile-stable

sync;sync;sync

這個檔案您一定要詳看一遍。


更新 Source 的檔案

/usr/local/bin/cvsup    /usr/src/cvsupfile-stable

Connected to cvsup.tw.freebsd.org.
Updating collection src-all/cvs
 Checkout src/sys/i386/conf/GENERIC
Finished successfully

( 01:10:00 )


編譯所有的系統程式

make    buildworld

--------------------------------------------------------------
>>> Rebuilding the temporary build tree
--------------------------------------------------------------
rm -rf /usr/obj/usr/src/i386
mkdir -p /usr/obj/usr/src/i386/usr/bin
mkdir -p /usr/obj/usr/src/i386/usr/lib/compat/aout
mkdir -p /usr/obj/usr/src/i386/usr/games
mkdir -p /usr/obj/usr/src/i386/usr/libdata/ldscripts
mkdir -p /usr/obj/usr/src/i386/usr/libexec/elf
.
.(省略)
.
gzip -cn /usr/src/usr.sbin/i4b/man/iwic.4 > iwic.4.gz
===> usr.sbin/boot0cfg
cc -O -pipe -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -c /usr/src/usr.sbin/boot0cfg/boot0cfg.c
cc -O -pipe -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -o boot0cfg boot0cfg.o
gzip -cn /usr/src/usr.sbin/boot0cfg/boot0cfg.8 > boot0cfg.8.gz
===> etc
===> etc/sendmail
rm -f freebsd.cf
(cd /usr/src/etc/sendmail && m4 -D_CF_DIR_=/usr/src/etc/sendmail/../../contrib/sendmail/cf/ /usr/src/etc/sendmail/../../contrib/sendmail/cf/m4/cf.m4 freebsd.mc) > freebsd.cf
chmod 444 freebsd.cf

( 01:50:00 )


編譯新的核心

make    buildkernel    KERNCONF=GENERIC

--------------------------------------------------------------
>>> Kernel build for GENERIC started on Wed Aug 21 20:36:05 CST 2002
--------------------------------------------------------------
===> GENERIC
mkdir -p /usr/obj/usr/src/sys
cd /usr/src/sys/i386/conf; PATH=/usr/obj/usr/src/i386/usr/sbin:/usr/obj/usr/src/i386/usr/bin:/usr/obj/usr/src
/i386/usr/games:/sbin:/bin:/usr/sbin:/usr/bin config -d /usr/obj/usr/src/sys/GENERIC GENERIC
Don't forget to do a ``make depend''
Kernel build directory is /usr/obj/usr/src/sys/GENERIC
.
.(省略)
.
cc -O -pipe -D_KERNEL -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -fformat-extensions -ansi -DKLD_MODULE -nostdinc -I- -I. -I@ -I@/../include -mpreferred-stack-boundary=2 -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -fformat-extensions -ansi -c setdef1.c
ld -Bshareable -o if_xe.ko setdef0.o if_xe.kld setdef1.o
--------------------------------------------------------------
>>> Kernel build for GENERIC completed on Wed Aug 21 20:52:25 CST 2002
--------------------------------------------------------------

( 00:15:00 )


安裝新的核心

make    installkernel    KERNCONF=GENERIC

cd /usr/obj/usr/src/sys/GENERIC; MAKEOBJDIRPREFIX=/usr/obj MACHINE_ARCH=i386 MACHINE=i386 OBJFORMAT_PATH=/
usr/obj/usr/src/i386/usr/libexec PERL5LIB=/usr/obj/usr/src/i386/usr/libdata/perl/5.00503 GROFF_BIN_PATH=/usr
/obj/usr/src/i386/usr/bin GROFF_FONT_PATH=/usr/obj/usr/src/i386/usr/share/groff_font GROFF_TMAC_PATH=/usr/ob
j/usr/src/i386/usr/share/tmac make KERNEL=kernel install
chflags noschg /kernel
mv /kernel /kernel.old
install -m 555 -o root -g wheel -fschg kernel /kernel
if [ -d /modules -a -n "`ls /modules`" ]; then mkdir -p /modules.old; cp -p /modules/* /modules.old; fi;
cd /usr/src/sys/modules ; env MAKEOBJDIRPREFIX=/usr/obj/usr/src/sys/GENERIC/modules MACHINE=i386 make install
===> accf_data
install -o root -g wheel -m 555 accf_data.ko /modules
===> accf_http
install -o root -g wheel -m 555 accf_http.ko /modules
===> agp
install -o root -g wheel -m 555 agp.ko /modules
.
.(省略)
.
install -o root -g wheel -m 555 svr4.ko /modules
install -o root -g wheel -m 444 svr4.8.gz /usr/share/man/man8
install -o root -g wheel -m 555 /usr/src/sys/modules/svr4/svr4.sh /usr/sbin/svr4
===> vesa
install -o root -g wheel -m 555 vesa.ko /modules
===> wi
install -o root -g wheel -m 555 if_wi.ko /modules
===> xe
install -o root -g wheel -m 555 if_xe.ko /modules

( 00:01:00 )


安裝新的系統程式

make    installworld

mkdir -p /tmp/install.53705
for prog in [ awk cat chflags chmod chown date echo egrep find grep ln make makewhatis mtree mv perl pwd_mkdb
rm sed sh sysctl test true uname wc zic; do cp `which $prog` /tmp/install.53705; done
cd /usr/src; MAKEOBJDIRPREFIX=/usr/obj MACHINE_ARCH=i386 MACHINE=i386 OBJFORMAT_PATH=/usr/obj/usr/src/i386/
usr/libexec PERL5LIB=/usr/obj/usr/src/i386/usr/libdata/perl/5.00503 GROFF_BIN_PATH=/usr/obj/usr/src/i386/usr
/bin GROFF_FONT_PATH=/usr/obj/usr/src/i386/usr/share/groff_font GROFF_TMAC_PATH=/usr/obj/usr/src/i386/usr/sh
are/tmac PATH=/usr/obj/usr/src/i386/usr/sbin:/usr/obj/usr/src/i386/usr/bin:/usr/obj/usr/src/i386/usr/games:/t
mp/install.53705 make -f Makefile.inc1 reinstall
--------------------------------------------------------------
>>> Making hierarchy
--------------------------------------------------------------
cd /usr/src; make -f Makefile.inc1 hierarchy
cd /usr/src/etc; make distrib-dirs
.
.(省略)
.
===> etc
===> etc/sendmail

--------------------------------------------------------------
>>> Rebuilding man page indices
--------------------------------------------------------------
cd /usr/src/share/man; make makedb
makewhatis /usr/share/man
makewhatis /usr/share/perl/man
rm -rf /tmp/install.53705

( 00:10:00 )


更新系統設定檔

mergemaster


重新開機

sync ; sync ; sync ; reboot


檢查系統版本

uname -a


更新前後 HD 的狀況

全部切出一塊 4094MB 來安裝 FreeBSD (Minimal)

初安裝完成的 HD 狀況
df -m
Filesystem  1M-blocks Used Avail Capacity  Mounted on
/dev/ad0s1a       125   32    83    28%    /
/dev/ad0s1f       251    0   231     0%    /tmp
/dev/ad0s1g      2911   78  2600     3%    /usr
/dev/ad0s1e       251    0   231     0%    /var
procfs              0    0     0   100%    /proc

安裝前後 /usr 磁碟空間的比較
CVSup(/bin , /sbin , /stand , /boot 和 /usr )
/dev/ad0s1g      2911  986  1692    37%    /usr

再安裝應用軟體
gd2
/dev/ad0s1g      2911 1052  1626    39%    /usr
mysql
/dev/ad0s1g      2911 1215  1462    45%    /usr
imap
/dev/ad0s1g      2911 1083  1594    40%    /usr
apache
/dev/ad0s1g      2911 1103  1575    41%    /usr
fastcgi
/dev/ad0s1g      2911 1103  1575    41%    /usr
gzip
/dev/ad0s1g      2911 1103  1575    41%    /usr
php
/dev/ad0s1g      2911 1120  1558    42%    /usr
再裝其他的軟體(wget,sudo,bash2,ncftp3,qpopper,pident)
/dev/ad0s1g      2911 1122  1555    42%    /usr

全部安裝完成,最後的 HD 狀況
df -m
Filesystem  1M-blocks Used Avail Capacity  Mounted on
/dev/ad0s1a       125   41    73    36%    /
/dev/ad0s1f       251    0   231     0%    /tmp
/dev/ad0s1g      2911 1116  1562    42%    /usr
/dev/ad0s1e       251    0   230     0%    /var
procfs              0    0     0   100%    /proc

天有不測風雲


相關連結與資源: