顯示具有 鳥哥 標籤的文章。 顯示所有文章
顯示具有 鳥哥 標籤的文章。 顯示所有文章

2009年10月27日

防火牆-iptables(1)

iptables相當複雜,所以這個文章我會慢慢寫
=============================
iptables不只能夠filter(過濾)packet的資料,甚至修改資料,也就是能夠做packet改寫達到NAT的功能
對於過濾的部分可以由一群群有次序的規則做判斷

Linux底下防火牆這功能幾乎由iptables一手包辦,其他儲存規則跟回覆規則的指令則是iptables-save跟iptables-restore
一開始如果系統沒有預設的規則,應該是等同全開、沒有限制,可借由
iptables -L -n

來觀察規則表,其中參數n的意思表示不要使用DNS反查,速度會快許多,結果如下圖表
iptables的語法大致上如同鳥哥網站提到的
iptables [-AI 鏈] [-io 網路介面] [-p 協定] \
> [-s 來源IP/網域] [-d 目標IP/網域] -j [ACCEPT|DROP]
參數:
-AI 鏈:針對某的鏈進行規則的 "插入" 或 "累加"
-A :新增加一條規則,該規則增加在原本規則的最後面。例如原本已經有四條規則,
使用 -A 就可以加上第五條規則!
-I :插入一條規則。如果沒有指定此規則的順序,預設是插入變成第一條規則。
例如原本有四條規則,使用 -I 則該規則變成第一條,而原本四條變成 2~5 號
鏈 :有 INPUT, OUTPUT, FORWARD 等,此鏈名稱又與 -io 有關,請看底下。

-io 網路介面:設定封包進出的介面規範
-i :封包所進入的那個網路介面,例如 eth0, lo 等介面。需與 INPUT 鏈配合;
-o :封包所傳出的那個網路介面,需與 OUTPUT 鏈配合;

-p 協定:設定此規則適用於哪種封包格式
主要的封包格式有: tcp, udp, icmp 及 all 。

-s 來源 IP/網域:設定此規則之封包的來源項目,可指定單純的 IP 或包括網域,例如:
IP  :192.168.0.100
網域:192.168.0.0/24, 192.168.0.0/255.255.255.0 均可。
若規範為『不許』時,則加上 ! 即可,例如:
-s ! 192.168.100.0/24 表示不許 192.168.100.0/24 之封包來源;

-d 目標 IP/網域:同 -s ,只不過這裡指的是目標的 IP 或網域。

-j :後面接動作,主要的動作有接受 (ACCEPT)、丟棄 (DROP) 及記錄 (LOG)
一般而言建議練習時先把INPUT的Policy設定為DROP,先全部擋住,在慢慢開啟允許進入的部分
iptables -P INPUT DROP

比方說允許SSH Server的port則開啟port # 22
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

不過我也很懷疑為何iptables不能進化一點,只有A跟I,只能把rule放在最前跟最後,何不妨讓人可以插入到某一條規則之後
使用如
iptables -A INPUT 2 -p tcp --dport 22 -j ACCEPT
就可以在規則2後加入一條規則

最後補上一條方便的規則,讓已經建立連線或者是由我們主機發出的封包引起對方回覆的封包進入,不然一些類似更新(apt/yum)可能無法正常運作
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

當然還可以擋掉一些討厭的網域區段或者mac address,這樣就完成了基本的INPUT Chain的部分
初學者可能常會想問,我知道service的名字或者套件的名字,但我怎麼知道他用的是tcp或者udp,還有走的port number呢?要用google去查嗎?其實大多知名的服務都不假外求,只要察看/etc/services這個檔案裡面就有了

以Fedora而言,完成之後記得把檔案寫到/etc/sysconfig/iptables這個檔案內,這樣下次開機他就會自動啟動了

2007年6月25日

鳥哥筆記-Lesson 8

Shell二部曲,先來看兩個有用的指令alias跟history,單純的執行alias將會列出你目前有重新修改過的指令,比方說,一般在ubuntu下面會看到alias ls='ls --color=auto',表示顯示檔案列表的時候順便顯示顏色,alias的好處就是可以把常用的參數變成預設,免得每次都要加上參數,真的是很要命的麻煩。history則會列出你執行過的指令,他前面會帶有一個數字,使用!number,!+數字,表示你要重新執行history中的哪一個指令

