用cvsup同步源代碼并更新系統

發表于:2007-06-09來源:作者:點擊數: 標簽:
(以FREEBSD5_3 STABLE版為例) 用cvsup同步源代碼并更新系統 (以FREEBSD5_3 STABLE版為例) 我們隨時都可以用cvsup與中央cvsup 服務器 ,或它的某個鏡像同步自己FreeBSD機器上的全部源代碼。cvsup允許您一次獲取整個源碼集合,以后就只取更改過的部分。許
(以FREEBSD5_3 STABLE版為例)

用cvsup同步源代碼并更新系統
(以FREEBSD5_3 STABLE版為例)

  我們隨時都可以用cvsup與中央cvsup服務器,或它的某個鏡像同步自己FreeBSD機器上的全部源代碼。cvsup允許您一次獲取整個源碼集合,以后就只取更改過的部分。許多人從cron運行cvsup,以保持他們的源碼自動更新。源代碼更新包含兩個部分,一是系統源代碼,二是ports樹的源代碼。
  對于系統源代碼,CVS(并行版本控制系統)包含CURRENT版和STABLE版兩個樹。FreeBSD STABLE版系統源代碼的 cvsup配置文件是/usr/share/examples/cvsup/stable-supfile,該文件默認是升級所有的系統源代碼,一般情況只需改*default host項,讓cvsup到離我們最近的cvsup鏡像服務器下載源代碼。ports樹的源代碼的cvsup配置文件是 /usr/share/examples/cvsup/ports-supfile,可根據自己的需要指定更新那些分支的源代碼。ports樹只有一個版本,不象系統源代碼有CURRENT版和STABLE版之分。為了保證源碼之間的依賴性最好采用src-all和ports-all方式更新所有源碼。

1. 復制配置文件到/etc目錄(便于管理)

# cp /usr/share/examples/cvsup/ports-supfile /etc
# cp /usr/share/examples/cvsup/stable-supfile /etc
# chmod 755 /etc/ports-supfile
# chmod 755 /etc/stable-supfile

注:chmod 數字前加0代表目錄,不加0代表文件

2. 編輯配置文件

# vi /etc/stable-supfile
-------------------------------------------------
*default host=cvsup.FreeBSDchina.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_5_3
*default delete use-rel-suffix
*default compress
src-all
-------------------------------------------------


# vi /etc/ports-supfile
-------------------------------------------------
*default host=cvsup.FreeBSDChina.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
*default compress
ports-all
-------------------------------------------------
 
注:
①default host=
  用來指定離我們最近的cvsup鏡像服務器
②prefix=告訴 cvsup
  把接收的文件放在哪里,一般在/usr/src目錄里。
③*default base=/var/dbCVSup
  客戶端在被叫做 “base” 的目錄里維護了幾個狀態文件。這些文件幫助 CVSup 更有效的工作,通過跟蹤您已經接收到哪些更新的方式。如果 base 目錄不存在,cvsup 客戶端會拒絕工作。
④tag=用來指定版本含義如下:
  tag=RELENG_3指定版本為:FreeBSD 3-STABLE
  tag=RELENG_4指定版本為:FreeBSD 4-STABLE
  tag=RELENG_5_3指定版本為:FreeBSD 5_3-STABLE
⑤*default release=cvs delete use-rel-suffix compress
  release=cvs 顯示服務器應該從 FreeBSD 的主 CVS 倉庫中獲取信ⅰ?
  delete 給 CVSup 權限刪除文件。您應該總是指定它,這樣 CVSup 可以保證您的源代碼樹完全更新。CVSup 很小心的只刪除那些不再依賴的文件。您擁有的任何額外的文件會被嚴格的保留。
  use-rel-suffix 是 ... 不可思議的。 如果您真的想了解它,查看 cvsup(1) 手冊頁。否則,就指定而不用擔心這個。
  compress 啟用 gzip 風格的信道壓縮。
⑥CVSup 文件 collection
  CVSup 可用的文件 collection 是分級組織的。有幾個大的 collection,然后它們有分成更小的子 collection。接收一個大的 collection 等同于接收它的每一個子 collection。 collection 的等級關系在下面列表中通過縮進的使用反映出來。最常用的 collection 是 src-all,和 ports-all。其它的 collection 只被有著特定目的的小部分人使用,有些站點可能不全部支持。

