FreeBSD

出自 Z
前往:導覽搜尋

BSD 是從 Unix 衍生的作業系統,由柏克萊大學學生開發出來,後來衍生出多種不同的版本,其中 FreeBSD 受到不少人喜愛。

Unix OS timeline


安裝

請參考: http://zeroplex.blogspot.com/2009/12/freebsd.html

套件管理

使用 package 安裝套件

FreeBSD 可直接下載別人已編譯好的執行檔直接安裝使用,雖然版本可能不是最新的,但安裝步驟簡單。

先下載套件檔,再用 pkg_add 安裝:

wget http://download.package/shell/bash.tbz
pkg_add bash.tgz


也可以使用 -r 參數,讓 pkg_add 自動從遠端套件庫下載檔案安裝:

pkg_add -r bash

使用 ports 安裝套件

若要安裝套件最新的版本,可以從 FreeBSD 所提供的 ports 套件庫中自行編譯。

ports 一般位於 /usr/ports/ 目錄下,切換到該目錄後即可使用 ports。

搜尋

ports 下包含數萬個套件,可以利用 find、which 等工具搜尋,另外也可以使用 ports 提供的 script 搜雲套件庫:

cd /usr/ports/
make search name=vim  # 搜尋包含有 vim 關鍵字的套件

搜尋成功,會依照套件名稱、作者、位置等資訊列出搜尋結果:


其中「Path」及為套件位置。

安裝

育安裝套件,只須先切換到套件目錄並做編譯、安裝:

cd /usr/ports/editors/vim
make install clean

若需要自訂套件編譯設定,可以下 make config 浸入設定選單,也可以自行修改 Makefile。


檢視已安裝套件

使用 pkg_info 檢視已安裝套件:

$ pkg_info
GeoIP-1.4.8_1       Find the country that any IP address or hostname originates
ImageMagick-nox11-6.7.4.4_1 Image processing tools
apache-worker-2.2.22_5 Version 2.2.x of Apache web server with worker MPM.
apr-ipv6-devrandom-gdbm-db42-1.4.5.1.3.12_1 Apache Portability Library
autoconf-2.68       Automatically configure source code on many Un*x platforms
autoconf-wrapper-20101119 Wrapper script for GNU autoconf
automake-1.11.1     GNU Standards-compliant Makefile generator (1.11)
automake-wrapper-20101119 Wrapper script for GNU automake

搜尋套件:

$ pkg_info | grep vim


檢視套件檔案:

$ pkg_info -L vim-7.3.121

移除套件

移除套件大致有二種方式,一種是到 ports 目錄下指令移除,一種是用系統工具 pkg_delete 移除。


從 ports 移除套件

欲移除套件,可以直接到套件對應的 ports 目錄,輸入 make deinstall 移除套件:

$ cd /usr/ports/editors/vim
$ make deinstall

部份套件會建議先手動停用背景服務再移除,例如 MySQL:

$ /usr/local/etc/rc.d/mysql stop
$ cd /usr/ports/database/mysql55-server
$ make deinstall


使用 pkg_delete 移除套件

先使用 pkg_info 找到欲移除的套件名稱:

$ pkg_info | grep vim
vim-7.3.121  .........

在使用 pkg_delete 移除套件:

$ pkg_delete vim-7.3.121

套件可能會因為相依於其他套件,使得 pkg_delete 不會移除,若要強制移除該套件可以加上參數 -f;另外也可以使用參數 -r 將與該套件有相依關係的套件一併移除:

$ pkg_delete -fr vim-7.3.121

若要移除主機上安裝的所有套件可使用參數 -a:

$ pkg_delete -af

更新套件

先設定更新伺服器位址以及版本號,到 /etc/make.conf: <syntaxhighlight lang="text" >

  1. for make install

MASTER_SITE_BACKUP?= \

ftp://ftp.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp2.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp3.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp4.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp5.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp7.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp8.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp9.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/

MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP} MASTER_SORT_REGEX= \.tw/ \.tw\. \.edu/ \.edu\. FETCH_CMD=fetch -U -A -P

WITHOUT_X11=yes MAKE_JOBS_NUMBER=3

  1. for cvsup make update

SUP_UPDATE=yes SUP= /usr/bin/csup SUPFLAGS= -g -L 2 SUPHOST= cvsup2.tw.FreeBSD.org SUPFILE= /usr/share/examples/cvsup/standard-supfile PORTSSUPFILE= /usr/share/examples/cvsup/ports-supfile DOCSUPFILE= /usr/share/examples/cvsup/doc-supfile </syntaxhighlight>

在 /usr/share/examples/cvsup/standard-supfile 設定版本號:

*default release=cvs tag=RELENG_7_2

接著到 /usr/ports 目錄底下執行:

make update

portmaster

檢查 ports 版本: portmaster -L | grep New

讓 portmaster 自動更新過期的套件: portmaster -aDG

Kernel 更新

FreeBSD kernel 更新有二種方式,可以至 /usr/src/ 先更新核心程式碼再自行編譯,也可以下載 binary 檔覆蓋就有的核心。

編譯

先更新核心程式碼:

cd /usr/src/
make update

更新後可以在 /usr/src/sys/conf/newvers.sh 裡面找到版本資訊:

TYPE="FreeBSD"
REVISION="7.2"
BRANCH="RELEASE-p7"

編譯核心必須按照下面步驟,步驟也可以在 Makefile 中找到:

  1. make buildworld
  2. make buildkernel KERNCONF=MY_CONF
  3. make installkernel KERNCONF=MY_CONF
  4. reboot
  5. mergemaster -p
  6. make installworld
  7. make delete-old
  8. mergemaster
  9. reboot
  10. make delete-old-libs


下載 binary

使用 freebsd-update 工具:

freebsd-update -r 7.0-RELEASE fetch
freebsd-update -r 7.0-RELEASE install

系統設定

系統相關設定、設定檔說明。

Boot

/etc/boot.conf:

set timeout 2  # 設定開機選單倒數時間為 2 秒

Network

/etc/resolv.conf

/etc/mail/aliases

/etc/netstart:

# Start network devices
/etc/netstart start


ftpchroot:使用者根目錄設定

ftp-dirFTP:共用目錄設定

Service

與系統服務相關設定

/etc/rc*

/etc/rc 批次檔只會執行命令列設定,但該程式使用的其他設定檔,則不會受到任何影響。 以下是 /etc/rc 會用到的系統參數,參數名稱可能會因版本而異。

路由選項

  • routed_flags:可以啟動路由系統程式,routed(8)。routed 處理 RIP 及 IRDP 路由。
  • mrouted_flags:控制 multicast 的路由系統程式,一般環境中不需要啟動。
  • multicast_host
  • multicast_router
  • gated:管理 gated(8) 路由程式。gated 程式在系統預設中並未安裝。
  • gated_flags


封包過濾

  • pf:使用封包過濾或是 NAT
  • pf_rules:設定檔,預設為 /etc/pf.conf
  • pflogd_flags


無硬碟客戶端

  • bootparamd_flags:啟動並管理 rpc.bootparamd(8),如果提供開機資訊給無硬碟客戶端,就需要啟動這個選項。
  • rbootd_flags:啟動遠端開機協定,可參考 rbootd(8)。
  • mopd_flags


時間管理

  • rdate_flags:在開機執行 rdate(8) 由中央時間伺服器設定系統時間。與 ntpdate 為不同的程式,通訊協定 (NTP) 也不相容。
  • timed_flags:timed(8) 透過網路做時間同步,與 ntpd 不同。
  • ntpdate_flags:如果要使用 ntpdate 將參數設定為要校準的 NTP 伺服器。
  • ntpd:啟動 ntpd 時間同步。