接下來看兩個有趣的檔案,分別是/etc/issue跟/etc/motd,前者紀錄目前你使用的OS資訊,比方說Ubuntu 7.04,後者則是使用者遠端登入的時候的顯示訊息;這兩個檔案有人非常詬病,因為/etc/motd跟/etc/issue常常有系統的種類資訊,他們認為這只是讓hack更加容易了解系統的資訊,所以一般建議是把/etc/motd修改(這部份對於多人使用環境,如學校開個機器讓學生熟悉linux環境,非常有用),不要洩漏自己系統的資訊

有很多個人的設定檔案,也就是當你進入shell的時候一定會執行的某些shell script,這些檔案實在太多太雜了,我一般都是使用.bashrc來建立我個人的路徑,例如JAVA_HOME等等

常態表示法(regular expression),這東西可是可以開一門課程的內容,我就不仔細介紹了,直接擷取鳥哥的一小段內容近來,實際上多用、多看、多想~就可以達到相當的程度;如果真的有興趣Oreilly有出版一本mastering regular expression的書本,況且這東西還因應不同的程式語言有不同的風貌哩(有些小差異,比如perl跟postfix的版本很像,但是有點小小的不一樣),以下是節錄的內容

內容
*萬用字元,代表 0 個或多個字元(或數字)
?萬用字元,代表『一定有』一個字母
#註解,這個最常被使用在 script 當中,視為說明!
\跳脫符號,將『特殊字元或萬用字元』還原成一般字元
|分隔兩個管線命令的界定;
;連續性命令的界定(注意!與管線命令並不相同)
~使用者的家目錄
$亦即是變數之前需要加的變數取代值
&將指令變成背景下工作
!邏輯運算意義上的『非』 not 的意思!
/路徑分隔的符號
>, >>輸出導向,分別是『取代』與『累加』
'單引號,不具有變數置換的功能
"具有變數置換的功能!
` `兩個『 ` 』中間為可以先執行的指令!
( )在中間為子 shell 的起始與結束
[ ]在中間為字元的組合
{ }在中間為命令區塊的組合!

如果我們要觀察一個目錄下所有文字檔,假設文字檔統統是以副檔名.txt出現的,我們就可以下達指令ls *.txt

接下來就是看到兩個shell重要的觀念redirect(重導)跟pipeline(管線),很多人使用的很習慣,也重來不細想其中的差別(本人就是一個XD);redirect就是把資料放到別的地方去,而pipeline則是將前者的輸出變成後者的輸入

2007年6月24日

鳥哥筆記-Lesson 7

shell首部曲,shell在linux中扮演重要的一環的程式,他是透過ls等等的指令集合跟kernel溝通,kernel在透過硬體去擷取必要的資訊,比方說ls,你給shell ls指令之後,他便會去呼叫kernel的一些function call,然後取得有關inode等等的資訊,那麼kernel如何知道硬碟上面inode等等的分佈狀況呢?當然就是透過一些驅動程式來達成囉

所以shell就是人們跟kernel之間的溝通橋樑

因為shell提供了很多的功能,他也就非常複雜,另外就是,很多人喜歡發展自己喜歡的shell,例如c shell就是熟悉c程式語言的人發展出來的,不過目前最風行的叫做bash shell

  • shell的功能有哪些呢?
  • 執行指令
  • 指令的補全(延長全人類生命)
  • alias(重新定義指令)
  • 控制process(程式)
  • shell scripts(一些方便的程式,如批次處理或者定時處理事項)

當我們打開一個terminal的時候,就會執行一個shell,他提供了許多指令,但shell並不是提供所有的有用程式(也就是說,有一部分事由其他程式呼叫來使用的使用),我們可以用type command來得知,例如說,如果打入type cd,他會告訴你這是一個shell內建的指令,但是type telinit,他會顯示出路徑,表示這並非一個內建的指令,如果他是alias(別名)他則會列出alias的指令

Shell的變數,是一串取代某個特殊符號的名稱,比方說,我們用$HOME取代原本的/home/your_name這樣的字串,這也啥好處呢?原本要打入cd /home/your_name才可以回到家目錄,就變成打入cd $HOME就可以了,這可以方便管理跟縮短我們打字的時間

那如何設定自己的變數呢,直接使用=就可以了,例如,myname="crazy_duke";一般如果沒有空白,可以直接打就好myname=crazy_duke,如果有空白,就加上雙引號;接著觀察可以使用echo $myname

`(quoter),一般位於鍵盤上面橫的數字鍵1旁邊,被他包圍的字串,會被視為指令,然後執行後回傳的結果在當作字串,例如cd /lib/modules/`uname -r`/kernel

