2007年3月27日 星期二

[FreeBSD] 動態載入相關資訊

From : BSD 討論版 @ 酷!學園, 2002/07/26 的文章對話

  • FreeBSD不是把硬體裝置都編到Kernel內了, 那 /modules 除了放 ScreenSaver 外, 到底是作什麼用的?
  • 不知您有無注意到,在編譯核心時,最後在 Install 的時候,不是會有安裝 module 的訊息嗎? 那就是將可以採用模組載入的方式的硬體,不管是否已編入核心了,全部都給編成模組,以方便某些未編入核心的硬體,要使用時可以動態載入使用。
    如果已開完機且登入到系統了,可以使用 kldload <module name> 來動態載入
    kldunload <module name> 來卸載
    kldstat 來查看目前載入的模組狀態
    如果要在開機前載入未編入到核心的硬體模組,可將其寫入到 /boot/loader.conf 檔案中,詳細的模組載入語法,請查看 /boot/defaults/loader.conf 便知。
  • 那可以作基本的kernel, 其他的裝置及服務都以modules的方式載入吧! 像Linux那樣!
  • 當然可以呀,而且如果沒記錯的話,早在 2.X 版就已支援這種作業方式了,搞不好更早 ^_^
    不過哩,就像 Linux 一樣,有些硬體是尚未支援動態載入的,所以如果需要用到的話,還是只能乖乖的編到核心中地。
  • 對呀,不過因為版本已和黑皮書時的版本不同了,所以載入模組的指令也已不一樣了 ^_^
    對了,如果沒記錯的話,Linux 的核心,好像也是有分可模組化和不可模組化吧??
  • Linux下用make menuconfig時, 可以作成modules的會有個"M"的選項, Linux下作成Modules的也多半是硬體裝置及一些功能(Firewall AP Support)...

簡單的來說,系統一些硬體裝置大部分都是編進 kernel 的,然而,也有提供需要時再載入的方式,嘿,可以回想讀OS的心情喔!至於後者的使用方式,就稱為動態載入,因此,有些系統軟體安裝就會分成要編 kernel 或是採用動態載入啦,不過要留意的是,有些功能是限定編入 kernel 來使用的,需留意啦。

2007年3月26日 星期一

[FreeBSD] FreeBSD 詳細的安裝教學 - 舊安裝方式

這篇是以前大三修交大資工計算機系統管理課程中的投影片,從中取出紀錄的過程。當時使用的 FreeBSD 4.10 左右的作業系統,在此當作個筆記記錄回憶啦。比較新的方式可參考:[FreeBSD] 安裝 FreeBSD 與系統更新


我習慣用光碟安裝,所以以 6.1 來說,就是去抓光碟啦

至於安裝的套件就選:



  1. base  : binary

  2. kernels(all) : Generic kernel and SMP kernel

  3. Man  : Manual

  4. src  : FreeBSD Source Code

  5. ports  : FreeBSD Software Collection

  6. local  : local additions


安裝完套件可以調的東西:



  1. Root Password

  2. Time Zone > Asia > Taiwan

  3. Mouse > enable

  4. Networking > sshd

  5. Packages (optional), ex: net/csup, editors/vim-lite


抓取更新系統的檔案:



  1. pkg_add ftp://freebsd.csie.nctu.edu.tw/pub/releases/i386/6.1-RELEASE/packages/net/csup-20060223_1.tbz

  2. 編寫 /usr/local/etc/cvsup-all 更新檔案

    • Where to get source

    • Where to put status file

    • Where to put source

    • Allow cvs to delete

    • Compress before transmit



  3. *default host=freebsd.csie.nctu.edu.tw
    *default base=/usr
    *default prefix=/usr
    *default delete use-rel-suffix
    *default compress
    *default release=cvs tag=RELENG_6
    src-all
    ports-all tag=.


  4. 記得寫一下 /etc/make.conf 檔
    MASTER_SITE_OVERRIDE?=  \
             ftp://freebsd.csie.nctu.edu.tw/pub/distfiles/${DIST_SUBDIR}/\
             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}/


    WITHOUT_X11=YES



  5. # /usr/local/bin/csup -L 1 /usr/local/etc/cvsup-all > /var/log/csup.log
    The “–L 1” tells cvsup to print out the details of all the file updates it is doing. from 0 (silent) to 2.


更新步驟:




  1. make buildworld



    • # cd /usr/src



    • # make buildworld >& /var/log/world.log &





  2. make buildkernel



    • # cd /usr/src/sys/i386/conf



    • # cp GENERIC “YOUR-NAME”



    • # edit config file





  3. make installkernel



    • 新的方式
      # cd /usr/src
      # make KERNCONF=YOUR-NAME buildkernel


      其他資訊







      • Note: This method of kernel building requires full source files. If you only installed the kernel source, use the traditional method.






      • Tip: By default, when you build a custom kernel, all kernel modules will be rebuilt as well. If you want to update a kernel faster or to build only custom modules, you should edit /etc/make.conf before starting to build the kernel:
            MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs









    • 舊的方式
      @ /usr/src/sys/i386/conf/
      # /usr/sbin/config YOUR-NAME
      # cd ../compile/YOUR-NAME (or ../../compile/YOUR-NAME )
      # make dependclean (6.1版會提醒你要作這步, 之前的只有提醒做 make depend)
      # make depend
      # make
      # make install





  4. reboot and boot in single user mode



    • 使用 shutdown now 或



    • Press "4" 於開機選項





  5. mergemaster -p



    • Pre-buildworld mode.  Compares only files known to be essential to the success of {build|install}world, including /etc/make.conf.





  6. make installworld



  7. mergemaster



    • Synchronize /usr/src/etc with /etc



    • Choose “i” for most case, such as /etc/defaults/rc.conf, …



    • Press “enter” for certain file, such as master.passwd, hosts, csh.*





  8. reboot