系統程式 Daemons

  • sshd_flags="":啟動 sshd,設定檔在 /etc/ssh 目錄下。
  • named_flags:設定名稱伺服器。
  • named_user
  • named_chroot:設定啟動後限制的目錄,預設為 /var/named
  • sendmail_flags
  • httpd_flags:Apache 網頁伺服器
  • dhcpd_flags:啟動 DHCP 伺服器 dhcpd(8)
  • lpd_flags:啟動並設定印表機伺服器
  • ftpd_flags:如果連線數量不多可以使用 inetd 啟動 ftpd,若要讓 ftpd 獨立執行則需將這個變數設定為「-D」。
  • inetd:啟動並管理 inetd 伺服器。
  • identd_flags:啟動並設定使用者識別伺服器 indentd(8)。大多數透過 inetd 啟動。
  • rwhod:若設定為 YES 則開機時啟動 rwhod(8)
  • syslogd_flags:啟動並設定系統紀錄
  • wsmoused_flags:設定為空字串則會在 console 模式啟動 PS/2 或 USB 滑鼠。可參考 moused(8)。

IPv6

  • isakmpd_flags
  • rtadvd_flags
  • route6d_flags
  • rtsold_flags


NFS

  • nfs_server:設定為 YES 則會啟動 NFS 伺服器。
  • lockd:設定為 YES 則會啟動 rpc.lockd(8)
  • amd:啟動自動掛載程式 amd(8)
  • amd_dir:設定 amd 掛載目錄
  • amd_master:主要紀錄檔位置
  • portmap:啟動 portmap,有任何 NFS 就需要啟動。
  • nfsd_flags


AFS

  • afs:啟動掛載以及 AFS 檔案系統的運作,另外必須設定 afs_mount_point 及 ads_device 參數。
  • afs_mount_point
  • ads_device
  • afsd_flags

Kerberos

  • krb5_master_kdc:啟動 Kerberos V 網域控制伺服器
  • krb5_slave_kdc:啟動 Kerberos V 第二網域伺服器


其他

  • rarp_flags
  • apmd_flags
  • xdm_flags
  • check_quotas:設定為 YES 時會定時限制使用者硬碟使用量,可參考 quote(1)
  • savecore_flags
  • ypserv_flags
  • yppasswdd_flags
  • shlib_dirs:開機時 ldconfig(8) 會額外載入的目錄


rc.conf 設定檔

/etc/rc.conf:

# Enable Apache2.2
apache22_enable="YES"

# Enable MySQL
mysql_enable="YES"

# Enable SSH
sshd_enable="YES"

# Enable Webmin
webmin_enable="YES"

System

/etc/adduser.conf 可由 adduser -C 產生設定檔,會控制將來 adduser 的預設值。 參數可由 man adduser.conf 得知:

  • defaultLgroup
  • defaultclass
  • defaultgroups
  • passwdtype
  • homeprefix
  • defaultshell
  • udotdir
  • msgfile
  • disableflag
  • upwexpire
  • uexpire
  • ugecos
  • uidstart


/etc/passwd、/etc/master.passwd 儲存使用者設定及密碼,可以使用 vipw 設定並更新使用者資料庫。

也可以在編輯 passwd、master.passwd 以後使用 pwd_mkdb 燈芯使用者資料庫。


/etc/login.conf 檔案設定使用者對系統資源的使用權限、環境、認證等。修改後使用 cap_mkdb 將設定檔轉換成資料庫格式。常見的設定:

  • coredumpsize:core dump 最大值
  • cputime:最大 CPU 時間
  • datasize:最大記憶體使用量
  • filesize:單一檔案最大體積
  • stacksize:單一程序最大可使用 stack 大小
  • maxproc:最大可執行程序量
  • memoryuse:單一程序最大記憶體使用量
  • vmemoryuse:單一程序最大虛擬記憶體使用量
  • openfiles:單一程序最大可開啟的檔案數量

一般情況下系統只會對使用者發出警告,若要做軟限制 (soft) 和硬限制 (hard) 可在參數後加上「-cur」、「-max」。

Links