今天給大家分享一篇ubuntu的系列文章之一,作為研發(fā)人員的我們,在有需要的時(shí)候我們會(huì)把電腦裝成雙系統(tǒng)。主要的工作在Ubuntu上面,window下面有時(shí)候會(huì)去用一些特定的軟件。總之會(huì)產(chǎn)生交替使用,在電腦里面產(chǎn)生linux的文件系統(tǒng)和windos文件系統(tǒng)。
Ubuntu+Windows雙系統(tǒng)下互相訪問對(duì)方的文件是我們?cè)陔p系統(tǒng)中實(shí)現(xiàn)的部分,我安裝的ubuntu20直接可以看到win的盤,進(jìn)行訪問,但是需要進(jìn)行手工掛載,而windows環(huán)境下,對(duì)于Ubuntu系統(tǒng)一般來說比較麻煩,要么安裝一些配合的軟件,要么使用共享文件進(jìn)行訪問。
今天的內(nèi)容不是描述如何訪問雙方的資源,而是在ubuntu20已經(jīng)識(shí)別處win的盤符之后,我們將該盤進(jìn)行自動(dòng)掛載到Ubuntu中。
歡迎關(guān)注微信公眾號(hào):羽林君,或者添加作者個(gè)人微信:become_me
情節(jié)介紹:
使用雙系統(tǒng)時(shí)候,我打開我的ubuntu20,雖然可以查看windos的資源,但是都是需要自己手動(dòng)進(jìn)行掛載的,然后我自己去嘗試讓Ubuntu自己開機(jī)去掛載,這里給大家介紹三種方法,做一個(gè)簡單的分享,我是如何把下面兩個(gè)盤開機(jī)啟動(dòng)掛載到我的Linux系統(tǒng)中的。
sudo fdisk -l
這個(gè)是我window系統(tǒng)盤和Linux系統(tǒng)所在的硬盤,其中nvme0n1p3為windows系統(tǒng),nvme0n1p4為linux盤
這個(gè)是我電腦加裝的一個(gè)1t固態(tài)硬盤
方法一:使用腳本進(jìn)行systemd初始化啟動(dòng)
常規(guī)的方法是自己寫一個(gè)腳本,然后放到/etc下面開機(jī)初始化的腳本去調(diào)用。從Ubuntu18.04 開始,系統(tǒng)不再使用initd管理系統(tǒng),而是改用systemd。雖然systemd設(shè)計(jì)更加合理和友好,但改變還是太大,跟之前的完全不同。Ubuntu 20中連/etc/rc.local文件也沒有了,所以我們現(xiàn)在要做一個(gè)開機(jī)啟動(dòng)的腳本需要自己做一個(gè)system的配置文件。
1.寫服務(wù)文件
Systemctl管理了很多service啟動(dòng)文件,我們可以在/lib/systemd/system/ 目錄看到很多的service
在/etc/systemd/system 也有一些service文件
我們就在這個(gè)目錄下面新增一個(gè)rc-local.service文件
首先復(fù)制/lib下面的rc-local.service文件到/etc下面,這樣我們可以參照
cp ?/lib/systemd/system/rc-local.service ? /etc/systemd/system/rc-local.service
其次修改對(duì)應(yīng)的文件
[Unit]
Description=/etc/rc.d/rc.local?Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local?start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
[Install]
WantedBy=multi-user.target
對(duì)應(yīng)的修改主要為我們自定義的ConditionFileIsExecutable ?ExecStart 對(duì)應(yīng)的目錄文件。新增了[Install]設(shè)置。
注:
[Install] ? ? ? ? ? ? ? 服務(wù)安裝的相關(guān)設(shè)置,可設(shè)置為多用戶
2、編輯對(duì)應(yīng)的 /etc/rc.d/rc.local 文件
sudo?mkdir?-p?/etc/rc.d?&?sudo?vi?/etc/rc.d/rc.local
具體內(nèi)容
#!/bin/bash
sudo?mount?/dev/nvme0n1p3?/media/lyn/win_sys/
sudo?mount?/dev/sda2?/media/lyn/win_data/
掛載我windows盤到我的指定目錄,其中/media/lyn/win_sys/
/media/lyn/win_data/ 是我早已經(jīng)建立好的空文件夾,專門用來掛載我的windows盤。
注:mount這里可以自動(dòng)識(shí)別硬盤的文件系統(tǒng)。
最后 chmod +x /etc/rc.local
3、開啟 rc-local.service 服
sudo?systemctl?enable?rc-local
Created?symlink?/etc/systemd/system/multi-user.target.wants/rc-local.service??→?/etc/systemd/system/rc-local.service.
sudo?systemctl?start?rc-local
sudo?systemctl?status?rc-local
這樣我們就啟動(dòng)了相應(yīng)的服務(wù),其中sudo systemctl status rc-local是用來查看該service啟動(dòng)詳細(xì)信息,有些時(shí)候因?yàn)樽约簩懩夸浀腻e(cuò)誤等問題,導(dǎo)致你會(huì)啟動(dòng)失敗。
現(xiàn)在你就重啟電腦測(cè)試了。
方法二:在/etc/rc.local 添加自動(dòng)掛載腳本
這個(gè)部分取決于你電腦的版本,前文也提到過從Ubuntu18.04 開始,系統(tǒng)不再使用initd管理系統(tǒng)。而initd也是一個(gè)linux開機(jī)管理的工具,它支持就是/etc/rc.local,這里的操作也是和方法一的第二步一樣,直接修改里面的文件
vi?/etc/rc.local
增加如下內(nèi)容
sudo?mount?/dev/nvme0n1p3?/media/lyn/win_sys/
sudo?mount?/dev/sda2?/media/lyn/win_data/
方法三:修改fstab文件進(jìn)行開機(jī)啟動(dòng)掛載
系統(tǒng)開機(jī)的時(shí)候會(huì)讀取/etc/fstab
這個(gè)文件中的內(nèi)容,根據(jù)文件配置情況去掛載磁盤。
所以我們還有一種方法進(jìn)行開啟自動(dòng)掛載我們的windows盤,vi /etc/fstab
新增我的兩個(gè)windows盤符
UUID=f44d1976-8e56-4c37-8ce1-d345b8f923ea?/???????????????ext4????errors=remount-ro?0???????1
#?/boot/efi?was?on?/dev/nvme0n1p1?during?installation
UUID=8210-3579??/boot/efi???????vfat????umask=0077??????0???????1
/swapfile?????????????????????????????????none????????????swap????sw??????????????0???????0
新增的命令配置的參數(shù)如下:
<file?system>`,`<mount?point>`,`<type>`,`<options>`,`<dump>`,`<pass>
【設(shè)備名】 【掛載點(diǎn)】 【設(shè)備的類型】 【掛載時(shí)采用的參數(shù)】 【dump-freq】 【pass-num】
設(shè)備名,例如/dev/sda1。
掛載點(diǎn),是一個(gè)系統(tǒng)上存在的文件夾。
設(shè)備的類型,例如ext4。用man fstab可以查到支持的類型。
掛載時(shí)采用的參數(shù),一般是defaults。
dump-freq和pass-num,一般設(shè)置為0,表示啟動(dòng)時(shí)不檢查要掛載的設(shè)備
(設(shè)備的類型)注:
光盤或光盤鏡像:iso9660DOS fat16文件系統(tǒng):msdosWindows 9x fat32文件系統(tǒng):vfatWindows NT ntfs文件系統(tǒng):ntfsMount Windows文件網(wǎng)絡(luò)共享:smbfsUNIX(LINUX) 文件網(wǎng)絡(luò)共享:nfs
依據(jù)之前用fdisk -l查詢系統(tǒng)中當(dāng)前連接的硬盤信息看到,其中/dev/nvme0n1p3是我的一個(gè)windows系統(tǒng)盤,這里我直接掛載上去,其中ntfs代表文件系統(tǒng)為NTFS,iocharset=cp936 是簡體中文的意思。
/dev/nvme0n1p3?/media/lyn/win_sys/?ntfs?defaults,iocharset=cp936????????0?0
在執(zhí)行最后一個(gè)盤/dev/sda2的時(shí)候發(fā)現(xiàn),按照/dev/nvme0n1p3方法執(zhí)行是有問題的,最后發(fā)現(xiàn)這個(gè)部分是要用UUID進(jìn)行源。因?yàn)?dev/sda2因?yàn)槭菃为?dú)的一個(gè)盤,不一定每次都是分配叫為/dev/sda2。
下面是對(duì)Linux ?UUID的介紹:
vi ?/boot/grub/grub.cfg
通過這些命令我們可以看到我們硬盤對(duì)應(yīng)的UUID
ls?-l?/dev/disk/by-uuid
sudo?blkid?/dev/sda2
在/etc/fstab文件中增加
UUID=56EE33DBEE33B1DB?/media/lyn/win_data/?ntfs?defaults????????0?0
最終編輯效果如下:
UUID=f44d1976-8e56-4c37-8ce1-d345b8f923ea?/???????????????ext4????errors=remount-ro?0???????1
#?/boot/efi?was?on?/dev/nvme0n1p1?during?installation
UUID=8210-3579??/boot/efi???????vfat????umask=0077??????0???????1
/swapfile?????????????????????????????????none????????????swap????sw??????????????0???????0
/dev/nvme0n1p3?/media/lyn/win_sys/?ntfs?defaults,iocharset=cp936????????0?0
UUID=56EE33DBEE33B1DB?/media/lyn/win_data/?ntfs?defaults????????0?0
這時(shí)候我們就可以重啟看我們電腦掛載信息了。
查看掛載信息
df?-h
也可以用其他命令查看你的掛載情況:
cat?/proc/mounts??
結(jié)語
這就是我分享我在ubuntu啟動(dòng)自動(dòng)加載windows盤的方法,如果大家有更好的想法和需求,也歡迎大家加我好友交流分享哈。
作者:良知猶存,白天努力工作,晚上原創(chuàng)公號(hào)號(hào)主。公眾號(hào)內(nèi)容除了技術(shù)還有些人生感悟,一個(gè)認(rèn)真輸出內(nèi)容的職場老司機(jī),也是一個(gè)技術(shù)之外豐富生活的人,攝影、音樂 and 籃球。關(guān)注我,與我一起同行。