set指令則可以列出所有的變數,env指令可以列出所有目前的環境變數,有幾個常用的shell環境變數
  • HOME:家目錄
  • SHELL:目前使用的Shell的名稱,如bash
  • PATH:可執行程式的目錄集合
  • LANG:使用的語言,如zh_TW.UTF-8
  • XMODIFIERS:一般是輸入法,如@im=SCIM
環境變數是shell在執行子程序(child process)的時候留下的變數,其他你設定的變數將會消失,這實在意味著某種不方便,比方說,一些你自己設定好的路徑都將消失,你要用到這些變數將是一個十分痛苦的事情;所以有個功能叫做export,可以export variable,就可以繼續在child process裡面使用

晚一點在談談array的宣告跟一些常用的指令,shell真是博大精深阿

2007年6月23日

鳥哥筆記-Lesson 6

今天看的是壓縮檔,老實說,我對於壓縮在command line下,只剩下了兩道指令
tar xzvf xxx.tar.gz
tar cvzf xxx.tar.gz directory

剩下的就交給file-roller,真的是頗為偷懶:P

其實不用我多說,很多人都知道壓縮是用來節省空間的,不過話說回來,大多數人也是只有知道,有壓縮過的檔案比較小;其實壓縮可以看成是把整齊的資料變成一些"縮寫",縮寫的資料"混亂"的程度比原始來的"亂",空間來的小;比方說aaaaaa把他寫成6a,本來只有一種字母,現在變成兩種了,所以壓縮過後比較小,但是比較亂

知道了這件事情之後,還要給些感覺,比方說文字算是最整齊的資料,圖片/mp3一般來說算是很亂的資料,怎麼說圖片比文字亂呢?其實這是不大對的說法,主要是因為圖片會使用類似jpg或者gif的格式,他們是另外一種的壓縮方式(針對圖片設計,而tar, gzip, winrar等式針對一般資料),壓縮過後的資料都會比較凌亂,不相信你可以把檔案連續壓縮,你會發現,容量差別會愈來愈小,所以我一般不大會壓縮圖片/mp3的資料,至於文件檔案,我就會壓縮

接下來就是linux的壓縮指令囉,其實Linux下面有一堆壓縮程式,比較常用的有鳥哥介紹到的幾種,其中compress應該是已經沒啥人在用了,重點是如何辨識他們的附檔案名稱跟語法

  • *.Z compress 程式壓縮的檔案;
  • *.bz2 bzip2 程式壓縮的檔案;
  • *.gz gzip 程式壓縮的檔案;
  • *.tar tar 程式打包的資料,並沒有壓縮過;
  • *.tar.gz tar 程式打包的檔案,其中並且經過 gzip 的壓縮

其中參數
c 將壓縮過程放置到standard output上,在tar表示create的意思
d 解壓縮
壓縮,其中bizp2跟gzip都可以選擇壓縮比例
compress/gzip your_file
bzip2 -z your_file
gzip/bzip -8 your_file

解壓縮
compress/gzip/bzip -d compressed_file


最後是tar,其實tar是一個打包程式,最主要的兩個指令如上,但是有兩個額外重要的參數,在備份的時候很重要-p(permission)跟-P(path),要加上這兩個參數,不然在解壓縮回來的時候,你會看到ls出來的檔案主要是依據使用者umask,在ubuntu的預設底下會是一片綠油油的(可執行檔的表示),你在檔案管理員下面double-click也會問你要不要執行,真的是很受不了

毅力

