作者 主題: [轉貼] 建立在CD上運行的FreeBSD系統  (閱讀 8042 次)

0 會員 與 1 訪客 正在閱讀本文。

逸晨

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1205
  • 我是逸晨
    • 檢視個人資料
[轉貼] 建立在CD上運行的FreeBSD系統
« 於: 2002-09-07 20:00 »
kidz@kkcity.com.tw (料理的層次不同啊!老頭)

建立一套可以在CD上運行的FreeBSD系統
主要拿來架設NAT、Firewall系統,也可以
建立一套簡單的X-Window使用者環境

Step 1 安裝基本系統
/stand/sysinstall
Configure -> Options
修改下列兩項
Release Name => 4.6.2-RELEASE             (或是想安裝的版本)
Install Root => /home/4.6.2-RELEASE       (找個地方來擺系統)

Distributions
=>按照一般的你的習慣來安裝FreeBSD系統
=>把基本的系統和X系統安裝起來即可         (光碟或是FTP裝起來吧!)


Step 2 設定基本系統

# cp -R /stand /home/4.6.2-RELEASE
# chroot /home/4.6.2-RELEASE

接下來根目錄會切換至/home/4.6.2-RELEASE
# mkdir -p CD-bsd
# mkdir -p CD-bsd
這個目錄是我們要放一些設定檔案和開機檔用的

設定一下/etc下面的一些檔案為光碟開機作準備
/etc/rc.conf         (至少設定個網路)
hostname="xxx.xxx.xxx"
ifconfig_xl0="................"
defaultrouter="..............."
moused_enable="YES"
sendmail_enable="NONE"
sshd_enable="YES"
##                              ##
##   Firewall選項就看個人了     ##
##                              ##
#firewall_enable="YES"
#firewall_script="/etc/rc.firewall"
#firewall_type="OPEN"
#gateway_enable="YES"
#natd_enable="YES"
#natd_interface="xl0"
##                              ##
##   PPPoE上網                  ##
##   記得編輯/etc/ppp/ppp.conf  ##
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="ISP-Name"
#ppp_nat="YES"
##   NFS Client 最好還是開啟吧! ##
nfs_client_enable="YES"

/etc/resolv.conf      (把Domain和DNS設定好)
domain  xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

/etc/rc  大概55行的位置,HOME和PATH環境變數設定之後的位置加入如下:
/sbin/mount_mfs -s 30000 swap /tmp
/sbin/mount_mfs -s 50000 swap /var
/sbin/mount_mfs -s 20000 swap /root
/sbin/mount_mfs -s 12000 -o union,noatime,rw swap /dev
cd /dev && sh MAKEDEV vty12 pty0
tar zxf /CD-bsd/var.tgz -C /
tar zxf /CD-bsd/root.tgz -C /
這個步驟是把swap掛入系統檔案讓系統/tmp /var /root /dev有讀寫的功能
大小可以自己定義
var.tgz和root.tgz在系統會完成的時候才製作

接下來放一個機器可以跑的XF86Config設定檔案到/etc/X11下面
(跑X的時候使用)   假使拿到其他顯示卡不同的硬體去跑的時候
因為root可以讀寫所以重新用xf86cfg -textmode設定好存在
/root/XF86Config就可以跑X了! (只是這樣每次光碟開機都要重新設定就是了)

# touch /etc/fstab
如果/etc/fstab裡面有內容就刪除內容讓他置空
如果/etc/fstab沒這個檔案就用touch來產生一個空的
(注意! 一定要有這個檔案,要不然光碟開機後會進不去系統)

# rm -rf /dev/ttyv* /dev/ptyp* /dev/ttyp* /dev/vga
刪除這給個dev,之前/etc/rc設定的每次開機都會重新建立新的出來

Step 3 安裝設定基本軟體

接下來開始安裝想要塞進一張光碟下所取捨的系統軟體
也是按照一般的安裝軟體的習慣來安裝就可以了
1. ports 安裝法
2. /stand/sysinstall 直接安裝packages
3. # setenv PACKAGEROOT ftp.tw.freebsd.org
   # pkg_add -r package-name

