Wednesday, August 06, 2008

為什麼是finnix?不是slax or other else.

帶著鈦項圈的貓一臉狐疑的看著我,似乎在問我到底找到最佳的解決問題的方法了沒有。

解決問題,很恐怖!每次大家都要我來解決問題,那誰來解決我的問題?
我只好請大家來幫我解決問題。其實一些問題解決不難,難的其實都在細節,好比最近跟阿鼎再處理自動加液機的問題,整個構想其實很簡單,電路設計與程式我大概一個小時就銲好兼完成MCU的程式設計,但是我知道真正的問題,是在電磁閥的耐酸鹼的問題。在外觀來看,控制電路與物理現象好像是整個問題的核心,但其實沒有真正動手做之前,沒有人會真正的正視這個問題,我只問賣我電池閥的,這耐酸吧;應該吧、、、、

所以,真正的做下去才可以知道真正的問題點在哪兒。那finnix呢?這是什麼?為什麼要用這個?我承認這個distro還不是最最最符合我需求的distro。因為他少了gcc的支援,擴充性就有限,但是、、、、就一般解決簡單的問題finnix就夠了。記得我曾經說過finnix可以讓你找回操作電腦的樂趣吧(l)

在下就稍微的擷取一下該網站的文字(點logo就可以進入了)

Finnix is a self-contained, bootable Linux CD distribution ("LiveCD") for system administrators, based on Debian testing. You can mount and manipulate hard drives and partitions, monitor networks, rebuild boot records, install other operating systems, and much more. Finnix includes the latest technology for system administrators, with Linux kernel 2.6, LVM2, encrypted partitions, etc. And above all, Finnix is small; currently the entire distribution is over 300MiB, but is dynamically compressed into a bootable image of about 100MiB1. Finnix is not intended for the average desktop user, and does not include any desktops, productivity tools, or sound support, in order to keep distribution size low.

上面呢,簡易的說,這套distro(distribution)是個LiveCD 也就是說,可以用Finnix來開機(還是要講,有些newbie會問),最主要是用來處理系統上的問題,比如說監視網路,重建系統,管理磁碟,或是安裝其他的作業系統等等一堆吧啦吧啦。事實上,我只要教大家如何使用上面的bash來解決問題。(冠公司同仁必看)一開始,當然是去finnix網站上去下載finnix的iso囉,至於電腦,一般最爛等級準備要拿去回收的機器,跑起來絕對都還是嚇嚇叫,因為,該distro是完全的文字介面,也就是terminal only,滑鼠?!我剛開始用電腦的時候都不知道滑鼠拿來怎麼用,畫圖嗎?別懷疑,滑鼠好像也不需要了。倘若你認為電腦一定要漂亮精美的圖形介面,不管是vista, xp 還是Linux的 compiz-fusion那千萬別繼續看下去,因為他的畫面就像、、

 
這就是李愷兒小時候電腦的模樣(類似),李愷兒第一台電腦286單色螢幕PC喇叭無硬碟兩個磁碟機,但是那時候的電腦真的是很好玩。dos 3.3是當時的作業系統,這種畫面我想當時的我看到可能要流淚了(因為這畫面竟然還是彩色的)
使用Finnix開機之後會出現root@tty1:~#的提示符號,而我們可以利用Alt+F2來跳到tty2以此類推可以跳到tty4,四個終端機可供使用,這個很重要,為什麼很重要,現在講太早。就基本的linux的基本到不能基本的指令講一下。用以對照以前的DOS的方式來簡單的介紹快速上手。
事實上,還有一個運行在windows下的GNU Bash,就是cygwin

不需要在真正的Linux就可以執行linux程式/軟體。但是重點是,原本在windows下,可以利用cygwin dll compiler一個linux source,擁有完整的bash與gcc呢。重點是有了cygwin就可以使用bash了。

DOS指令 linux指令 敘述
dir ls 看該目錄下有哪些檔案
cd cd 切換目錄
del rm 移除檔案
copy cp 複製檔案
md(mkdir) mkdir 建立目錄
rd(rmdir) rmdir 移除目錄

至於要怎麼用,網路上有很多資料,因為這要講要耗掉一些篇幅,再加上李愷兒生性懶散,有概念即可,說不定你就是歪冠的員工,連網路都懶得查,那真的是很抱歉了。

那、、、接下來呢?開機完畢我們是處在什麼樣的環境中呢?簡單的說,我們是在一個shell中,在finnix中,預設的為bash,在他的package list可以看到。而整個系統的架構,最內層的為硬體Hardware,然後核心kernel,接著就是與人們溝通的shell。而我們就是使用最簡單的Shell Script來幫我們解決問題。Shell Script就如同以前DOS的批次檔(.bat),只不過功能更多更強大,且操作容易,其實不需要強大的電腦語言基礎做後盾,用最簡單的方式來達到解決問題的目的。

好的,我們知道這是什麼,我們以實例來操作。
當然,第一個怎麼顯示"Y-guan are junks"的字樣呢?

$ echo "Y-guan are junks"
Y-guan are junks

※其實跟dos的echo還蠻像的,都是可以顯示出訊息,而上例的$為bash的提示符號,所以我們將要顯示的文字放在雙引號內,就會顯示出來了

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/cygdrive/c/PROGRA~1/Borland/CBUILD~
1/Bin:/cygdrive/c/PROGRA~1/Borland/CBUILD~1/Projects/Bpl:/cygdrive/c/WinAVR-2008
0610/bin:/cygdrive/c/WinAVR-20080610/utils/bin:/cygdrive/c/WINDOWS/system32:/cyg
drive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/Comm
on Files/Ulead Systems/MPEG

$ echo $HOME
/home/Administrator

※如果要顯示變數,要在變數前加上$的符號,而PATH是環境變數,而HOME也是

$ echo "$HOME"
/home/Administrator

$ echo '$HOME'
$HOME

※關於 " 和 ' 的區別可由上面例子看的出來,一個 " 會保留變數的內容,而 ' 則是把所有東西當成字元來看。

$ date
Sat Aug  9 01:01:35     2008

$ echo "Today is "`date`
Today is Sat Aug 9 01:01:37 2008

※還有一種引號叫quote ` 就是數字1的左邊的那個符號,不是單引號,由上例看來,我們從指令date可以看到日期時間,而我們要組合到我們的echo裡面,就會用到quote,這很好用的,再看下例

$ datetoday=`date`

$ echo $datetoday
Sat Aug 9 01:05:20 2008

$ datetoday="Today is $datetoday"

$ echo $datetoday
Today is Sat Aug 9 01:05:20 2008

※將quote的值,套用回變數本身,然後變數再做改變,然後輸出。

$ mybirthday=671123

$ unset mybirthday

$ echo $mybirthday

※結果竟然不顯示,是因為有unset的指令,將mybirthday這個變數給取消了

所以,簡單的echo與變數、、、還有一些詭異引號的用法,應該有點初步瞭解了吧,而bash當然現在還不夠,有空的時候在寫、、、、

No comments: