- 當(dāng)Windows系統(tǒng)出現(xiàn)問(wèn)題的時(shí)候,,可能需要重裝系統(tǒng),,這個(gè)時(shí)候我們往往會(huì)使用系統(tǒng)盤(pán)將系統(tǒng)重新安裝在C盤(pán)上,,其他盤(pán)上的文件都沒(méi)有受到重裝系統(tǒng)的影響,這就是分區(qū)的好處之一,。同樣,,在Linux中也需要分區(qū),但是Linux中對(duì)于分區(qū)的表示方式與Windows并不一樣,。下面將以我的電腦為例,,講述Liunx的分區(qū)方法并且通過(guò)講述Linux的啟動(dòng)過(guò)程來(lái)了解Linux系統(tǒng)和掛載。(本文章適合初學(xué)Linux的同學(xué)學(xué)習(xí))
1.基本概念
1.1.分區(qū)的概念
分區(qū)從實(shí)質(zhì)上說(shuō)就是對(duì)硬盤(pán)的一種格式化,。當(dāng)我們創(chuàng)建分區(qū)時(shí),就已經(jīng)設(shè)置好了硬盤(pán)的各項(xiàng)物理參數(shù),,指定了硬盤(pán)主引導(dǎo)記錄和引導(dǎo)記錄備份的存放位置,。而對(duì)于文件系統(tǒng)以及其他操作系統(tǒng)管理硬盤(pán)所需要的信息則是通過(guò)之后的高級(jí)格式化。安裝操作系統(tǒng)和軟件之前,,首先需要對(duì)硬盤(pán)進(jìn)行分區(qū)和格式化,,然后才能使用硬盤(pán)保存各種信息。各個(gè)分區(qū)之間是相對(duì)獨(dú)立的,,你在一個(gè)分區(qū)上的操作不會(huì)影響到另一個(gè)分區(qū),。
之前我們都會(huì)認(rèn)為C盤(pán)就是第一分區(qū),D盤(pán)就是第二分區(qū),。其實(shí)這種看法是不恰當(dāng)?shù)?,C盤(pán),D盤(pán)等都是盤(pán)符號(hào),,是Windows賦予的名稱,。在沒(méi)有啟動(dòng)Windows之前,它們就是一個(gè)個(gè)分區(qū),,而不是具體的盤(pán)符,。這種盤(pán)符的概念,是Windows“內(nèi)在”的,,也就是說(shuō)就算是硬盤(pán)上沒(méi)有安裝Windows系統(tǒng),,硬盤(pán)上的分區(qū)還是存在的。所以可以這樣說(shuō):盤(pán)符-是軟件級(jí)的概念,;分區(qū)-是硬件級(jí)的概念,。
1.2.Linux文件系統(tǒng)的組織方式
Linux文件系統(tǒng)的組織方式稱做文件系統(tǒng)分層標(biāo)準(zhǔn),即采用層次式的樹(shù)狀目錄結(jié)構(gòu),。在此結(jié)構(gòu)的最上層是根目錄“/”,,然后在此根目錄下是其他的目錄和子目錄。Linux和Windows一樣,,采用“路徑”來(lái)表示文件或目錄在文件系統(tǒng)中所處的層次,。路徑由以“/”為分隔符的多個(gè)目錄名字符串組成,,分成絕對(duì)路徑和相對(duì)路徑。Linux中所謂絕對(duì)路徑是指由根目錄“/”為起點(diǎn)來(lái)表示系統(tǒng)中的某個(gè)文件或者目錄的位置的方法,;相對(duì)路徑則是以當(dāng)前目錄為起點(diǎn),,表示系統(tǒng)中某個(gè)文件或者目錄在文件系統(tǒng)中的位置的方法。例如(以我電腦為例):在終端輸入pwd(Linux中的顯示當(dāng)前所在位置的命令),,終端顯示了“/home/csc”,,這就是絕對(duì)路徑。假如csc文件夾下有一個(gè)test文件夾,,在終端輸入"cdtest"(或者cd./test),,test或者./test就是相對(duì)于csc文件夾的相對(duì)路徑,其中“./”表示當(dāng)前目錄,,通??梢允÷浴O旅娼榻B一下Linux中部分目錄及其功能說(shuō)明(以便后面講述Linux分區(qū)和啟動(dòng)過(guò)程)
/:Linux文件系統(tǒng)的最上層目錄,,其他所有目錄均是該目錄的子目錄
/bin:Binary的縮寫(xiě),,存放用戶的可執(zhí)行程序,例如cp和mv等,;也存放Shell,,如bash和csh。不應(yīng)把該目錄放到一個(gè)單獨(dú)的分區(qū)中,,否則LinuxRescue模式無(wú)法使用這些命令,。
/boot:內(nèi)核就放在這里;操作系統(tǒng)啟動(dòng)時(shí)所需的文件,,包括vmlinuz和initrd.img等,,這些文件若損壞常會(huì)導(dǎo)致系統(tǒng)無(wú)法正常啟動(dòng),因此最好不要做任意改動(dòng)
/dev:設(shè)備文件目錄,,例如/dev/sda表示第一塊SCSI設(shè)備,,/dev/hda表示第一塊IDE設(shè)備(后面會(huì)講到Linux中對(duì)SCSI和IDE接口硬盤(pán)的表示方法)
/home:普通用戶的主目錄或FTP站點(diǎn)目錄,一般存放在/home目錄下,。(想要了解Linux中其他默認(rèn)目錄中的功能,,請(qǐng)查看:http://www./read-htm-tid-69582.html)
1.3.Linux中的掛載點(diǎn)
Windows系統(tǒng)下的分區(qū)很明了,一個(gè)分區(qū)就是一個(gè)盤(pán)符,。如果有可以兼容的文件系統(tǒng),,系統(tǒng)也可以讀寫(xiě)那個(gè)分區(qū)。如果是不兼容的文件系統(tǒng),,Windows就會(huì)忽略這個(gè)分區(qū),。
Linux就是把所有的一切都放到一顆“大樹(shù)”下。如果你有另外的分區(qū)或者硬盤(pán),,它們就會(huì)“掛載”到枝干的子目錄中,,例如/media或者/mnt目錄,,這個(gè)子目錄就是所謂的掛載點(diǎn),你可以將分區(qū)掛載到任意的目錄中,。
2.分區(qū)的建議
分區(qū)關(guān)系到一個(gè)系統(tǒng)的安全性和健壯性,,當(dāng)系統(tǒng)出現(xiàn)問(wèn)題的時(shí)候,我們應(yīng)該以最小的改動(dòng)來(lái)完成系統(tǒng)的修復(fù),,這樣就能減少不必要的損失,。
在安裝Linux系統(tǒng)時(shí)候,我將硬盤(pán)分為四個(gè)分區(qū):第一個(gè)分區(qū)掛載在“/”目錄下,,第二個(gè)分區(qū)掛載在“/boot”下,第三個(gè)分區(qū)掛載在“/home”下,,第四個(gè)分區(qū)是交換分區(qū)(Swap分區(qū))
理由:
(1)一個(gè)根分區(qū)。根分區(qū)是掛載在“/”目錄上的,。用來(lái)存放系統(tǒng)文件,。
(2)“/home”分區(qū):這是用戶的home目錄所在地;它的大小取決于你的Linux系統(tǒng)有多少用戶,以及這些用戶將存放多少數(shù)據(jù),。當(dāng)你系統(tǒng)受損需要重新安裝的時(shí)候,不會(huì)影響到“/home”分區(qū)下的文件,。
(3)“/boot”分區(qū):包含了操作系統(tǒng)的內(nèi)核和在啟動(dòng)系統(tǒng)過(guò)程中所要用到的文件,。獨(dú)立掛載/boot的好處是可以讓多個(gè)Linux共享一個(gè)/boot?!?boot”目錄的大小通常都很小,,20MB左右??梢愿鶕?jù)自己的硬盤(pán)空間分配一塊給/boot分區(qū),,但是不要太大,否則是種浪費(fèi),。
(4)一個(gè)交換(swap)分區(qū),。交換分區(qū)用來(lái)支持虛擬內(nèi)存。如果你的計(jì)算機(jī)內(nèi)存小于16MB,,就必須創(chuàng)建交換分區(qū),。即使你有更多的內(nèi)存,仍然推薦使用交換分區(qū),。物理內(nèi)存小于或等于512MB,,建議分配實(shí)際物理內(nèi)存容量2倍大小的swap;物理內(nèi)存大于512MB,,建議分配與物理內(nèi)存等容量的swap,。
3.Linux的啟動(dòng)過(guò)程(以我的電腦為例)
系統(tǒng)的啟動(dòng)是從讀取grub.cfg開(kāi)始的(grub一個(gè)來(lái)自GNU項(xiàng)目的多操作系統(tǒng)啟動(dòng)程序。GRUB是多啟動(dòng)規(guī)范的實(shí)現(xiàn),,它允許用戶可以在計(jì)算機(jī)內(nèi)同時(shí)擁有多個(gè)操作系統(tǒng),,并在計(jì)算機(jī)啟動(dòng)時(shí)選擇希望運(yùn)行的操作系統(tǒng),。GRUB可用于選擇操作系統(tǒng)分區(qū)上的不同內(nèi)核,也可用于向這些內(nèi)核傳遞啟動(dòng)參數(shù)),。grub.cfg文件的位置是在/boot/grub目錄下,。(如果電腦上安裝的是雙系統(tǒng)的話,也可以通過(guò)修改grub文件,,來(lái)改變系統(tǒng)的啟動(dòng)順序,,等待時(shí)間等。)將文件打開(kāi)后文件中有這么一段:
menuentry'Ubuntu,,Linux2.6.32-33-generic' --class ubuntu --class gnu-linux --class gnu--class os {
recordfail
insmodext2
setroot='(hd0,8)'
search--no-floppy --fs-uuid --set 089b3e37-bf9b-4811-94f8-b2f73fc313f6
linux /vmlinuz-2.6.32-33-genericroot=UUID=abdb3fa2-45cd-447d-8cc5-83cf326195bd ro quiet splash
initrd /initrd.img-2.6.32-33-generic
}
這是一個(gè)標(biāo)準(zhǔn)的ubuntu引導(dǎo)菜單,,menuentry那一行顯示了該項(xiàng)目的名稱,insmod是Linux下的指令,,是加載模塊的意思,。這里涉及到了分區(qū)的命名,下面就來(lái)了解一下:
Linux系統(tǒng)中存儲(chǔ)設(shè)備的兩種表示方法
(1)對(duì)于IDE接口的硬盤(pán)的兩種表示方法
IDE接口中的整塊硬盤(pán)在Linux系統(tǒng)中表示為/dev/hd[a-z],,比如/dev/hda,,/dev/hdb... ... 以此類推。另一種表示方法是hd[0-n],,其中n是一個(gè)正整數(shù),,比如hd0,hd1,hd2... hdn ;如果機(jī)器中只有一塊硬盤(pán),,無(wú)論(fdisk-l命令可查看硬盤(pán)及硬盤(pán)上的分區(qū)情況)列出的是/dev/hda還是/dev/hdb,,都是hd0;如果機(jī)器中存在兩個(gè)或兩個(gè)以上的硬盤(pán),第一個(gè)硬盤(pán)/dev/hda另一種方法表示為hd0,第二個(gè)硬盤(pán)/dev/hdb,,另一種表示是hd1,。
(2)IDE接口硬盤(pán)分區(qū)的兩種表示方法
硬盤(pán)分區(qū)的第一種表示方法/dev/hd[a-z]X,X是一個(gè)從1開(kāi)始的正整數(shù),;比如/dev/hda1,,/dev/hda2.....,如果X的值是1到4,表示硬盤(pán)的主分區(qū)(包含擴(kuò)展分區(qū)),;邏輯分區(qū)從是從5開(kāi)始的,,比如/dev/hda5肯定是邏輯分區(qū)。
硬盤(pán)分區(qū)的第二種表示方法(hd[0-n],y),,前面已經(jīng)說(shuō)過(guò)了整塊硬盤(pán)也有兩種表示方法,,一種是/dev/hd[a-z]的,另一種方法是hd[0-n],;一個(gè)硬盤(pán)分區(qū)首先要確認(rèn)在哪個(gè)硬盤(pán),,然后再確認(rèn)它所在的位置;所以我們要知道一個(gè)硬盤(pán)分區(qū),除了知道/dev/hd[a-z]以外,,還要知道他在哪個(gè)位置,,確認(rèn)了分區(qū)在/dev/hd[a-z]后,還要通過(guò)X來(lái)確認(rèn)具體位置,;y的值是/dev/hd[a-z]X中的X-1,。
(3)關(guān)于SATA和SCSI接口的硬盤(pán)的兩種表示方法
方法和IDE接口的硬盤(pán)相同,只是把hd換成sd,。
下面通過(guò)實(shí)例來(lái)認(rèn)識(shí)一下:在終端下輸入fdisk-l命令(要在超級(jí)用戶下查看):
Disk/dev/sda: 500.1 GB, 500107862016 bytes
255heads, 63 sectors/track, 60801 cylinders
Units= cylinders of 16065 * 512 = 8225280 bytes
Sectorsize (logical/physical): 512 bytes / 512 bytes
I/Osize (minimum/optimal): 512 bytes / 512 bytes
Diskidentifier: 0x48000000
DeviceBoot Start End Blocks Id System
/dev/sda1 * 1 13054 104856223+ 7 HPFS/NTFS
/dev/sda2 13055 60802 383529250+ f W95 Ext'd (LBA)
/dev/sda5 13055 32635 157284351 7 HPFS/NTFS
/dev/sda6 32636 52216 157284351 7 HPFS/NTFS
/dev/sda7 55329 55578 1998848 82 Linux swap / Solaris
/dev/sda8 55578 55640 498688 83 Linux
/dev/sda9 55640 60802 41459712 83 Linux
/dev/sda10 52217 55328 24996864 83 Linux
文件中的第一行:Disk/dev/sda: 500.1 GB, 500107862016 bytes,,這個(gè)就是表示機(jī)器中只有一個(gè)硬盤(pán)設(shè)備/dev/sda,大小為500G,;下面的就是硬盤(pán)的分區(qū),,每個(gè)分區(qū)都有詳細(xì)的信息。
講到這里,,我們都會(huì)有點(diǎn)奇怪,,既然上面說(shuō)了IDE接口是hd表示,SATA和SCSI接口都是sd表示,,那為什么grub文件有一行“setroot='(hd0,8)'”代碼呢,?不應(yīng)該是“sd”嗎?通過(guò)在網(wǎng)上查找的相關(guān)資料,,對(duì)于grub文件來(lái)說(shuō),,硬盤(pán)都是用hd表示的,磁盤(pán)號(hào)是從0開(kāi)始計(jì)算的,,分區(qū)號(hào)是則是從1開(kāi)始計(jì)算的(grub2是從1開(kāi)始計(jì)算的,,grub1是從0開(kāi)始計(jì)算的),,而對(duì)于Linux內(nèi)核來(lái)說(shuō),,IDE硬盤(pán)是hd表示的,SATA硬盤(pán)是用sd表示的,,磁盤(pán)序號(hào)從a開(kāi)始計(jì)算的,,分區(qū)號(hào)是從1開(kāi)始計(jì)算的。我電腦中的Linux系統(tǒng)是Ubuntu10.04LTS版本,,grub文件是grub2版本,。所以grub文件中的(hd0,8)代表的是第一塊硬盤(pán)上的第八個(gè)分區(qū)即sda8,。
繼續(xù)講解上面的grub.cfg文件,,search指令是尋找內(nèi)核的意思,這就真正進(jìn)入了Linux系統(tǒng)的引導(dǎo)過(guò)程,,內(nèi)核的存放位置是在/boot目錄下,。下面一行中的linux是一個(gè)指令,它告訴grub程序使用后面給出的內(nèi)核,于是這個(gè)名為“vmlinuz-2.6.32-33-generic”的內(nèi)核就被載入內(nèi)存,,并讀取“root=UUID=abdb3fa2-45cd-447d-8cc5-83cf326195bd”這個(gè)分區(qū)的一些必要的文件,。上段代碼中的最后一行的命令的意思是:用名為“/initrd.img-2.6.32-33-generic”的文件先在內(nèi)存中構(gòu)造一個(gè)“虛擬”的根文件系統(tǒng),以便于內(nèi)核檢測(cè)完硬件信息后載入必需的模塊等等,。grub的工作到此結(jié)束,,下面將由Linux內(nèi)核接管電腦的控制權(quán),開(kāi)始初始化階段,。到目前為止還沒(méi)有掛載根分區(qū),。然后Linux系統(tǒng)會(huì)讀取一個(gè)名為fstab的文件,并按照其中的指令逐行的執(zhí)行,,下面來(lái)看一下fstab文件(/etc/fstab),。以下是我的電腦中的fstab文件:
#/etc/fstab: static file system information.
#
#Use 'blkid -o value -s UUID' to print the universally uniqueidentifier
#for a device; this may be used with UUID= as a more robust way toname
#devices that works even if disks are added and removed. See fstab(5).
#
#<file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
#/ was on /dev/sda10 during installation
UUID=abdb3fa2-45cd-447d-8cc5-83cf326195bd/ ext4 errors=remount-ro 0 1
#/boot was on /dev/sda8 during installation
UUID=089b3e37-bf9b-4811-94f8-b2f73fc313f6/boot ext4 defaults 0 2
#/home was on /dev/sda9 during installation
UUID=11ec48a8-5ca9-4e39-9bff-fd56b811d58e/home ext4 defaults 0 2
#swap was on /dev/sda7 during installation
UUID=2c80ec4a-769c-40c5-8d87-39a2332661cfnone swap sw 0 0
#號(hào)開(kāi)頭的行是注釋,是說(shuō)明性的文字,,在執(zhí)行指令的時(shí)候并不會(huì)執(zhí)行它,。
linux掛載分區(qū)的時(shí)候?qū)⒆陨隙拢樞驁?zhí)行,。第一個(gè)起作用的行是proc,,關(guān)于proc的介紹請(qǐng)查看http://www./os/201202/119553.html
首先要將sda10掛載到”/”下,這就是linux最先被掛載的根分區(qū),;然后繼續(xù)把sda8掛載到“/boot”,,sda9掛載到“/home”下,sda7“掛載”到交換分區(qū),,這個(gè)交換分區(qū)有點(diǎn)特殊,,因?yàn)樗](méi)有被“附屬”于/,而是獨(dú)立使用的,。
到此為止,,Linux中系統(tǒng)用到的分區(qū)都已經(jīng)掛載完畢??梢允褂孟到y(tǒng)了,。
4.手動(dòng)掛載分區(qū)
有人會(huì)問(wèn),當(dāng)我需要使用Windows下的分區(qū)時(shí)怎么辦,?能不能在Linux下掛載Windows分區(qū)呢,?答案是肯定的,如果你使用的是桌面版的Ubuntu,,并且是雙系統(tǒng),,那么點(diǎn)擊Linux中的“位置”->"計(jì)算機(jī)",里面就列出了Windows中的分區(qū),,點(diǎn)擊右鍵,,選擇“掛載”就可以了,默認(rèn)是掛載在media目錄下,我們可以通過(guò)命令設(shè)定想要掛載的分區(qū)及其要掛在到的位置,,比如,,我想要掛載/dev/sda5分區(qū),其文件系統(tǒng)格式是NTFS,,把它掛載在/home/csc/music目錄下,。具體命令如下:
mount/dev/sda5 /home/csc/music
cd/home/csc/music
ls
執(zhí)行上述命令,可以在music目錄下查看sda5分區(qū)中的文件了,。
卸載的命令也很簡(jiǎn)單,,執(zhí)行命令:umount/dev/sda(或者/home/csc/music)就OK了。
參考文獻(xiàn):
細(xì)說(shuō)Linux掛載——mount:http://forum./viewtopic.php?t=257333
Linuxproc:http://dqw19880428.blog.163.com/blog/static/2051131620093144735924/
Linux硬盤(pán)分區(qū)細(xì)節(jié)詳談: http://blog.csdn.net/freexploit/article/details/961330
|