其實毅力對決大部分的人來說是需要的,就像是跑馬拉松一樣,尤其很多東西是累積起來的比如說:身材、體力、知識、語言能力;沒有一個是可以一天就弄起來的,我本來想要每天都寫上一篇有關我念鳥哥的心得,結果在算扣除忙碌的日子,還是有偷懶的時候,反省或許是多餘的,加油加油~先來上一篇吧~

2007年6月21日

鳥哥筆記-Lesson 5

看看Partition跟File system

要說到這個,當然就得由硬體說起,硬碟是我們最常用的儲存裝置之一,他主要由數個圓盤,上面有著磁性物質,可以紀錄0101的二進位資料,然後讀寫臂是一隻長長的類似竿子的東西 ,當他首掃描過圓盤的區域,利用磁性的變化,就可以知道資料囉

每個圓盤會由數個同心圓的軌道(track)構成,每一個圓形分成數個區塊(sector),然後圓盤疊成一個圓柱狀的架構,每個在相同垂直位置上面sector構成了磁柱(cylinder),當然每個sector就是可以存著資料囉

然而第零個sector許於特殊磁區,稱為MBR(master boot record)用以紀錄Partition table跟啟動檔案的相關位置,也就是grub程式的位置囉~Partition table就是用以紀錄虛擬的分區,如/或者/home是由實體/物理上面的哪個cylinder到哪個cylinder

所以現在知道partition table的重要性了嗎?分配完畢空間之後呢,因為因應讀寫的需求,很多的存取的方式就衍生出來了,這部份比較完整的敘述可以參考作業系統(OS)設計的書籍;舉例來說好了,一般的fat32本身並沒有像是linux權限的觀念,他是過去window$跟目前SD卡常用File system

我覺得比較難解釋的是,mount point的觀念,也就是說linux並沒有M$的啥C, D槽的觀念,新加入的設備都是屬於一個新的mount point,也就是一個入口的觀念,不管是你的數位相機或者是SD卡,都會對應到/dev/sda之類的一個點,然後用mount -f vfat /dev/sda /mnt/c_disk這樣子,當掛載(mount)起來的時候,你就是將系統邏輯上的mount point跟實體的/dev/sda(其實這也是一邏輯上得對應)對應起來,事實上現在linux已經很聰明了,不用如過去一般,自己用mount指令,linux會偵測PnP的裝置,自動幫你掛載,除非有某些特殊原因,你才需要自己手動掛載

ls -l /lib/modules/`uname -r`/kernel/fs,這個指令可以看到你目前的kernel支援多少種FS(file system)

磁碟有了分割(partition)跟FS(file system)之後就可以開始使用,但是這時候我們對磁碟的東西有多開始有了興趣,有兩個指令可以幫助我們,分別是df(disk free)跟du(disk used),他們可以列出目前有多少剩餘空間跟已經使用的空間,-h參數可以以比較人性化的方式顯示出來剩餘空間數,比如說多少MB,不然他會給你的是cylinder的個數,你還要自己換算,頗為累人,最後要加上要查詢的mount point,如df -h /mnt/cdrom

另外一個我常用的統計方式是,du -h --max-depth=1 /mnt/cdrom,其中--max-depth=1表示路徑深度為1的使用奘況,如果該file是個目錄的話,他就會加總列出底下子目錄跟檔案總共佔用的空間大小,而不會把所有的檔案跟目錄佔用的大小逐一列出

那麼要使用一個全新的設備(可能連FS都沒有的裝置,或者你想把他規劃成我們想要的FS格式),有幾個步驟
  1. 對磁碟進行分割,以建立可用的 partition (fdisk)
  2. 對該 partition 進行格式化( format ),以建立系統可用的 filesystem(mke2fs...)
  3. 若想要仔細一點,則可對剛剛建立好的 filesystem 進行檢驗(fsck)
  4. 在 Linux 系統上,需要建立掛載點 ( 亦即是目錄 ),並將他掛載上來(mount ...)
接下來先看看幾個好玩的指令,在M$底下有所為的捷徑,在linux底下當然也不能少,他們都是有如實體的檔案存在,不過linux更加的廣泛;ln(link)指令可以製作

先寫到這裡,有點亂,晚一點有空在繼續跟整理

2007年6月19日

鳥哥筆記-Lesson 4

linux檔案的權限大致上分成owner, group, others;也就是擁有人、群組跟其他人,擁有人就是檔案的所有權人,本身權力是最大的,再來就是跟你同一組的人(例如同學之類),再來就是其他人囉~

每個人對檔案都有對應的rwx,分別是r(read)、w(write)、x(eXecute)這三項,一般而言,你個人的權限設置都是owner>=group>=others,比較合乎常理,也就是說你不應該把你自己設定為不可更改檔案,但是卻把你的群組的人設定成可以(不合理並不表示不可以)

要更改檔案權限的指令是chmod(change mode),使用二進位模式r=4,w=2,x=1,然後數字加總起來就是一組權限,分別對應owner, group, others就要有三組號碼,比如說你要把檔案權限變更成自己可以rwx,但是其他人都不可以使用,就使用chmode 700,如果你希望你同組的人可以讀取該檔案,你就是使用chmode 740這樣

這時候你可能會有點疑問是,每次我都要組合一次嗎?當然可以使用另外一種好記憶一點的語法就是chmod u+rwx file,表示擁有者u/g/o/a分別對應owner/group/others/all(包含前三者)+表示給予權限、-是除去權限、=表示設定,rwx就是分別各種權限囉,file表示你要更改權限的檔案,上面的方式是說,幫使用者加上讀、寫、執行的能力

一個人可以自己設定分享檔案的權限,但是誰來管理使用者呢?答案是root,一個linux系統預定的最高權利人,這個帳號幾乎可以對於你系統做出任何事情,延續之前的想法,我們想要反過來設定檔案的所有人chown(change owner),想要改變一個人的群組chgrp(change group)

接著就是講到file,其實linux底下的file包含了很多種種類,有regular file(一般檔案)、目錄(directory)、連結(link)、設備(device)、資料接口(socket)、資料傳輸管線(pipeline);詳細內容就請參考鳥哥的網站囉

最後要寫的是FHS我這方面的資訊不足,如果我要寫,可能會把鳥哥的網站copy很多資料,所以請參考鳥哥的網站,印象中它就是為了稍微整理一下各家linux distribution目錄結構不一致的問題,免得大家在開發程式,還為了尋找library等等的問題傷透腦筋,這是一個很好的提案

還有最近火紅的ntfs-3g,如果是ubuntu的話,請參考我的blog,以我們知道的ntfs是封閉模式(不是open source也不是open standard),有開放的一部分似乎只有讀取,且效能不張,後來有人揣摩出ntfs開發出了ntfs-3g的driver,讓使用者可以直接用有效率的方式讀寫ntfs;另外就是VFS(virtual file system),有點類似分散是檔案管理,也就是在硬體中間插入了一層logic layer,讓使用者可以有彈性的增減硬碟等等的設備

2007年6月15日

鳥哥筆記-Lesson 3

由於已經晚上了,腦袋已經不靈光了,所以就進行一些簡單的任務吧,來看看一些常用的指令,本來應該先看一下檔案架構跟FHS的,不過就免了吧,免得腦死

絕對路徑跟相對路徑是很重要的觀念,如果有寫過網頁的人應該蠻清楚的,不再多說~鳥哥列出了一些常用的指令cd(改變目前所在位置), pwd(印出目前位置), mkdir(建立目錄), rmdir(刪除目錄),接著就是一些比較少用的方式囉

mkdir -p dir1/dir2/dir3 (對於不存在的目錄/路徑順便建立)
rmdir -p dir1/dir2/dir3 (刪除一連串的目錄)
mkdir -m 744 dir1 (其中m表示設定權限)

PATH變數說使用的指令/執行檔所在目錄,一般你下指令,會先到這些目錄收尋,如果match到的指令就套用;使用echo $PATH來觀察,增加可以使用
export PATH=$PATH:/home/user1/bin
這樣子不同的路徑之間用分開

檔案目錄操作指令常見的有cp(copy), rm(remove), mv(move),其中比較值得一提的是mv又可以作為重新命名之用,一般使用者如果直接從M$對應過來,可能比較適應,這些指令的常用的格式都是cp/rm/mv source_file destination_file

