GY# alias ....其他省略.... alias vi='vim' <==重點在這行啊!
|
【FreeBSD】Mount msdos-掛載 USB 隨身碟
前言
今天為了要測試將三個 FreeBSD .iso 合併為一個 .iso 所以要掛載 USB 隨身碟 (因為我是存在別台電腦上),所以就順手寫個筆記吧。(請尊重 weithenn 的辛勞!!)作業環境
- FreeBSD 6.3-RELEASE
- 2 GB USB 隨身碟(請尊重 weithenn 的辛勞!!)
安裝及設定
步驟1.插入 USB 隨身碟
在插入 USB 隨身碟以前請先檢查在您的 Kernel 中是否將下列項目註解掉。(請尊重 weithenn 的辛勞!!)device scbus # SCSI bus (required for SCSI)
device da # Direct Access (disks)
device pass # Passthrough device (direct SCSI access)
device uhci # UHCI PCI->USB interface (Support USB 1.x)
device ohci # OHCI PCI->USB interface (Support USB 1.x)
device ehci # EHCI PCI->USB interface (Support USB 2.0)
device usb # USB Bus (required)
device umass # Disks/Mass storage - Requires scbus and da接下來檢查系統是否啟動 usbd 服務 (預設便開啟)(請尊重 weithenn 的辛勞!!)#less /etc/rc.conf
usbd_enable="YES" //開機後啟動 usbd 服務將您的 USB 隨身碟插入 FreeBSD 機器上,此時 FreeBSD Console 應該會出現如下類似訊息,或使用 dmesg 來查看也可。(請尊重weithenn 的辛勞!!)umass0: vendor 0x13fe Silicon-Power, rev 2.00/1.10, addr 2
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <> Removable Direct Access SCSI-0 device
da0: 40.000MB/s transfers
da0: 1967MB (4029440 512 byte sectors: 255H 63S/T 250C)步驟2.掛載 USB 隨身碟
所以由上述訊息可知 USB 隨身碟被系統辦認為 da0 (就像 Windows 辦認為 ex. E: 一樣),接下來就使用下列指令掛載 USB 隨身碟到 /mnt 下吧。(請尊重 weithenn 的辛勞!!)#mount -t msdos /dev/da0s1 /mnt
mount: Using "-t msdosfs", since "-t msdos" is deprecated.確認 USB 隨身碟是否有掛載到 /mnt 下(請尊重 weithenn 的辛勞!!)#df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 496M 63M 393M 14% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1g 127G 8.0M 117G 0% /home
/dev/ad0s1e 496M 12K 456M 0% /tmp
/dev/ad0s1f 9.7G 1.2G 7.7G 14% /usr
/dev/ad0s1d 2.9G 2.2M 2.6G 0% /var
/dev/da0s1 1.9G 1.5G 400M 80% /mnt //由 Size 可知有正確掛載(我的 USB 容量是 2GB)當 使用完 USB 後記得離開 /mnt 後下 umount 指令,然後就可將 USB 隨身碟拔出 FreeBSD 機器了,拔出後 FreeBSD Console 應該會出現相關訊息,或使用 dmesg 查看也可, (就像 Windows 會說您可安裝移除該裝置一樣)(請尊Ports and Packages 常見問題
[轉載] http://www.freebsd.org/zh/FAQ/ports.html
如果只希望抓取 tarball 下來的話,僅需打下面指令即可:
如果是希望抓取安裝此 ports 所有相關相依 ports 的 tarball,以 systuils/portupgrade 為例的話,則:
如果是希望抓取 ftp 分類下所有 ports 的 tarball ,則:
# make fetch如果是要抓取單一的 port,以 editors/joe 為例的話,則:
# cd /usr/ports/editors/joe # make fetch那麼,預設會將 editors/joe 的 tarball 下載至 /usr/ports/distfiles 目錄下。
如果是希望抓取安裝此 ports 所有相關相依 ports 的 tarball,以 systuils/portupgrade 為例的話,則:
# cd /usr/ports/systuils/portupgrade # make fetch-recursive預設會將此 port 與所有需要的其他 port 的 tarball,都下載至 /usr/ports/distfiles 目錄下。
如果是希望抓取 ftp 分類下所有 ports 的 tarball ,則:
# cd /usr/ports/ftp # make fetch-recursive則會所將 ftp 分類下所有 ports 的 tarball 都下載至 /usr/ports/distfiles 目錄下。
有時候習慣自己 patch 原始碼的時候,會很常用到這個功能。以 editors/joe 為例的話,則:
# cd /usr/ports/editors/joe
# make extract那麼就會將 tarball解開至 /usr/ports/editors/joe/work 目錄下。
此法與上面方式有一些類似,不同於是先補上官方提供的 patch ,再行 patch 自己的修正。有時候習慣自己 patch 原始碼的時候,會很常用到這個功能。 以 editors/joe 為例的話,則:
# cd /usr/ports/editors/joe
# make patch那麼就會將 tarball解開至 /usr/ports/editors/joe/work 目錄下 ,並補上官方提供的 patch。
如果系統上未安裝此軟體,則可以選擇安裝一個新的 port。 以 editors/joe 為例的話,則:
# cd /usr/ports/editors/joe
# make install如此會在系統上安裝一個新的 joe 軟體。 如果需要在安裝完成後,也一併清除編輯時期所留下來的暫存目錄,則可配合 make clean 方法一起使用,如:
# cd /usr/ports/editors/joe
# make clean
將安裝完成的軟體打包起來,有許多便利性:包括在叢集系統中,可供其它機器使用, 或將未來此軟體出問題可重新利用此 package 重新快速安裝。 以 editors/joe 為例的話,則:
# cd /usr/ports/editors/joe
# make package如此會在系統上安裝一個新的 joe 軟體,並將此軟體打包(package)起來。 package 預設會在 /usr/ports/editors/joe 目錄下,如果希望集中管理的話,建議做如下的步驟:
# mkdir -p /usr/ports/packages/All以後打包的 packages 都會存放在此目錄下,並且系統會自動做分類,以方便管理。 如果需要在安裝完成後,一併清除編輯時期所留下來的暫存目錄,則可加上 make clean 一起使用,比如:
# cd /usr/ports/editors/joe
# make package clean
因為上面剛說的 make package 方式只有打包單一套件, 中間依賴的 ports 並沒有一起打包,這會出現一個常遇到的問題: 就是如果一個 port 需要依賴其它的 ports,那麼必須將其它 ports 也一起打包,否則安裝 packages 會有相依的問題。 以 sysutils/portupgrade 為例:
# cd /usr/ports/sysutils/portupgrade
# make DEPENDS_TARGET=package package如此一來,就會對所有 portupgrade 所相依賴的 ports 都一併打包,也包括自己本身。
如果安裝好一個套軟,事前並未打包,事後想打包的話, 以 editors/joe 為例:
# cd /var/db/pkg
# pkg_create -b joe-{版本號}
如此一來,就會將已安裝的 port 打包起來,放在 /var/db/pkg 目錄下。
在安裝 port 的時候,通常會有編譯期間所需要的工作目錄(work),因此通常安裝好一個套件後,會清除此暫存目錄,以節省硬碟空間。 以editors/joe 為例:
# cd /usr/ports/editors/joe
# make clean而如果是希望清除所有 ports 的暫存目錄,則:
# cd /usr/ports
# make clean而如果是希望清除所有 ftp 分類的暫存目錄,則:
# cd /usr/ports/ftp
# make clean
上面所講的 make clean 僅只是清除編輯期間所需要的工作目錄(work),並沒有將編譯 ports 時一併下載的 tarball 刪除(相對應之 tarball 預設會存放在/usr/ports/distfiles) 如果打算把 tarball 也一併清除的話,以 editors/joe 為例:
如果是希望清除所有 ports 的暫存 work 目錄及 tarball,則:
# cd /usr/ports/editors/joe
# make distcleanmake distclean 的步驟包含了 make clean 的功能,也就是說除了會刪除 tarball 外,還會一併清除編譯時的暫存 work 目錄。
如果是希望清除所有 ports 的暫存 work 目錄及 tarball,則:
# cd /usr/ports
# make distclean而如果是希望清除所有 ftp 分類的暫存目錄以及 tarball,則:
# cd /usr/ports/ftp
# make distclean
在安裝 ports 前,可以查詢所需依賴/相關的套件。 以 mail/p5-Mail-SpamAssassin 為例:
# cd /usr/ports/mail/p5-Mail-SpamAssassin
# make all-depends-listmake all-depends-list 顯示此套件所有相依的套件。
# cd /usr/ports/mail/p5-Mail-SpamAssassin
# make pretty-print-build-depends-listmake all-depends-list 顯示此套件在編譯期間所需要的套件。
# cd /usr/ports/mail/p5-Mail-SpamAssassin
# make pretty-print-run-depends-listmake all-depends-list 顯示此套件要執行時所需要的套件。
以 editors/joe 為例:
# cd /usr/ports/editors/joe
# make deinstall或是使用 pkg_delete:
# pkg_delete joe-{version}
有時候套件之間的相依性會導致無法直接移除,如果要強制移除的話,則:# pkg_delete -f joe-{version}
但請注意:很有可能會導致其它相依到這軟體的套件執行起來出現問題。
以 sysutils/portupgrade 為例:
# cd /usr/ports/sysutils/portupgrade
# make deinstall-depends執行此步驟前,請注意是否會移除其他套件也有共同相依的部分。建議先參考 上面所講的 make-depends-list 的方法來檢查。
# pkg_delete joe-{version}
或者建議用:pkg_delete,這樣若仍有相依該套件的話,會先警告而不會移除。 除非有另外加了 -f 參數來強制移除...。# pkg_delete -r joe-{version}
重新安裝的前提是:之前有安裝過或目前已安裝。以 editors/joe 為例:
# cd /usr/ports/editors/joe
# make deinstall clean install或是
# cd /usr/ports/editors/joe
# make reinstall或是
# portupgrade -f joe
如果要從全部的 ports collection 中找尋與關鍵字 "ldap" 有關的 ports,則:
# cd /usr/ports
# make search key=ldap如果只要從與 ftp 相關的 ports 下找尋與關鍵字 "ldap" 有關的 ports,則:
# cd /usr/ports/ftp
# make search key=ldap另外,還有另一個用法,方法只是將 key 換成 name。如果已經知道要搜尋 ports 的名稱,或只想找名稱相關的關鍵字 "ldap", 則:
# cd /usr/ports
# make search name=ldap
如果已經安裝套件,事後欲升級的話,必須先移除舊版的 port。以 editors/joe 為例:
# portupgrade joe或是
# cd /usr/ports/editors/joe
# make clean reinstall或是
# portupgrade -f joe
如果想查詢 /usr/local/bin/joe 是屬於哪個套件的話,則:
# pkg_info -W /usr/local/bin/joe如果沒有回傳任何資訊的話,代表著這個檔案是由 FreeBSD 內建的。
有時候會因為相依性,或是新版有問題,而會想裝舊版本的套件。 這裡介紹的方法是利用 CVS 的好處,回歸到以前舊版本存在的日子,以安裝舊版本的套件。
首先,若我們要回復到某一個套件的版本時,需要去查詢 FreeBSD ports CVS repository。 最常見的就是 Freshports 網站、 FreeBSD 的 Mailing FreeBSD cvs 或是 FreeBSD ports cvsweb。
查到該套件版本所依存的日子後,就修改 CVS tag。一般預設 ports 的 CVS tag 會寫在 /usr/share/examples/cvsup/ports-supfile ,如要回溯到 2002/10/05 號的話,則:
如果僅是想回溯某部份的 ports,則必須加上額外的資訊,如僅希望把 lang/perl5.8 回溯, 而我們得知此屬於 lang 中的一支,則:
最後,執行 CVSup 或 csup ,並安裝即可。目前若希望單獨回溯單一的 port,則比較麻煩。
首先,若我們要回復到某一個套件的版本時,需要去查詢 FreeBSD ports CVS repository。 最常見的就是 Freshports 網站、 FreeBSD 的 Mailing FreeBSD cvs 或是 FreeBSD ports cvsweb。
查到該套件版本所依存的日子後,就修改 CVS tag。一般預設 ports 的 CVS tag 會寫在 /usr/share/examples/cvsup/ports-supfile ,如要回溯到 2002/10/05 號的話,則:
# vi /usr/share/examples/cvsup/ports-supfile
default date=2002.10.05.00.00.00 #將 date 改成當日然後按照一般 CVSup 或 csup 的時候一樣,執行 CVSup 或 csup (make update),此時的 ports collections 就會回到當時的情形,那麼該套件的舊版也會出現在 ports collections 中,只要安裝即可。
如果僅是想回溯某部份的 ports,則必須加上額外的資訊,如僅希望把 lang/perl5.8 回溯, 而我們得知此屬於 lang 中的一支,則:
# vi /usr/share/examples/cvsup/ports-supfile
#ports-all #將 ports-all 標示起來
ports-lang #加入這行
最後,執行 CVSup 或 csup ,並安裝即可。目前若希望單獨回溯單一的 port,則比較麻煩。
NanoBSD
就我僅知的, 要把 FreeBSD 作成嵌入式系統的 OS 有三種手法, 最早得知的是 PicoBSD, 然後是 TinyBSD, 還有最近才開始碰的 NanoBSD. 因為系統的需求, 我需要把功能完整而且包含 Ports 的 FreeBSD 搞成嵌入式系統(裝在 CF 卡裡面), 系統基本功能拿 PicoBSD 或 TinyBSD 都很簡單, 但是要包含 Ports 的話則是 NanoBSD 比較容易.
1. 事前準備
先要有一台對應版本的 FreeBSD box(廢話!?), 我用的是 FreeBSD 7.1(目前測試 7.2 和 8.0 都 ok, 這東西已經進 system source, 所以應該不會出什麼大問題)
1-1. 把預定要安裝的 ports 做成 package
1. 事前準備
先要有一台對應版本的 FreeBSD box(廢話!?), 我用的是 FreeBSD 7.1(目前測試 7.2 和 8.0 都 ok, 這東西已經進 system source, 所以應該不會出什麼大問題)
1-1. 把預定要安裝的 ports 做成 package
mkdir /usr/ports/packages
cd /usr/ports/ooxx
make DEPENDS_TARGET=package package clean
SSH ABOUT
修改sshd_config文件
把
PermitRootLogin no
改成
PermitRootLogin yes
重新啟動sshd服務就OK了
把
PermitRootLogin no
改成
PermitRootLogin yes
重新啟動sshd服務就OK了
Setting *.conf file for NanoBSD
Beastie_disable="YES"
It turns off the "Beastie" menu and reverts to the standard loader countdown.
This is what the loader boot looks like normally without beastie_disable="YES". Here is what it looks like with beastie_disable="YES" set in loader.conf. |
SSH scp指令
使用 scp 指令
-P 後面接的是port 預設值是22
-r 可以連目錄一起copy
可以使用 scp 指令來透過一個安全且加密的連線在機器間傳輸檔案,就如同 rcp 指令。
傳輸一個本機檔案到遠端機器的一般語法如下:
scp localfile username@tohostname:/newfilename
localfile 代表來源檔案,而 username@tohostname:/newfilename 代表目的地。
如要傳輸本機檔案 shadowman 到您在 penguin.example.net 主機中的帳號,請在 shell 提示符號下輸入以下指令(使用您的使用者名稱取代 username):
scp shadowman username@penguin.example.net:/home/username
這將會傳輸本機檔案 shadowman 到 penguin.example.net 主機上的 /home/username/shadowman。
如果要傳輸一個遠端的檔案到本機系統,一般的語法如下:
scp username@tohostname:/remotefile /newlocalfile
還可以指定多重的檔案當作來源檔案,例如要傳輸 /downloads 目錄的內容到遠端機器 penguin.example.net 上一個既存的目錄稱為 uploads,請在 shell 提示符號下輸入以下指令:remotefile 代表來源檔案,而 newlocalfile 代表目的地。
scp /downloads/* username@penguin.example.net:/uploads/
ex.
scp -r _.disk.image gary@172.16.1.2:/Users/mac/Desktop/ASUSTOR
scp -P 22 root@111.222.333.444:/root/file_name ./-P 後面接的是port 預設值是22
-r 可以連目錄一起copy
Setting ssh on FreeBSD
#sysinstall
允許 ssh
在/etc/rc.conf
加上 ssh_enable="YES"
啟動 /etc/rc.d/sshd restart
設定檔位置
/etc/ssh/sshd_config
Note: 允許遠端 Root 登入 PermitRootLogin yes
允許 ssh
在/etc/rc.conf
加上 ssh_enable="YES"
啟動 /etc/rc.d/sshd restart
設定檔位置
/etc/ssh/sshd_config
Note: 允許遠端 Root 登入 PermitRootLogin yes
將 USB 隨身碟或是硬碟格式化成 freebsd UFS2 type
# dd if=/dev/zero of=/dev/da0s1 bs=1k count=1
# newfs -O 2 /dev/da0s1
本來之前常在使用 FreeBSD 當伺服器時沒碰過這樣的問題,不過現在由於習慣使用 Linux 當桌面,自然而然就偶而就會要 mount ufs type 的硬碟,本來還一直以為只能 read only,後來才知道原來可以使用如下的指令來存取 ufs2 的分割磁區:
# mount -t ufs -o ufstype=ufs2 /dev/sdb1 /mnt/usb/
# mount -t ufs -o ufstype=ufs2 /dev/sdb1 /mnt/usb/
PS: 或許很多人都已經知道如何去 mount,所以寫這篇的目的只是做個紀錄及供大家參考而已…
Development environment on Ubuntu11.04
apt-get install build-essential
apt-get install libsdl1.2-dev
apt-get install libsdl1.2-dev
訂閱:
文章 (Atom)