基本系統加上基本X-Win大概是310MB左右 (不裝X大概是180MB)
所以大概有接近400MB的空間是可以自己取捨來控制安裝自己常用的
把中文字型都灌好,(細明體也塞進去),建立基本的中文環境
安裝基本的上網工具Mozilla + IglooFTP + sylpheed + gaim + rxvt
再塞整個CJK-LaTeX進去(ghostscript + xpdf + dvipdfm-cjk)配vim-lite
WM方面灌WindowMaker和Icewm  (灌一堆WM的Dock...不過這些都很小)
這樣下來大概550MB左右...............不知道還要塞什麼!

最後檢察一下/root下自己私人的設定檔案
至少.cshrc的shell要設定好自己慣用的參數

# exit
跳出進行下個步驟

Step 4 製作開機影像檔

做一個給光碟開機的kernel,至少加入以下設定
options         ROOTDEVNAME=\"cd9660:acd0\"
(防火牆請記得加入相關設定)

acd0的地方請自己改成機器上的光碟開機那台的Device
config CD-bsd ; cd ../../compile/CD-bsd ; make depend ; make
請注意.....不要打太順make install到自己系統上去...這是給光碟開機用的
(因為我是打太順了....)

再來請去偷FreeBSD的開機影像檔 boot.flp (floppies/boot.flp)
把boot.flp放到/home/4.6.2-RELEASE/CD-bsd/下去

# vnconfig -c vn0 /home/4.6.2-RELEASE/CD-bsd/boot.flp
# mount /dev/vn0 /mnt
# rm /mnt/mfsroot.gz
# cat /usr/src/sys/compile/CD-bsd/kernel | gzip -9 > /mnt/kernel.gz
# cp /home/4.6.2-RELEASE/boot/boot0 /mnt/boot
# cp /home/4.6.2-RELEASE/boot/loader.4th /mnt/boot
# ee /mnt/loader.rc
  刪除第一行和第二行
# umount /mnt
# vnconfig -u /dev/vn0

Step 5 建立光碟系統

接下來要開始剪裁系統了
# cd/home
# mkdir -p /home/CD-bsd
# ee tar-exclude      (這個檔案內容是那些目錄或是檔案不需要拷貝)
usr/ports
usr/src
stand
kernel.GENERIC
# tar -X tar-exclude -cf - -C 4.6.2-RELEASE . | tar xpf - -C CD-bsd
這樣會把4.6.2-RELEASE的內容除掉tar-exclude內所包含的名單
包含檔案權限原封不動的搬到/home/CD-bsd
這個目錄是我們才是最後要製作成embedded CD的地方

# cd /home/CD-bsd
# tar zcf CD-bsd/var.tgz var
# tar zcf CD-bsd/root.tgz root
# rm -rf var/* ; rm -rf root/*


Step 6 建立光碟影像檔

# cd /home
# mkisofs -l -r -L -b CD-bsd/boot.flp -o CD-bsd.iso CD-bsd

把CD-bsd.iso燒好大功告成............


感想:
其實拿來架個NAT+firewall+DHCP變得很easy,只要事先設定好罷了
甚至喜歡要在上面運行apache+php+mySQL跑Samba也不是什麼難事
建立一個可以上網又可以弄LaTeX的CD環境看起來好像不錯........
但是....拿來架Server畢竟不是很好的解決方案,log檔關機就消失了
拿來打CJK,雖然說有很完整的環境但是系統打好文件存檔也是個問題
到時候打好還要傳到別的機器上去.......灌在光碟上好像很....無用
作Desktop環境只有簡單的上網工具看的網頁...打BB和看看FTP
Knoppix Linux的玩家看到會笑死吧! 人家可是可是不只把KDE3塞進光碟
還建立了一套很完整的使用者系統.............

總之......製作這樣的embedded感覺上很空虛........
不過自己看爽就好了......而且可以改進的地方還很多
系統內還有很多用不到的可以刪減的! /etc也可以改成可以修改來運作
最好是能夠像Knoppix Linux一樣X-Win和網路可以自己搞定.......
那就真的很方便了...........