檢視檔案的內容,或許你會覺得linux/unix之類怎麼那麼無聊,發展出這些簡單的指令,然後好像功能又是重複,或者很無用呢?

其實是有些歷史因素,比如說,你由遠端登入觀看log檔案,有時候可能會有幾百MB那麼那,你不可能一頁一頁看,而且通常重要的事情會發生在尾端,你就需要從後面看(類似tail指令)

有些則是慢慢可以從前面找,只要看過就好,就可以用cat,但是如果說要比較,要上一頁/下一頁的跑就用less,有時候如果你想要從中間抓出特定給行,這時候行號就很重要啦,如nl之類的指令(大部分會配合pipeline使用)

接著你會覺得很無聊的就是,為何還有些只會抓幾行這麼龜毛的功能都出來了?因為過去很久以前阿,記憶體可是很貴的,網路頻寬也是很珍貴,能省則省(MIS多死幾個腦細胞沒關係XD)

功能很類似的指令,其實是消耗記憶體不一樣(歷史發展理由)或者可以使用pipeline來做出非常彈性的變化
  • cat 由第一行開始顯示檔案內容
  • tac 從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫!
  • nl 顯示的時候,順道輸出行號!
  • more 一頁一頁的顯示檔案內容
  • less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!
  • head 只看頭幾行
  • tail 只看尾巴幾行
在來看一個touch指令,看起來非常無用阿,只是更改一些狀態跟時間,真的是好像非常無聊;不過它也有實用的地方喔!

如果你開發過程式,你就大概隱約知道makefile的功能,在編譯C/C++程式的時候,主要根據C file(.c/.C)的更新日期,make程式來自動計算要不要重新編譯,因為數十年前來說,CPU資源是很珍貴的~編譯過的片段程式,沒有更新當然不用在編譯一次,可是有時候你只有改變了header file(.h),這樣make程式不會發覺,會造成錯誤喔,你也不想再用vi xxx.c然後再把它存檔,只要單純的touch xxx.c就可以了,重新make就可以了

下一次再來看看檔案權限的問題跟其他~

鳥哥筆記-Lesson 2

對於開機程序,鳥哥好像一開始比較少著墨?或許是寫在後面吧,anyway,我依照我手邊的資訊來補足開機的部份

開機一開始,當然是開機程序的天下,grub請參考之前的blog,grub有一個重大的任務就是找到kernel,如果有將/boot分割區分割出來,他就是放在boot上面,當然kernel不會太大,所以接下來就是開機的步驟囉
  1. grub首先完成開機的部份載入kernel到記憶體中執行
  2. kernel初始話device(為了掛載/)並且載入drivers
  3. kernel掛載/
  4. kernel啟動init程序(它是特別的程序,主宰眾多的process)
  5. init執行對應的run level
  6. init執行完成step 5之後,啟動登入程序,允許你登入
run level一般而言是一堆script集合,放在/etc/rc[1-6].c的目錄中,主要是啟動各種service主要的地方,比如說apache或者mysql之類的,他們一般都是daemon(有人說是惡魔,也有人說是守護神,性質類似常駐程式);目錄的數字表示run level,不同的run level表示不同的應用,比方說level 5是桌面程式,level 3是命令模式(開機完成並不會起動gdm等的登入畫面);因為不同的應用,所以要啟動的程式也不一樣,可以使用telinit 5或者telinit 3的方式來切換模式。

在各個目錄之中會看到檔名為S11klogdS表示start,後面的數字表示啟動的先後klogd表示它服務的名字,他是紀錄系統log的daemon,你會發現他是一個link

其實大部份的script的位置放在/etc/init.d/裡面,因為不同的run level可能會擁有共用的啟動程式,所以用作為link的方式最方便管理

2007年6月14日

鳥哥筆記-Lesson 1

要安裝Linux首先要知道自己的目的,以我個人來說就是當一些簡單的server,以充作開發環境,順便當作Desktop,我並沒有太多多餘的電腦可以拿來架設server,Distribution挑上Ubuntu,他是Debian base的系統,對於他的套件維護系統,我向來是相當讚賞(以前Linux安裝軟體,可是會被套件的相依性煩死的~呵呵),硬體就不用太計較,一般的桌上型電腦都可以吃阿

