FreeBSD Bootable USB Stick with Your Environment

跟以往一樣,對高手而言,這是廢文一篇;您可以現在選擇離開。

如果不,也不用緊張,步驟非常簡單,你可以直接捲完頁面看一下,步驟並不多。

準備

  1. 2G 以上的隨身碟,如果你要執行 X,請準備 4G 以上的隨身碟,如果是高速隨身碟,你用起來會比較開心
  2. 一個 FreeBSD VM 環境,或是你原本就有 FreeBSD 桌面環境
  3. 清晰的腦,因為會執行 fdisk 以及 newfs,不要打錯字以免毀了你的環境
  4. 你的 FreeBSD 環境必須裝有 rsync

想法

把整個 VM 或桌面環境同步過去 USB 帶著走

先複製一些小弟寫的 script 到你的 FreeBSD 環境

注意,我沒把 ports 相關的東西放進去,要放就自己改 script

以下檔案請放對位置,比如 /root 下的 sync_to_usb.sh 以及 /root/pctbsd 下的其他檔案

  1. sync_to_usb.sh:

    #!/bin/sh
    sudo rsync -av -H --delete --exclude /mnt --exclude /dev --exclude /srv --exclude /usr/ports --exclude /var/db/portsnap --exclude /tmp --exclude /var/tmp / /mnt
    sudo mkdir -p /mnt/dev /mnt/mnt /mnt/tmp /mnt/var/tmp
    sudo cp -rpf pctbsd/fstab /mnt/etc/fstab
    sudo cp -rpf pctbsd/loader.conf /mnt/boot
  2. pctbsd/fstab:

    # Device                Mountpoint  FStype  Options                     Dump Pass#
    /dev/ufs/FreeBSDonUSB   /           ufs     rw,noatime                  1    1
    md                      /tmp        mfs     rw,-s500M,nosuid,noatime    0    0
    md                      /var/run    mfs     rw,-s4M,nosuid,noatime      0    0
    md                      /var/log    mfs     rw,-s16M,nosuid,noatime     0    0
    /tmp                    /var/tmp    nullfs  rw                          0    0
    /dev/acd0               /cdrom      cd9660  ro,noauto,nosuid            0    0
  3. pctbsd/loader.conf:

    vesa_load="YES"
    geom_uzip_load="YES"
    geom_label_load="YES"
    snd_driver_load="YES" # sound
    kern.maxfiles="25000" # desktop
    kern.maxusers="64"    # desktop
    kern.cam.boot_delay=10000
    sem_load="YES"        # firefox and others
    

開始 fdisk

以下假設你的 USB stick 位置是 /dev/da0:

# fdisk -BI /dev/da0
# bsdlabel -B -w /dev/da0s1
# newfs -j -U -L FreeBSDonUSB /dev/da0s1a

開始複製

  1. 先把 usb mount 到 /mnt:

    # mount /dev/da0s1a /mnt
    
  2. 執行複製指令:

    # ./sync_to_usb.sh
    
  3. 複製完就退出:

    # umount /mnt
    

就這樣

是的,就這樣,你可以先用桌面環境把東西處理好,接著就是 sync 到你的 USB 就好。

就是

  1. mount usb
  2. sync
  3. umount usb
  4. 拿去用。

你還可以拿去賣

一個 USB 隨身碟賣給客戶,插一下 USB 就有 server 可以用了。

補充說明

  1. 嫌速度慢是一定的,要不就用 mfsroot 的方式(參考 mfsbsd),在 42MB 把你覺得重要的 /bin /sbin /boot /usr/bin/ usr/sbin 都塞進去

  2. 如果你要跑桌面,記得 /etc/rc.conf 要設定好,比如:

    hostname="pct-bsd"
    ifconfig_em0="DHCP"
    sshd_enable="YES"
    dbus_enable="YES"
    hald_enable="YES"
    sendmail_enable="NONE"
    gdm_enable="YES"
    

參考資料

如果你想要優化,或作不同層面的應用,請看這些參考資料

  1. http://typo.submonkey.net/articles/2006/4/13/installing-freebsd-on-usb-stick-episode-2
  2. http://forums.freebsd.org/showthread.php?t=11715