如果有錯誤請多指教!
--
┌─────◆KKCITY◆─────┐
┐┌┐┐┌┐┌─┐┌┬┐┌┬┐┐  ┌
│         bbs.kkcity.com.tw          │├┘┐├
┘┐│      │    │  └┬┘
└──《From:61.59.151.7        》──
┘┘  ┘┘  ┘└─┘└┴┘  ┴    ┴

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7312
    • 檢視個人資料
Re: [轉貼] 建立在CD上運行的FreeBSD系統
« 回覆 #1 於: 2002-09-07 22:47 »
引述: "逸晨"
總之......製作這樣的embedded感覺上很空虛........
不過自己看爽就好了......而且可以改進的地方還很多


不太了解這句話的意思!


假如我想弄一片自己的Server光碟,
像www,mail這類的東東,
然後把需要儲存的部份放在harddisk或ram driver,
換版本時就換片光碟重開機就好了,
這樣可行嗎?

有點像一些賣ATA-Flash版本Linux的作法!

kidz

  • 憂鬱的高中生
  • ***
  • 文章數: 96
    • 檢視個人資料
Re: [轉貼] 建立在CD上運行的FreeBSD系統
« 回覆 #2 於: 2002-09-08 03:17 »
引述: "duncanlo"
引述: "逸晨"
總之......製作這樣的embedded感覺上很空虛........
不過自己看爽就好了......而且可以改進的地方還很多


不太了解這句話的意思!


假如我想弄一片自己的Server光碟,
像www,mail這類的東東,
然後把需要儲存的部份放在harddisk或ram driver,
換版本時就換片光碟重開機就好了,
這樣可行嗎?

有點像一些賣ATA-Flash版本Linux的作法!


空虛的意思是........真的很空虛啊!
這片光碟的意義是.....作給自己爽遠大於實用性質!

作NAT、DHCP、Firewall是不錯! 剛剛好!
不過想架設WWW........網頁要放那怎麼更新
Mail收發沒什麼問題......但是是否重開機之後存的Mail都不見了
也是用NFS去mount別台的資料過來使用是個好方案
但是這樣乾脆在那台機器上架設WWW、Mail Server就好了
何必多此一舉.................................

這樣製作出的FreeBSD works on CD是否很空虛........

不過這樣作的好處是.....可以先依照自己安裝FreeBSD的習慣
來安裝調整系統最後再弄進光碟去..................展示用
如果要拿到不同機器用.....網路要重設.....要跑X的話XF86Config
也要重設.....是比較不方便的地方

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7312
    • 檢視個人資料
[轉貼] 建立在CD上運行的FreeBSD系統
« 回覆 #3 於: 2002-09-08 03:42 »
就是CD上放OS+AP,
mail及www的資料放在harddisk內,
第一次CD開機會初始化partition,
需要儲存的東西都放在硬碟內,
要更新版本只要換張光碟,
當機重開也不怕OS壞,
而且可以作專屬的系統!

很多作在ATA-Flash的內嵌Linux都是這樣作!

我只是想作個拋棄式的OS光碟!
有些場合,
就是不要跟別人一樣裝一台Server...

會空虛嗎?
我看到這東東,
覺的很神奇呢!

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7312
    • 檢視個人資料
Re: [轉貼] 建立在CD上運行的FreeBSD系統
« 回覆 #4 於: 2002-09-08 03:47 »
引述: "kidz"
如果要拿到不同機器用.....網路要重設.....要跑X的話XF86Config
也要重設.....是比較不方便的地方


可以像DemoLinux一樣,
開機到最後,
跑個交談式的script,
問你一些像網路設定的東東,
可以這樣嗎?

假如可以作到這樣,
那真的是""Live""CD了...

kidz

  • 憂鬱的高中生
  • ***
  • 文章數: 96
    • 檢視個人資料
[轉貼] 建立在CD上運行的FreeBSD系統
« 回覆 #5 於: 2002-09-08 04:23 »
引述: "duncanlo"
就是CD上放OS+AP,
mail及www的資料放在harddisk內,
第一次CD開機會初始化partition,

這邊......要自動我不太行......請賜教!

引用
需要儲存的東西都放在硬碟內,
要更新版本只要換張光碟,
當機重開也不怕OS壞,
而且可以作專屬的系統!
很多作在ATA-Flash的內嵌Linux都是這樣作!

我只是想作個拋棄式的OS光碟!
有些場合,
就是不要跟別人一樣裝一台Server...

會空虛嗎?
我看到這東東,
覺的很神奇呢!


除了的一次自動幫硬碟初始化之外.........
我想可以先手動......分割硬碟
光碟裡面只要事先寫好mount的指令
應該是可以達到這種效果!
到時候升級的時候就可以直接更新光碟就好
硬碟可以放之前製作好的base system慢慢去修改
我自己是做好ISO後先拿到VMWare上去跑跑看
不滿意再回去改系統慢慢修出自己滿意的環境和系統
才燒出來用的..........

kidz

  • 憂鬱的高中生
  • ***
  • 文章數: 96
    • 檢視個人資料
Re: [轉貼] 建立在CD上運行的FreeBSD系統
« 回覆 #6 於: 2002-09-08 04:26 »
引述: "duncanlo"
引述: "kidz"
如果要拿到不同機器用.....網路要重設.....要跑X的話XF86Config
也要重設.....是比較不方便的地方


可以像DemoLinux一樣,
開機到最後,
跑個交談式的script,
問你一些像網路設定的東東,
可以這樣嗎?

假如可以作到這樣,
那真的是""Live""CD了...


這真是個理想化的目標呢.............
Knoppix Linux製作的就真的是很棒........

gman

  • 懷疑的國中生
  • **
  • 文章數: 84
    • 檢視個人資料
Re: [轉貼] 建立在CD上運行的FreeBSD系統
« 回覆 #7 於: 2002-09-09 04:34 »
引述: "duncanlo"
引述: "kidz"
如果要拿到不同機器用.....網路要重設.....要跑X的話XF86Config
也要重設.....是比較不方便的地方


可以像DemoLinux一樣,
開機到最後,
跑個交談式的script,
問你一些像網路設定的東東,
可以這樣嗎?

假如可以作到這樣,
那真的是""Live""CD了...


這樣的 freebsd live cd在sf.net中的確有這樣的project在進行喔
可以到sf.net打freebsd搜尋看看就會有了
不過不知道完成度如何就是了
能力決定你作多少事,態度決定你作好多少事~

unitcell

  • 活潑的大學生
  • ***
  • 文章數: 411
    • 檢視個人資料
MySQL ?
« 回覆 #8 於: 2002-11-07 10:42 »
你好,

跟據您的大作,
自行安裝加入MySQL Server,
有個檔案/tmp/mysql.sock 其File mode
為srwxrwxrwx , s為何意?
作好的CD, 開機後一切正常,
可是目錄/tmp下的mysql.sock不見了!?
以致mysql client跑不起來.

小弟嘗試在原製作HDD上,
要把那檔mysql.sock 拷備至磁碟片上,
卻copy不走, 這是怎一回事?

Thanx.

嘉義小子.

bicar

  • 憂鬱的高中生
  • ***
  • 文章數: 98
    • 檢視個人資料
[轉貼] 建立在CD上運行的FreeBSD系統
« 回覆 #9 於: 2003-10-19 03:58 »
照著上面的做法修改成bsd5.1的
但是失敗了:
在5.1裡是用mdconfig而不是vnconfig
然後boot.flp映像檔內的loader.rc裡只刪掉第三行
也就是load -t mfs_root /mfsroot(sorry因為不知道4.6內附的loader.rc的第一行及第二行是什麼)
 

但是在燒成光碟後,在mount filesystem(cd9669:acd0)時, 卻出現錯誤,
"""can't allocate root mount for filesystem 'cd9660:19'""""

請問有人試過這樣的東西在5.x上面嗎?~~~~~

懇請指教