要安裝,首先我覺得最難的部份就是硬碟分割囉,在分割之前,要先認識一下各個硬體在Linux底下的代號

裝置代號
IDE硬碟
/dev/hd[a-d](大概是因為IDE一般只有連接四個裝置吧)
SCSI設備/dev/sd[a-p](SATA硬碟也算是這一種)
USB設備
/dev/sd[a-p](同上)
CDROM/dev/cdrom
軟碟機/dev/fd[0-1](應該比較少人在用了吧)
印表機/dev/lp[0-2]
滑鼠
/dev/mouse
磁帶機/dev/ht0(IDE介面)
/dev/st0(SCSI介面)

再來就是建立分割區囉,如何使用一些分割工具,就請見鳥哥的網站說明,如果是使用Ubuntu內建的分割程式也方便,重要是要如何分割囉,一般最少要有/(名稱是root)跟swap兩種分割,swap就是虛擬記憶體的空間,因為一般來說,只要記憶體不足,你就需要使用到它,另外/就表示是OS放置的地方囉~
如果以入門的人,當然只要這樣就可以,可是如果說要當Server之類,就要有別的切割方式,狀況有點類似在安裝M$ OS,這種安裝方式,就是整體只有一個C槽,程式跟資料全部放在一起,哪天OS毀了(中毒或者其他),你要從新安裝,那就辛苦囉,要整個format,在那之前還要備份哩,如果分成C,D兩顆,把資料放在D,程式跟OS放在C那就好一點,重新安裝完畢,對D做掃毒的動作就好,不用重新額外被分,當然Linux本來就有這樣的設計

我們來看一些常用的分割區
/(一定要有,就是放OS主要的地方)
/boot(放置kernel image的地方,在某些原因的時候,你必須要有這個,空間不用太大1G就很多了)
/var(如果安裝server,這個就很重要囉,你每天紀錄的log跟一些mail預設是放在這裡)
/home(使用者的空間,一般你個人的文件啦、網頁、照片都放這裡,所以這會是很大的一塊)
swap(一般要求是記憶體的兩倍,實際上,應該2G就很多了,如果特殊用途就另外)

如果只有/,那就是所有的/home,/var,/boot都是分享/的空間,一方面效能比較不好,另外一方面資料會混雜,效能是因為分割的話,讀寫臂可以快速移動到該分割區,資料也比較集中,資料混雜的問題如前面說的

基本上如鳥哥所說的,要注意一點就是,Linux只有允許四個Primary,也就是四個槽,你要額外在加上去的話,要先劃分extended在分成數個logic,也就是一般只會達到三個Primary一個extended,一個extended可以分成數個logic,如果把Primary都佔用光光,那麼以後要新增硬碟會有些麻煩喔~~另外可以用fdisk來觀看partition table

至於接下來安裝的一些選項就掠過不說(抱歉,這是我個人筆記,所以我只是針對我比較覺得要注意或者值得留意的記下,像是FS的問題我就不探討,請上鳥哥網站去看),最後所有distribution幾乎會安裝多重開機程式,不管是lilo或者grub也好,都是很方便的

下一個課程再來探討開機程序的過程

鳥哥筆記-Lesson 0

接觸Linux已經有一段時間了,Linux相關的知識也還不足夠,稱不上是個MIS,當然得好好的惡補一番囉!,網路上資源不少,高手也多,但是唯獨鳥哥真的稱得上"誨人不倦"阿,當然study-area也不例外

現在已經很多網站轉成討論版模式,這是我比較不喜歡的,因為說一句實話,那種網站的內容填充比較雜亂,也很難維護,不過內容由於大眾提供,擴張相當快速,鳥哥的私房菜算是中流砥柱,屹立不搖,我比較喜歡有主軸的方式

鳥哥另外令人佩服的一點就是,他不只公開的它內容,連帶他的書本也一樣暢銷,這是少數公開內容之後,書本又賣得很好的作者,讓我相當佩服

當然在決定補強Linux知識的時候,我決定以鳥哥網站的內容為基礎,做我自己內容的筆記,這只是我個人的筆記,所以請尊重鳥哥,喜歡他的內容的話,請上他的網站,或者買他的書籍,謝謝