新聞中心
在 Linux 中,文件系統(tǒng)是必不可少的部分之一。而在啟動時,為了能夠正常啟動系統(tǒng),需要掛載根文件系統(tǒng)。在以前的 Linux 系統(tǒng)中,這個過程是需要手動完成的,而現(xiàn)在的 Linux 系統(tǒng)則提供了自動掛載的功能。

網(wǎng)頁設(shè)計是網(wǎng)站建設(shè)的前奏,好的網(wǎng)頁設(shè)計更深度的剖析產(chǎn)品和設(shè)計風(fēng)格定位,結(jié)合最新的網(wǎng)頁設(shè)計流行趨勢,與WVI應(yīng)用標準,設(shè)計出具企業(yè)表現(xiàn)力,大器而深穩(wěn)的網(wǎng)站界面設(shè)。創(chuàng)新互聯(lián)公司2013年至今,是成都網(wǎng)站建設(shè)公司:提供企業(yè)網(wǎng)站設(shè)計,高端網(wǎng)站設(shè)計,營銷型企業(yè)網(wǎng)站建設(shè)方案,成都響應(yīng)式網(wǎng)站建設(shè),成都小程序開發(fā),專業(yè)建站公司做網(wǎng)站。
在本文中,我們將詳細介紹 的原理和實現(xiàn)方法。
一、Linux 根文件系統(tǒng)
在 Linux 中,根文件系統(tǒng)(root file system)是一個特殊的文件系統(tǒng),它包含了 Linux 系統(tǒng)的所有必要文件。根文件系統(tǒng)是整個文件系統(tǒng)的起點,所有其他文件系統(tǒng)都是掛載在根文件系統(tǒng)上的。
根文件系統(tǒng)包含了系統(tǒng)內(nèi)核、設(shè)備驅(qū)動程序、系統(tǒng)配置文件、用戶程序、庫文件等一系列文件和目錄。在啟動時,操作系統(tǒng)必須將根文件系統(tǒng)掛載到一個合適的位置,才能夠正常啟動系統(tǒng)。
二、手動掛載根文件系統(tǒng)
以前的 Linux 系統(tǒng)中,掛載根文件系統(tǒng)是需要手動完成的。假設(shè)根文件系統(tǒng)所在的硬盤為 /dev/sda1,掛載點為 /mnt/rootfs,則手動掛載的命令為:
“`
mount /dev/sda1 /mnt/rootfs
“`
該命令的意思是將 /dev/sda1 掛載到 /mnt/rootfs 目錄下。如果該命令執(zhí)行成功,我們就可以在 /mnt/rootfs 目錄下看到根文件系統(tǒng)的所有文件和目錄了。
但是,在實際應(yīng)用中,手動掛載根文件系統(tǒng)有很多不便之處。它需要用戶手動輸入命令,極易出錯。如果根文件系統(tǒng)所在的硬盤或分區(qū)發(fā)生變化,那么用戶就需要重新修改命令中的設(shè)備名稱和掛載點,這也是一個非常繁瑣的過程。
因此,我們需要一種更加方便和自動化的方式來掛載根文件系統(tǒng)。
三、自動掛載根文件系統(tǒng)
近些年來,Linux 系統(tǒng)已經(jīng)提供了自動掛載根文件系統(tǒng)的功能。具體實現(xiàn)方法有兩種:
1、使用內(nèi)核參數(shù)
在 Linux 內(nèi)核中,有一個 root 參數(shù),它用于指定根文件系統(tǒng)所在的設(shè)備或文件。如果在系統(tǒng)啟動時指定了 root 參數(shù),那么內(nèi)核就會自動掛載根文件系統(tǒng)。
以 Grub 為例,我們可以在 /etc/default/grub 文件中指定 root 參數(shù):
“`
GRUB_CMDLINE_LINUX_DEFAULT=”root=/dev/sda1″
“`
這個命令告訴 Grub,將根文件系統(tǒng)掛載到 /dev/sda1 上。當我們重啟系統(tǒng)時,Grub 會自動讀取該參數(shù)并將根文件系統(tǒng)掛載到指定的設(shè)備上。
2、使用 initramfs
除了使用內(nèi)核參數(shù)外,我們還可以使用 initramfs 來實現(xiàn)自動掛載根文件系統(tǒng)。initramfs 是一種類似于臨時文件系統(tǒng)的東西,它會在系統(tǒng)啟動時被掛載到內(nèi)存中。在 initramfs 中,我們可以編寫腳本來完成根文件系統(tǒng)的掛載。
具體過程如下:
1)創(chuàng)建 initramfs
可以使用下面的命令來創(chuàng)建 initramfs:
“`
cd /boot
mkinitramfs -o initrd.img-$(uname -r) $(uname -r)
“`
這個命令會在 /boot 目錄下創(chuàng)建一個名為 initrd.img-$(uname -r) 的文件。該文件就是我們要用來掛載根文件系統(tǒng)的 initramfs。
2)修改 Grub 配置文件
下一步是修改 Grub 配置文件。我們需要將 initramfs 文件和內(nèi)核鏡像文件一起傳遞給 Grub,以確保 initramfs 在系統(tǒng)啟動時能夠正確加載。
以 Ubuntu 為例,我們可以在 /etc/default/grub 文件中添加以下內(nèi)容:
“`
GRUB_INITRD=/boot/initrd.img-$(uname -r)
“`
該命令會告訴 Grub 加載 /boot/initrd.img-$(uname -r) 文件作為 initramfs。
3)修改 initramfs
最后一步是修改 initramfs。我們需要在 initramfs 中添加一個腳本來完成根文件系統(tǒng)的掛載。通常情況下,這個腳本被命名為 init。
該腳本的大致內(nèi)容如下:
“`
#!/bin/sh
mount /dev/sda1 /mnt/rootfs
exec switch_root /mnt/rootfs /in/init
“`
這個腳本的作用是將 /dev/sda1 掛載到 /mnt/rootfs 目錄下,并將控制臺切換到 /mnt/rootfs 中運行的 init 進程。當 init 進程啟動時,系統(tǒng)就完全切換到根文件系統(tǒng)中運行了。
四、
綜上所述,的原理和實現(xiàn)方法都比較簡單。通過使用內(nèi)核參數(shù)或 initramfs,我們可以輕松地完成根文件系統(tǒng)的掛載,從而方便用戶啟動系統(tǒng)。如果你還沒有使用自動掛載根文件系統(tǒng)的功能,建議你嘗試一下。
相關(guān)問題拓展閱讀:
- Linux掛載文件
- linux系統(tǒng)下/是根目錄 掛載是為什么還要掛載/ 如果再來一塊硬盤,格式化分區(qū)后,進行掛載,也要掛載到/下
- linux為什么寫入fstab里面沒法自動掛載,每次重啟需要手動掛載
Linux掛載文件
簡單用法:
格式:mount
其中常用的參數(shù)有:
復(fù)制代碼
-a 安裝在/etc/fstab文件中類出的所有文件系統(tǒng)。
-f 偽裝mount,作出檢查設(shè)備和目錄的樣子,但并不真正掛載文件系統(tǒng)。
-n 不把安裝記錄在/etc/mtab 文件中。
-r 講文件系統(tǒng)安裝為只讀。
-v 詳細顯示安裝信息。
-w 將文件系統(tǒng)安裝為可寫,為命令默認情況。
-t 指定設(shè)備的文件系統(tǒng)類型,常見的有:
ext2 是linux目前常用的文件系統(tǒng)
msdos MS-DOS的fat,就是fat16
vfat windows98常用的fat32
nfs 網(wǎng)絡(luò)文件系統(tǒng)
iso9660 CD-ROM光盤標準文件系統(tǒng)
ntfs windows NT/2023/XP的文件系統(tǒng)
auto 自動檢測文件系統(tǒng)
-o 指定掛載文件系統(tǒng)時的選項,有些也可寫到在 /etc/fstab 中。常用的有:
defaults 使用所有選項的默認值(auto、nouser、rw、suid)
auto/noauto 允許/不允許以 –a選項進行安裝
dev/nodev 對/不對文件系統(tǒng)上的特殊設(shè)備進行解釋
exec/noexec 允許/不允許執(zhí)行二進制代碼
suid/nosuid 確認/不確認suid和sgid位
user/nouser 允許/不允許一般用戶掛載
codepage=XXX 代碼頁
iocharset=XXX 字符集
ro 以只讀方式掛載
rw 以讀寫方式掛載
remount 重新安裝已經(jīng)安裝了的文件系統(tǒng)
loop 掛載“回旋設(shè)備”以及“ISO鏡像文件”
復(fù)制代碼
需要注意的是,掛載點必須是一個已經(jīng)存在的目錄,這個目錄可以不為空,但掛載后這個目錄下以前的內(nèi)容將不可用,umount以后會恢復(fù)正常。使用多個-o 參數(shù)的時候,-o 只用一次,參數(shù)之間用半角逗號隔開:
# mount –o remount,rw /
例如要掛載windows下文件系統(tǒng)為FAT32的D盤,一般而言在Linux下這個分區(qū)對絕嘩應(yīng)/dev/hda5,根據(jù)具體的分區(qū)情況會有不同,這里就以hda5來舉例說明:
# mkdir /mnt/hda5 //創(chuàng)建hda5的目錄作為掛載點,位置和目錄名可自定義//
# mount -t vfat /dev/hda5 /mnt/hda5
一般而言,Linux會自動探測分區(qū)的文件系統(tǒng),除非讓你指定時,否則-t vfat 可以省掉。
# mount /dev/hda5 /mnt/hda5
這樣就可以進入/mnt/hda5目錄去訪問分區(qū)中的資源了。
1. 為什純宏碧么mount上分區(qū)后顯示不了中文文件為問號/亂碼?
顯示問號表明你的系統(tǒng)中沒有可識別使用的中文字體,請先安裝中文字體。確保你的系統(tǒng)已經(jīng)可以很好的顯示中文。顯示為亂碼一般是mount默認使用的文件系 統(tǒng)編碼和文件系統(tǒng)中文件的實際編碼不一致造成的。要想正常顯示中文文件,mount時需要用到 -o 參數(shù)里的codepage和iocharset選項。codepage指定文件系統(tǒng)的代碼頁,簡體中文中文代碼是936;iocharset指定字符集, 簡體中文一般用cp936或gb2312。
# mount –o iocharset=gb2312 codepage=936 /dev/hda5 /mnt/hda5
一般來說 mount –o iocharset=cp936 /dev/hda5 /mnt/hda5 就可以解決問題了。
如果這樣做了以后還有問題,請嘗試UTF-8編碼:
# mount –o iocharset=utf8 /dev/hda5 /mnt/hda5
2. 為什么mount上去以后分區(qū)普通用戶不可寫?
mount時加上 –o umask=000 即可:
# mount –o umask=000, iocharset=cp936 /dev/hda5 /mnt/hda5
3. 為什么mount上去后的分區(qū)中的文件都變成短文件名了?
這是文件系統(tǒng)掛錯的做舉原因,將FAT32掛載成FAT16時就會出現(xiàn)這種情況,先umount,然后用 –t vfat 重新掛載即可解決問題。
# mount –t vat /dev/hda5 /mnt/hda5
4. 如何掛載U盤和mp3?
如果計算機沒有其它SCSI設(shè)備和u外設(shè)的情況下,插入的U盤的設(shè)備路徑是 /dev/sda1,用命令:
# mkdir /mnt/u
# mount /dev/sda1 /mnt/u
掛載即可。
5. 可以直接使用iso文件嗎?
可以,就是mount的這一選項使得Linux下有免費虛擬光驅(qū)的說法,具體用法是:
# mkdir /mnt/iso
# mount –o loop linux.iso /mnt/iso
當然,掛載以后掛載點/mnt/iso也是只讀的。
6. 如何開機自動掛載分區(qū)?
每次掛載都要輸入那么長的命令的確是繁瑣了些,只要將分區(qū)信息寫到 /etc/fstab 文件中即可實現(xiàn)系統(tǒng)啟動的自動掛載,例如對于 /dev/hda5 的自動掛載添加如下的行即可:
/dev/hda5 /mnt/hda5 vfat defaults,iocharset=cp936, rw 0 0
7. 如何掛載samba 分區(qū)?
# mkdir /mnt/share
# mount -t bfs -o username=root,password=abc,codepage=936,iocharset=gb2312 //192.168.1.100/share /mnt/share
如果中文顯示不正常請嘗試UTF-8編碼。當然可以寫到fstab中實現(xiàn)自動掛載。
8. mount –bind是什么意思?
mount –bind 是將一個目錄中的內(nèi)容掛載到另一個目錄上,用法是
# mount –bind olddir newdir
這個命令使得自己搭建的FTP要共享某個目錄的時候變得特別方便。如果要取消mount用命令:
# mount –move olddir newdir
即可。
如果mount –bind 也想寫入fstab中的話格式如下:
olddir newdir none bind 0 0
9. 為什么umount的時候老顯示 device busy?
這是因為有程序正在訪問這個設(shè)備,最簡單的辦法就是讓訪問該設(shè)備的程序退出以后再umount??赡苡袝r候用戶搞不清除究竟是什么程序在訪問設(shè)備,如果用戶不急著umount,則可以用:
# umount -l /mnt/hda5
來卸載設(shè)備。選項 –l 并不是馬上umount,而是在該目錄空閑后再umount。還可以先用命令 ps aux 來查看占用設(shè)備的程序PID,然后用命令kill來殺死占用設(shè)備的進程,這樣就umount的非常放心了。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
開機掛載及/etc/fstab格式
當我們在掛載磁盤的時候,除了利用磁盤的代號之外 (/dev/hdxx) 也可以直接利用磁盤的 label 來作為掛載的磁盤掛載點喔!基本上, 就是那個 /etc/fstab 檔案的設(shè)定,Label 來做為磁盤掛載的依據(jù), 這樣有好有壞:
優(yōu)點:不論硬盤代號怎么變,不論您將硬盤插在那個 IDE 接口 (IDE1 或 IDE2 或 master 或 slave 等),由于系統(tǒng)是透過 Label ,所以,磁盤插在那個接口將不會有影響。
缺點:如果插了兩顆硬盤,剛好兩顆硬盤的 Label 有重復(fù)的,那就慘了~ 因為系統(tǒng)會無法判斷那個磁盤分割槽才是正確的!
開機掛載 /etc/fstab 及 /etc/mtab:
系統(tǒng)掛載的一些限制:
根目錄 / 是必須掛載的,而且一定要先于其它 mount point 被掛載進來。
其它 mount point 必須為已建立的目錄,可任意指定,但一定要遵守必須的系統(tǒng)目錄架構(gòu)原則
所有 mount point 在同一時間之內(nèi),只能掛載一次。
所有 partition 在同一時間之內(nèi),只能掛載一次。
如若進行卸載,您必須先將工作目錄移到 mount point(及其子目錄) 之外。
復(fù)制代碼
# cat /etc/fstab
# Device Mount_point filesystem parameters dump fsck
LABEL=//ext3 defaults(以標頭名稱掛載)
/dev/hda5 /home extdefaults
/dev/hda3 swap swap defaults
/dev/hdc /media/cdrom auto pamconsole,exec,noauto,managed 0 0
/dev/devpts/dev/pts devpts gid=5,mode=
/dev/shm /dev/shm tmpfs defaults
/dev/proc /proc proc defaults
/dev/sys /sys sysfs defaults
復(fù)制代碼
其實這個 /etc/fstab 就是將我們使用 mount 來掛載一個裝置到系統(tǒng)的某個掛載點, 所需要下達的指令內(nèi)容,將這些內(nèi)容通通寫到 /etc/fstab 里面去,而讓系統(tǒng)一開機就主動掛載。 那么 mount 下達指令時,需要哪些參數(shù)?不就是『裝置代號、掛載點、檔案系統(tǒng)類別、參數(shù)』等等, 而我們的 /etc/fstab 則加入了兩項額外的功能,分別是備份指令 dump 的執(zhí)行與否, 與是否開機進行 fsck 掃瞄磁盤。
前面的4個已經(jīng)很熟悉了,每個檔案系統(tǒng)還有很多參數(shù)可以加入的,例如中文編碼的 iocharset=big5,codepage=950 之類的,當然還有很多常見的參數(shù),具體可以看mount中的詳細介紹,具體說一下后2個:dump和fsck。
能否被 dump 備份指令作用:
在 Linux 當中,可以利用 dump 這個指令來進行系統(tǒng)的備份的。而 dump 指令則會針對 /etc/fstab 的設(shè)定值,去選擇是否要將該 partition 進行備份的動作呢! 0 代表不要做 dump 備份, 1 代表要進行 dump 的動作。 2 也代表要做 dump 備份動作, 不過,該 partition 重要度比 1 小。
是否以 fsck 檢驗扇區(qū):
開機的過程中,系統(tǒng)預(yù)設(shè)會以 fsck 檢驗我們的 partition 內(nèi)的 filesystem 是否完整 (clean)。 不過,某些 filesystem 是不需要檢驗的,例如虛擬內(nèi)存 swap ,或者是特殊檔案系統(tǒng), 例如 /proc 與 /sys 等等。所以,在這個字段中,我們可以設(shè)定是否要以 fsck 檢驗該 filesystem 喔。 0 是不要檢驗, 1 是要檢驗, 2 也是要檢驗,不過 1 會比較早被檢驗啦! 一般來說,根目錄設(shè)定為 1 ,其它的要檢驗的 filesystem 都設(shè)定為 2 就好了。
一般來說, 當我們編輯 /etc/fstab 后,為了避免可能的錯誤,通常就會以 mount -a (模擬開機自動掛載操作)這個指令來測試看看呢!這是很重要的一個測試動作喔!
/etc/fstab 是開機時的設(shè)定檔,不過,實際 filesystem 的掛載是記錄到 /etc/mtab 與 /proc/mounts 這兩個檔案當中的。每次我們在更動 filesystem 的掛載時,也會同時更動這兩個檔案喔!但是,萬一發(fā)生您在 /etc/fstab 輸入的數(shù)據(jù)錯誤,導(dǎo)致無法順利開機成功,而進入單人維護模式當中,那時候的 / 可是 read only 的狀態(tài),當然您就無法修改 /etc/fstab ,也無法更新 /etc/mtab ,沒關(guān)系,可以利用底下這一招:
# mount -n -o remount,rw /
加上 -n 則不更新 /etc/mtab ,加上 -o 則提供額外的參數(shù)設(shè)定。 利用這一動作,嘿嘿!您的 / 就可以讀寫,那么自然就能夠更新檔案內(nèi)容了。
本租圓侍視頻弊吵講解了Linux系統(tǒng)中設(shè)備文件的自腔者動掛載,操作性極強。
“sda6有時寫成hda6”這個主要是sata類型態(tài)核的硬盤是sda表示的,ide類型的硬盤是帆皮掘hda表示的。既然已經(jīng)確定了E為6分區(qū),那么mkdir/mnt/nt ,mount /dev/sda6 /mnt/nt或者是 mkdir/mnt/nt , mount /dev/sda6 /mnt/nt應(yīng)該 就可以 把E盤掛載到/mnt/nt 目錄下,但是由于E盤是windows下的文件格式握困(NTFS、FAT)有可能Linux下不能直接讀取。
10分沒唯譽有誘惑力
首先,掛載是針對文件系統(tǒng)的,不是文件,也就是針對的你分區(qū)的指隱段!
你攜脊的E盤在linux中被表示為第幾個分區(qū),這些必須知道,然后,才可以掛載
你要查看要掛載的設(shè)備
su root
fdisk -l
可以看到最下面有/dev/…(例如:/dev/sdb1)
如果想掛載到/圓豎mnt/nt
操作汪含是:mount /dev/sdb1 /mnt/nt
linux系統(tǒng)下/是根目錄 掛載是為什么還要掛載/ 如果再來一塊硬盤,格式化分區(qū)后,進行掛載,也要掛載到/下
根只有一個,不能再掛別的文衫橘件系統(tǒng)
建個或兆團目錄做掛載點,把新文件系統(tǒng)掛載到這個目錄,猜頌進入這個目錄就可以用新文件系統(tǒng)了
掛載只是建一個訪問點而已,并不占用根分區(qū)得空間。
linux為什么寫入fstab里面沒法自動掛載,每次重啟需要手動掛載
請檢查fstab里面的掛載格式
LABEL=/ 櫻寬 慧頌虧/ext3 defaults
之一列:需要掛載的設(shè)備或nfs服務(wù)器
第二列:掛載到哪里
第三列:為要掛載的文件系統(tǒng)類型前神
第四列:為文件系統(tǒng)關(guān)聯(lián)的mount選項(參加man 8 mount 找 -o選項)
第五列:1表示需要dump備份。
第六列:是否進行fsck -A檢查磁盤錯誤
這是fstab配置方法,同時如果你掛載的是nfs服務(wù)器,還需要開啟rpcbind和nfs服務(wù)。
chkconfig rpcbind on
chkconfig nfs on
為了讓服務(wù)開機啟動。
我猜沒保存修改退出,哈哈~
不可能吧,你是不是寫錯了。。。
把那一條貼出來看看
關(guān)于linux 根文件系統(tǒng)自動掛載的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都創(chuàng)新互聯(lián)建站主營:成都網(wǎng)站建設(shè)、網(wǎng)站維護、網(wǎng)站改版的網(wǎng)站建設(shè)公司,提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、成都網(wǎng)站推廣、成都網(wǎng)站優(yōu)化seo、響應(yīng)式移動網(wǎng)站開發(fā)制作等網(wǎng)站服務(wù)。
新聞標題:Linux自動掛載根文件系統(tǒng)(linux根文件系統(tǒng)自動掛載)
本文地址:http://www.dlmjj.cn/article/djcisec.html


咨詢
建站咨詢
