今天給大家分享一篇ubuntu的系列文章之一,作為研發(fā)人員的我們,在有需要的時候我們會把電腦裝成雙系統(tǒng)。主要的工作在Ubuntu上面,window下面有時候會去用一些特定的軟件??傊畷a(chǎn)生交替使用,在電腦里面產(chǎn)生linux的文件系統(tǒng)和windos文件系統(tǒng)。
Ubuntu+Windows雙系統(tǒng)下互相訪問對方的文件是我們在雙系統(tǒng)中實現(xiàn)的部分,我安裝的ubuntu20直接可以看到win的盤,進行訪問,但是需要進行手工掛載,而windows環(huán)境下,對于Ubuntu系統(tǒng)一般來說比較麻煩,要么安裝一些配合的軟件,要么使用共享文件進行訪問。
今天的內(nèi)容不是描述如何訪問雙方的資源,而是在ubuntu20已經(jīng)識別處win的盤符之后,我們將該盤進行自動掛載到Ubuntu中。
歡迎關(guān)注微信公眾號:羽林君,或者添加作者個人微信:become_me
情節(jié)介紹:
使用雙系統(tǒng)時候,我打開我的ubuntu20,雖然可以查看windos的資源,但是都是需要自己手動進行掛載的,然后我自己去嘗試讓Ubuntu自己開機去掛載,這里給大家介紹三種方法,做一個簡單的分享,我是如何把下面兩個盤開機啟動掛載到我的Linux系統(tǒng)中的。
sudo fdisk -l
這個是我window系統(tǒng)盤和Linux系統(tǒng)所在的硬盤,其中nvme0n1p3為windows系統(tǒng),nvme0n1p4為linux盤
這個是我電腦加裝的一個1t固態(tài)硬盤
方法一:使用腳本進行systemd初始化啟動
常規(guī)的方法是自己寫一個腳本,然后放到/etc下面開機初始化的腳本去調(diào)用。從Ubuntu18.04 開始,系統(tǒng)不再使用initd管理系統(tǒng),而是改用systemd。雖然systemd設(shè)計更加合理和友好,但改變還是太大,跟之前的完全不同。Ubuntu 20中連/etc/rc.local文件也沒有了,所以我們現(xiàn)在要做一個開機啟動的腳本需要自己做一個system的配置文件。
1.寫服務(wù)文件
Systemctl管理了很多service啟動文件,我們可以在/lib/systemd/system/ 目錄看到很多的service
在/etc/systemd/system 也有一些service文件
我們就在這個目錄下面新增一個rc-local.service文件
首先復(fù)制/lib下面的rc-local.service文件到/etc下面,這樣我們可以參照
cp ?/lib/systemd/system/rc-local.service ? /etc/systemd/system/rc-local.service
其次修改對應(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
對應(yīng)的修改主要為我們自定義的ConditionFileIsExecutable ?ExecStart 對應(yīng)的目錄文件。新增了[Install]設(shè)置。
注:
[Install] ? ? ? ? ? ? ? 服務(wù)安裝的相關(guān)設(shè)置,可設(shè)置為多用戶
2、編輯對應(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這里可以自動識別硬盤的文件系統(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
這樣我們就啟動了相應(yīng)的服務(wù),其中sudo systemctl status rc-local是用來查看該service啟動詳細信息,有些時候因為自己寫目錄的錯誤等問題,導(dǎo)致你會啟動失敗。
現(xiàn)在你就重啟電腦測試了。
方法二:在/etc/rc.local 添加自動掛載腳本
這個部分取決于你電腦的版本,前文也提到過從Ubuntu18.04 開始,系統(tǒng)不再使用initd管理系統(tǒng)。而initd也是一個linux開機管理的工具,它支持就是/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文件進行開機啟動掛載
系統(tǒng)開機的時候會讀取/etc/fstab
這個文件中的內(nèi)容,根據(jù)文件配置情況去掛載磁盤。
所以我們還有一種方法進行開啟自動掛載我們的windows盤,vi /etc/fstab
新增我的兩個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è)備名】 【掛載點】 【設(shè)備的類型】 【掛載時采用的參數(shù)】 【dump-freq】 【pass-num】
設(shè)備名,例如/dev/sda1。
掛載點,是一個系統(tǒng)上存在的文件夾。
設(shè)備的類型,例如ext4。用man fstab可以查到支持的類型。
掛載時采用的參數(shù),一般是defaults。
dump-freq和pass-num,一般設(shè)置為0,表示啟動時不檢查要掛載的設(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是我的一個windows系統(tǒng)盤,這里我直接掛載上去,其中ntfs代表文件系統(tǒng)為NTFS,iocharset=cp936 是簡體中文的意思。
/dev/nvme0n1p3?/media/lyn/win_sys/?ntfs?defaults,iocharset=cp936????????0?0
在執(zhí)行最后一個盤/dev/sda2的時候發(fā)現(xiàn),按照/dev/nvme0n1p3方法執(zhí)行是有問題的,最后發(fā)現(xiàn)這個部分是要用UUID進行源。因為/dev/sda2因為是單獨的一個盤,不一定每次都是分配叫為/dev/sda2。
下面是對Linux ?UUID的介紹:
vi ?/boot/grub/grub.cfg
通過這些命令我們可以看到我們硬盤對應(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
這時候我們就可以重啟看我們電腦掛載信息了。
查看掛載信息
df?-h
也可以用其他命令查看你的掛載情況:
cat?/proc/mounts??
結(jié)語
這就是我分享我在ubuntu啟動自動加載windows盤的方法,如果大家有更好的想法和需求,也歡迎大家加我好友交流分享哈。
作者:良知猶存,白天努力工作,晚上原創(chuàng)公號號主。公眾號內(nèi)容除了技術(shù)還有些人生感悟,一個認真輸出內(nèi)容的職場老司機,也是一個技術(shù)之外豐富生活的人,攝影、音樂 and 籃球。關(guān)注我,與我一起同行。