cvs-all release=cvs (FreeBSD 主 CVS 倉庫,包含密碼系統的代碼)
 distrib release=cvs (FreeBSD 發行版本和鏡像相關的文件)
 doc-all release=cvs (FreeBSD 使用手冊和其它文檔的源代碼。其中不包含 FreeBSD web 站點的文件)
 ports-all release=cvs (FreeBSD Ports Collection)

  如果您不想升級全部的 ports-all(整個 ports 樹),而只是使用下面列出的一個子集,請確保您總是升級了 ports-base子collection!無論何時在 ports 構建下層構造有所改變的時候都會通過 ports-base 表現出來,因此,如果您只升級了“實際的”ports 而他們使用了一些新的特性,就有極大的可能會因一些神秘的錯誤信息而編譯失敗。這種情況下,首先要做的事情就是確保您的 ports-base 子 collection 更新到最新。
  ports-archivers release=cvs (存檔工具)
  ports-astro release=cvs (天文相關的 ports)
  ports-audio release=cvs (聲音支持)
  ports-base release=cvs (Ports Collection 構建下部構造)
  位于 /usr/ports 的 Mk/ 和 Tools/ 子目錄的各種各樣的文件。無論您更新 Ports Collection 的任何部分的時候,您都應該同時更新這個子 collection。
  ports-benchmarks release=cvs (基準)
  ports-biology release=cvs (生物學)
  ports-cad release=cvs (計算機輔助設計工具)
  ports-chinese release=cvs (中文語言支持)
  ports-comms release=cvs (通信軟件)
  ports-converters release=cvs (字符編碼轉換)
  ports-databases release=cvs (數據庫
  ports-deskutils release=cvs (計算機發明前常出現在桌面上的東西)
  ports-devel release=cvs (開發工具)
  ports-dns release=cvs (DNS 相關軟件)
  ports-editors release=cvs (編輯器)
  ports-emulators release=cvs (其它操作系統的模擬器)
  ports-finance release=cvs (貨幣,金融相關應用程序)
  ports-ftp release=cvs (FTP 客戶端和服務器端工具)
  ports-games release=cvs (游戲)
  ports-german release=cvs (德語支持)
  ports-graphics release=cvs (圖形圖像工具)
  ports-hungarian release=cvs (匈牙利語言支持)
  ports-irc release=cvs (Internet 多線交談(IRC)工具)
  ports-japanese release=cvs (日語支持)
  ports-java release=cvs (Java 工具)
  ports-korean release=cvs (韓國語言支持)
  ports-lang release=cvs (編程語言)
  ports-mail release=cvs (郵件軟件)
  ports-math release=cvs (數值計算軟件)
  ports-mbone release=cvs (MBone 應用程序)
  ports-misc release=cvs (雜樣工具)
  ports-multimedia release=cvs (多媒體軟件)
  ports-net release=cvs (網絡軟件)
  ports-news release=cvs (USENET 新聞軟件)
  ports-palm release=cvs (Palm? 系列軟件支持)
  ports-polish release=cvs (波蘭語支持)
  ports-portuguese release=cvs (葡萄牙語支持)
  ports-print release=cvs (打印軟件)
  ports-russian release=cvs (俄語支持)
  ports-security release=cvs (安全工具)
  ports-shells release=cvs (命令行 shell)
  ports-sysutils release=cvs (系統實用工具)
  ports-textproc release=cvs (文本處理工具(不包含桌面出版)。
  ports-vietnamese release=cvs (越南語支持)
  ports-www release=cvs (萬維網(WWW)相關軟件)
  ports-x11 release=cvs (支持 X window 系統的 ports)
  ports-x11-clocks release=cvs (X11 時鐘)
  ports-x11-fm release=cvs (X11 文件管理器)
  ports-x11-fonts release=cvs (X11 字體和字體工具)
  ports-x11-toolkits release=cvs (X11 工具包)
  ports-x11-servers (X11 服務器)
  ports-x11-wm X11 (窗口管理器)
 src-all release=cvs (FreeBSD 主代碼,包含密碼系統的代碼)
  src-base release=cvs (/usr/src 頂層的各式各樣的文件)
  src-bin release=cvs (單用戶模式下可能用到的用戶工具 (/usr/src/bin))
  src-contrib release=cvs (FreeBSD 項目之外的工具和庫,通常在 FreeBSD 中不作修改 (/usr/src/contrib))
  src-crypto release=cvs (FreeBSD 項目之外的 密碼系統工具和庫,通常在 FreeBSD 中不作修改 (/usr/src/crypto))
  src-eBones release=cvs (Kerberos 和 DES (/usr/src/eBones)。 沒有在當前的 FreeBSD 發行中使用)
  src-etc release=cvs (系統配置文件 (/usr/src/etc))
  src-games release=cvs (游戲 (/usr/src/games))
  src-gnu release=cvs (GNU 公共許可協議的工具 (/usr/src/gnu))
  src-include release=cvs (頭文件 (/usr/src/include))
  src-kerberos5 release=cvs (Kerberos5 安全包 (/usr/src/kerberos5))
  src-kerberosIV release=cvs (KerberosIV 安全包 (/usr/src/kerberosIV))
  src-lib release=cvs (庫文件 (/usr/src/lib))
  src-libexec release=cvs (通常被其它程序調用的系統程序 (/usr/src/libexec))
  src-release release=cvs (生成 FreeBSD 版本必需的文件 (/usr/src/release))
  src-sbin release=cvs (但用戶模式的系統工具 (/usr/src/sbin))
  src-secure release=cvs (密碼相關庫和命令 (/usr/src/secure))
  src-share release=cvs (跨多個平臺的共享的文件 (/usr/src/share))
  src-sys release=cvs (內核 (/usr/src/sys))
  src-sys-crypto release=cvs (內核密碼系統代碼 (/usr/src/sys/crypto))
  src-tools release=cvs (維護 FreeBSD 的各種各樣的工具 (/usr/src/tools))
  src-usrbin release=cvs (用戶工具 (/usr/src/usr.bin))
  src-usrsbin release=cvs (系統工具 (/usr/src/usr.sbin))
 www release=cvs (FreeBSD WWW 站點的源代碼)
distrib release=self (CVSup 服務器的配置文件,用于 CVSup 鏡像站點)
gnats release=current (GNATS bug 跟蹤數據庫)
mail-archive release=current (FreeBSD 郵件列表存檔)
www release=current (預處理過的 FreeBSD WWW 站點文件(不是源文件),用于WWW 鏡像站點。)

  如果你很清楚安裝軟件的依賴性,可注釋掉ports-all行,不讓cvsup整個ports樹,并指定下載ports分支代碼。如下,一個WEBSERVER的實例:
#ports-all
ports-base
#ports-arabic
ports-archivers
#ports-astro
#ports-audio
#ports-benchmarks
#ports-biology
#ports-cad
#ports-chinese
ports-comms
ports-converters
ports-databases
ports-deskutils
ports-devel
ports-dns
ports-editors
ports-emulators
#ports-finance
#ports-french
ports-ftp
#ports-games
#ports-german
#ports-graphics
#ports-hebrew
#ports-hungarian
#ports-irc
#ports-japanese
ports-java
#ports-korean
ports-lang
ports-mail
ports-math
#ports-mbone
ports-misc
#ports-multimedia
ports-net
#ports-news
#ports-palm
#ports-picobsd
#ports-polish
#ports-portuguese
ports-print
#ports-russian
#ports-science
ports-security
ports-shells
ports-sysutils
ports-textproc
#ports-ukrainian
#ports-vietnamese
ports-www
#ports-x11
#ports-x11-clocks
#ports-x11-fm
#ports-x11-fonts
#ports-x11-servers
#ports-x11-toolkits
#ports-x11-wm

3. 同步源代碼

# /usr/local/bin/cvsup -g -L 2 /etc/ports-supfile
# /usr/local/bin/cvsup -g -L 2 /etc/stable-supfile

注:
-g:告訴 CVSup 不要使用 GUI。如果您沒在運行 X11 這個是自動的,否則您必須指定它。
-L 2:告訴 CVSup 輸出所有正在升級的文件的細節。有三個等級可以選擇,從 -L 0 到 -L 2。默認是 0,意味著除了錯誤消息什么都不輸出。

4. 更新系統
4.1 閱讀 /usr/src/UPDATING
  這個文件要包含有關于您可能遇到的問題的重要信息,或指定了您可能使用到的命令的執行順序。

4.2 檢查 /etc/make.conf
  一般的通常會從 /usr/share/examples/etc/make.conf (或者 FreeBSD 4.X 中的 /etc/defaults/make.conf) 復制 CFLAGS 和 NOPROFILE 這樣的設置到 /etc/make.conf 中并令它們生效。請注意在 /etc/make.conf 中的任何設置同時也會影響每次運行 make 的結果,因此設置一些適合自己系統的選項是一個好習慣:

#指定下載源碼的服務器
MASTER_SITE_BACKUP?= \
ftp://202.113.12.9/pub/FreeBSD/ports/distfiles/$/\
ftp://ftp.freebsd.org.cn/pub/FreeBSD/ports/distfiles/$/\
ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/$/
MASTER_SITE_OVERRIDE?= $

#編譯器選項

CPUTYPE=athlon-xp
##本人使用AthlonXP 2500+,不同的CPU請參考man make.conf##

CFLAGS+= -mfpmath=sse -mmmx -msse -m3dnow -maclearcase/" target="_blank" >ccumulate-outgoing-args -minline-all-stringops
## 不建議使用O2、O3、Os的優化,因為不是全部應用程序可以穩定工作于O2、O3、Os。況且最多僅獲得7%的額外性能。CFLAGS的默認為"-O1 -pipe",不需要覆蓋,所以使用+=。不建議使用-f...系列優化,因為不是全部應用程序可以對此穩定工作。
##-mfpmath=sse: PentiumIII兼容的CPU可以打開-mfpmath=sse來代替傳統i387的浮點運算,加快速度。參閱CPU產品手冊來確定CPU是否含有SSE功能。
## -mfpmath=pni: Pentium4 Prescott兼容的CPU可以打開-mfpmath=pni來代替傳統i387的浮點運算,加快速度。參閱CPU產品手冊來確定CPU是否含有PNI功能。
## -mmmx: 打開mmx指令來增加代碼性能。適用于PentiumMMX兼容CPU。
## -msse: 打開sse指令來增加代碼性能。適用于PentiumIII兼容CPU。
## -msse2: 打開sse2指令來增加代碼性能。適用于Pentium4兼容CPU。
## -mpni: 打開pni指令來增加代碼性能。適用于Pentium4 Prescott兼容CPU。
## -m3dnow: 打開3DNow!指令來增加代碼性能。適用于K6、Athlon兼容CPU。
## -maccumulate-outgoing-args -minline-all-stringops :通過減少某些動作來實現加速,經作者實驗,比較穩定。

CXXFLAGS+= -fmemoize-lookups -fsave-memoized
## make.conf提到的C++代碼優化。

#系統編譯選項

KERNCONF=(FILENAME)
## 內核配置文件名,將(FILENAME)更改為自己的內核文件名。

NOINET6=true
## 盡量不使用用IPV6協議。

NOATM=true
## 盡量不使用ATM,本選項僅適用于非ADSL用戶。

NO_SENDMAIL=true
## 盡量不使用SENDMAIL。

NOGAMES=true
## 不安裝所有游戲

NO_I4B=true
## 盡量不使用ISDN For BSD。

NO_IPFILTER=true
## 盡量不使用IP Filter。

BATCH=yes
## 安靜編譯,編譯時跳過所有提問。適用于某些隔夜一次性編譯程序的用戶。

#X-Window編譯選項

XFREE86_VERSION=4
## 盡量使用4.3版本的X-Window

WITH_SETUID_LUIT=yes
## 不使用本項的話,運行xterm會出現luit錯誤的問題.

WITH_GTK2=yes
## 盡量使用GTK2為gtk應用程序的運行庫

USE_MMX_ASM=yes
## 編譯Xfree86時,盡量使用MMX代碼,僅適用于PentiumMMX兼容CPU.

USE_3DNOW_ASM=yes
## 編譯Xfree86時,盡量使用3DNOW代碼,僅適用于K6、Athlon兼容CPU.

WITHOUT_KDE_MENUS=yes
## 使用GNOME時,不添加KDE程序在菜單上。

#多媒體編碼選項

WITH_CDPARANOIA=yes
WITH_AALIB=yes
WITH_ESOUND=yes
WITH_FAAD=yes
WITH_FLAC=yes
WITH_FREETYPE=yes
WITH_GDKPIXBUF=yes
WITH_GSM=yes
WITH_HERMES=yes
WITH_JPEG=yes
WITH_LADSPA=yes
WITH_LAME=yes
WITH_LIBA52=yes
WITH_LIBAUDIOFILE=yes
WITH_LIBCACA=yes
WITH_LIBFAME=yes
WITH_LIBMIKMOD=yes
WITH_LIBMPEG2=yes
WITH_LIBMUSICBRAINZ=yes
WITH_LIBSHOUT=yes
WITH_LIBSIDPLAY=yes
WITH_LIBSNDFILE=yes
WITH_LIBTHEORA=yes
WITH_MAD=yes
WITH_NAS=yes
WITH_PANGO=yes
WITH_PNG=yes
WITH_SDL=yes
WITH_SMOOTHWAVE=yes
WITH_SPEEX=yes
WITH_SWFDEC=yes
WITH_VORBIS=yes
WITH_VORBISIDEC=yes
WITH_XINE=yes
WITH_XVID=yes

## 以上所有多媒體選項僅在應用程序支持時打開。

#應用程序編譯選項

WANT_HUGE_STACK_SIZE=yes
## 為Python代碼的應用程序提供巨大的Stack。

WITH_GDM=yes
## 為某些窗口管理器提供GDM鏈接。

WITHOUT_MAILNEWS=yes
## 取消Mozilla的郵件新聞功能,加快編譯時間。

WITHOUT_COMPOSER=yes
## 取消Mozilla的網頁編輯功能,加快編譯時間。

WITHOUT_LDAP=yes
## 取消Mozilla的LDAP功能,加快編譯時間。

WITHOUT_CHATZILLA=yes
## 取消Mozilla的IRC聊天功能,加快編譯時間。

WITHOUT_XMLTERM=yes
## 取消Mozilla的XML終端功能,加快編譯時間。

#WITH_RTC=yes
## 為某些應用程序提供實時時鐘支持,但可能會造成某些多媒體程序不穩定。

WITH_GLX=yes
## 為某些應用程序提供GLX加速繪圖支持。

WITH_TTF_BYTECODE_ENABLED=yes
## 為某些應用程序提供雙字節支持。

WITH_OPTIMIZED_CFLAGS=yes
WITH_OPTIMIZED_CXXFLAGS=yes
WITH_OPTIMIZE=yes
## 盡量使用更高級編譯優化



4.3 更新 /etc 里邊的文件
  某些“make installworld”的安裝需要特定的用戶名或用戶組存在。在升級時,有可能這些用戶或組不存在,就會在升級過程中出錯。解決辦法是檢查 /usr/src/etc/group 并把它的組列表與您的進行比較。如果在新文件里有而您的文件里沒有的,就把它們復制過來。同樣地,您把 /etc/group 里的任何這樣的組進行更名---與 /usr/src/etc/group 中有相同 GID,但不同名的那些。

4.3.1備份 /etc里的文件
  將該目錄備份到其他目錄如/home/root,以便升級遇到問題時恢復系統配置。

4.3.2 用mergemaster 比較、合并、編輯配置文件
  mergemaster就是升級你的配置文件用的,它幫助你把新系統的配置文件與你原來的(舊的)配置文件合并,或替換,或不改變原配置文件。升級完系統后應該用mergemaster升級配置文件的,要不然可能會引發問題。當然你可以不用mergemaster,自己手工搞定這些配子文件。 在第一次使用時,如果早期的 mergemaster 版本不支持 -p 的話,就使用源碼樹中的新版本:
# cd /usr/src/usr.sbin/mergemaster
# ./mergemaster.sh -p

mergemaster的用法:
#mergemaster -p
#make installworld
#mergemaster -i

  -i是安裝新文件而不詢問。是說如果舊系統中沒有該文件話的,就直接安裝而不詢問??鏡ELEASE升級的時候非常有用。
-p檢測 /etc 和 /usr/src/etc 源碼樹里邊的配置文件的不同點。通過 -p 選項以預建 (pre-buildworld) 模式運行 mergemaster(Cool。 這樣只是比較那些對于成功執行 buildworld 或installworld 起關鍵作用的文件。
  ?----就是全部更新。
  merge就是文件合并,將為您打開一個文本編輯器,里邊是兩個文件的內容。您現在就可以一邊合并它們,一邊在屏幕里查看,同時從兩者中選取部分生成最終文件。當兩個文件一起比較時,l 鍵會選擇左邊的內容, r 會選擇右邊的。最終的輸出是由兩個部分組成的一個文件,用它就可以安裝了。這個選項通常用于用戶修改了設置的文件。merge之后需要選左、右的內容 (l, r),最后按i安裝,當然如果搞錯了可以按r重來,但如果i錯了后果就比較悲慘了。

  操作實例:
  原來存在文件1,現在升級后有一個新版本是文件2,問你如何操作?有三個選擇:安裝(i),刪除(d),合并(m)。
文件1的內容:
第1 行
第2 行
第3 行
文件2的內容:
第2 行
第3 行
第4 行
按i鍵即安裝,就是不要文件1了,用新文件2覆蓋文件1;
按d鍵即刪除,是說刪除新的文件2,保留舊的文件1;
按m鍵即合并,合并是自己整合兩個文件,得到文件3。
文件3的內容:
第1 行(直接取文件一)
第2 行(由用戶選取文件一或文件二中對應的行)
第3 行(由用戶選取文件一或文件二中對應的行)
第4 行(直接取文件二)


4.4 在單用戶模式下編譯安裝系統
  在單用戶模式下能處理的更快,并保證編譯重要的系統文件時不出錯。從運行的系統里,以超級用戶方式執行:
# shutdown now
這樣就會轉換到單用戶模式。
  另外也可以,重啟系統,在啟動提示符處,輸入 -s 標識。系統就會啟動單用戶。再在 shell 提示符處執行:
# fsck -p
# mount -u /
# mount -a -t ufs
# swapon -a
  這會檢查文件系統,重新裝載 / 為讀/寫,參考 /etc/fstab 裝載其它所有的 UFS 文件系統,然后打開交換 (swapping) 開關。
  Note: 如果您的 CMOS 時鐘是設置為本地時間,而不是 GMT (如果 date(1) 命令輸出不能顯示正確的時間和地區也有確有其事), 您可能也需要執行下邊的命令:
# adjkerntz -i
  這樣可以確定您正確的本地時區設置--不這樣做,您以后可能會碰到一些問題。

4.5 刪除先前 build 留下的殘余(如果以前build過系統)
# chflags -R noschg /usr/obj/usr
# rm -rf /usr/obj/usr
  刪除/usr/obj這個目錄,可以加快“make buildworld”的過程,并且省下與依賴關系有關的許多頭痛的事情。/usr/obj 下的有些文件可能設置了不可改 (immutable) 屬性(查看 chflags(1) 了解更多), 您必須用這個命令: # chflags -R noschg /usr/obj/usr 把這些標志去掉。
# cd /usr/src
# make cleandir
# make cleandir
不錯,make cleandir 要執行兩次。

4.6 保存編譯輸出
  把執行 make(1) 后得到的輸出存成一個文件。如果什么地方出了錯,您就會有個錯誤信息的備份。最簡單的辦法是使用 script(1) 命令,同是帶上參數指定存放輸出的文件名。您應在重建系統之前立即這樣做,然后在過程完成時輸入 exit。
# script /var/tmp/mw.out
Script started, output file is /var/tmp/mw.out
# make TARGET
... compile, compile, compile ...
# exit
Script done, ...

4.7 編譯基本系統
  在/usr/src目錄里邊
# cd /usr/src
# make -j4 buildworld

注:
-j4:有至多4個進程在同一時刻執行,加快編譯速度。多CPU機器可用6到10之間的值。
buildworld:編譯源碼,在 /usr/obj 下邊建立了一個全新的樹。

4.8 編譯和安裝新內核
  如果您想建立一個定制內核,而且已經有了配置文件,只需象這樣使用 KERNCONF=MYKERNEL:
# cd /usr/src
# make -j4 buildkernel KERNCONF=MYKERNEL
# make -j4 installkernel KERNCONF=MYKERNEL

4.9 重啟動系統
#shutdown -r now

4.10 安裝新系統
# make -j4 installworld


4.11 編譯安裝系統流程:(建議在單用戶模式下進行)
# make -j4 buildworld
# make -j4 buildkernel
# make -j4 installkernel
#mergemaster -p
#make -j4 installworld
#mergemaster -i
# reboot

  啟動到單用戶模式可用# shutdown now命令或重新啟動系統,在提示符處使用 boot -s,進入單用戶模式。


原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97