如果有任何錯誤的話:




  • Possible errors in building new kernel



    • Boot with old kernel



      • In 5.x ~



        1. Press “6”



        2. Type “boot /boot/kernel.old/kernel”




      • In 4.x



        1. Hit any key other than “enter” when counting down



        2. Type “unload”



        3. Type “load /kernel.old”



        4. Type “boot”








上述的一些過程可以當作更新系統的方法,但有些部分不適用於已安裝好的系統,即已安裝於系統的軟體並不會得到更新,必需額外使用軟體來進行更新,這是以前的文章(用的是 cvsup ,現在大多改用 csup ):





  • 安裝所需的軟體



    • cvsup
      # cd /usr/ports/net/cvsup-without-gui && make install



    • portupgrade
      # cd /usr/ports/sysutils/portupgrade && make install



    • 打這個指令讓才剛裝好的程式立即可以使用:
      rehash



    • cvsup 是個工具,她可以幫我們至 FreeBSD 站台更新 Source-Tree 及 Ports-Tree 回來您的主機中。portupgrade 是 FreeBSD 中升級以 PORTS 安裝的軟體的一個套件(必須是您更新 Ports-Tree 之後)。





  • 更新 PORTS-Tree 且升級已安裝的軟體



    • 取回「更新 PORTS-Tree的設定檔」cvsupfile-ports:
      fetch ftp://ftp.tw.freebsd.org/pub/CVSup/cvsupfile-ports



    • 依據 cvsupfile-ports 中的定義,至 CVSup 站臺更新 PORTS-Tree
      cvsup -g -L 2 cvsupfile-ports



    • 先重建您系統中 PORTS 的 INDEX 資料庫
      這個部份恐需時甚久,而且會令你覺得是不是當機了,所以請耐心等候。
      portsdb -Uu



    • 再接著是修補程式間的關連性,才能正確並有效率的升級已安裝的軟體
      pkgdb -F



    • 為了以防萬一,我們先做個升級的假動作:
      portupgrade -ayn



    • 如果剛剛的升級測試都沒有問題,現在就可以正式來一遍了:
      portupgrade -ay



    • 你可以寫一個批次檔讓此程式來執行:
      #!/bin/sh
      cvsup -g -L 2 cvsupfile-ports
      portsdb -Uu
      pkgdb -F
      portupgrade -ayn



    • 更詳細的資訊,您可以
      man  portupgrade






[FreeBSD] 調整自己的最佳環境 - CPUTYPE

依照自己的 CPU 的型態去作調整,即在 make.conf 中去編寫CPUTYPE。


取得自己的 CPU Type:




  1. cd /usr/ports/benchmarks/ubench



  2. make extract



  3. make "CPUTYPE?=k6-2"



  4. 執行 work/ubench-x.xx/ubench 看分數



  5. 然後再 make clean ; 再換新的CPUType去編,再看分數



使用 extract 即下載並解壓縮,但不安裝。至於 CPUTYPE 可從  /usr/share/examples/etc/make.conf 找尋,不確定的話就透過上述步驟,去測看看哪個分數高,就是你的CPUTYPE啦,透過這簡單的調整,可以增進效能喔!


2007年3月22日 星期四

上課的態度

大學,求學的心態彷彿是往後走。

大一時,我上下學期修了27學分,但被當了2學分;大二時,上學期22,下學期27;大三時,上學期24,下學期19;大四時,上學期11,下學期11,但被當了6學分延畢。大五的生活?課當然不會超過六學分。

自從大四生活後,開始覺得自己對課程的吸收度有點退步!大一可以一下就適應高學分的學期,大四下卻連四門課都搞不定?發現自己大五的生活也有點如此,並不是能力的問題,而是心態上的積極度。

該找個方式找回學習的積極度了。我想,做個筆記是個不錯的開始。

人生永不止步

昨天晚餐前,成大放榜了,依舊跟去年一樣,榜上無名。有時會有深刻的感觸,大概是不善於考試,抑或考試與唸書是兩回事。今年比較會到批踢踢的升學板打混,發現有許多人失落,儘管幾家歡樂幾家愁,但落榜的不在少數。

今天早上上完課,剛聽我同學說,交大的考卷也都改完了,看來又得再接受打擊了,哈。回想起考完交大的那天,頗失落的!畢竟重考的,對考卷的敏感度會上升,似乎成績還未出來就可猜測結果。於是,我渡過了寢室中的失落。我開始在想,沒了碩班的生活未來將會是個如何?最大的影響應該是學習的規律!

去年,我直想著呆在原處,因為資源與機會。今年,我的思考有了不一樣的方向,我甚至有點擔心離開學生後的生活。回想起某位長輩說過的話,我開始對學位感到敏感,儘管自覺能力不差,但現在的我還沒學會證明的技巧。

約莫兩個月的學生生活,我得趕緊把證明的方式明確。