優麒麟20.4 是基於ubuntu20.4的國產發行版,ARM架構版本有許多組件默認未安裝,軟件源用的跟x86_64的也不一樣。下文中對個分區的 空間大小只是 記個大概數值,不必糾結。
一:實驗環境
硬件:
1. 樹莓派4B 2. 顯示器 3. 128G的 SD卡 4. 讀卡器 (用於鏡像寫入SD卡) 5. microHDMI轉HDMI 線、 6. 鼠標、鍵盤 7. 聯網的路由器、光纖線(wifi連不上)
軟件:
1. 操作平台 為windows10 2. 樹莓派版——優麒麟 系統鏡像ubuntukylin-20.04.1-desktop+raspi.img ( 可以說是 ARM版 ubuntu ) 3. 刻錄軟件 balenaEtcher
windows10中下載系統鏡像 ubuntukylin-20.04.1-desktop+raspi.img 后用balenaEtcher 將鏡像寫到SD卡中。制作好U盤(SD卡)啟動盤后放到樹莓派啟動,連接好該連接的線,顯示器HDMI接的是樹莓派的信號、用光纖線聯網給樹莓派。
二:初遇難題
運行優麒麟20.4后提示存儲空間不足。原因是 雖然我SD卡 是128G,但刻錄后只格式化 用了大概 8G。除去其他SD卡約有100G左右的空間隱藏起來了,這部分空間沒有 分區、沒有格式化、更沒有掛載到Linux的文件系統(ext4)
system-boot 是 /dev/sda0p1 的標簽, writable 是 /dev/sda0p2 的標簽。制作U盤啟動盤后就已經存在了。
三:操作過程
思路是 根目錄下的usr 和home 文件夾比較大,將這兩個文件夾轉移到新增分區。
查看分區
root@localhost# sudo fdisk -l
得到的信息有:
/dev/sda0 115G
/dev/sda0p1 256M
/dev/sda0p2 7.7G
可見sda0p1、sda0p2 加起來 遠沒有 115G ,有一部分空間隱藏起來了。
創建分區:
以下節選關鍵操作命令,具體要根據 提示信息 隨機應變。
root@localhost# sudo fdisk /dev/sda0 fdisk 模式下執行選項: n (新建分區) p (選擇主分區) 3 (默認新分區編號) +40G (指定空間大小,不指定則默認 用完尾部余下空間) w (寫入以上更改,若過程中出錯可輸入 q 放棄更改)
我這里 創建了的一個新的分區叫 /dev/sda0p3 , lsblk 命令應該能看到.
格式化分區:
命令行形式:
root@localhost# mkfs.ext4 /dev/sda0p3
圖形界面形式:
root@localhost# sudo apt install gparted #安裝 gparted root@localhost# sudo gparted #管理員身份啟動 一系列圖形界面操作。 這步順帶為分區打上 LABEL。
這一步其實偷懶用了 gparted 來將分區格式化為 ext4 格式、並且給分區 打上 LABEL,即 usrdata 標簽。有了LABEL后面改/etc/fstab 就不用寫一長串分區的UUID了。
題外話:blKid 可以查看分區UUID。
掛載分區:
先在文件系統中創建一個文件夾:
root@localhost# mkdir -p /mnt/usrdatadir
掛載/dev/sda0p3到 /usrdatadir文件夾:
root@localhost# mount -t ext4 /dev/sda0p3 /mnt/usrdatadir
此時可以用命令查看是否掛載成功:
root@localhost# df -h
掛載成功將能看到類似這樣的:
/dev/sda0p3 40G 1G 39G 2.5% /mnt/usrdatadir
數據遷移:
復制usr下的內容到 /usrdatadir,本質上就是復制到分區 /dev/sda0p3 :
root@localhost# sudo rsync -aXS --progress --exclude='/*/.gvfs' /usr/. /mnt/usrdatadir/.
gvfs 指的應該是 “守護進程”。復制好以后可以將 usr 文件夾改名為 usrold 或其他,這樣接下來重啟系統后才找得到這個文件夾,才可以刪除或者移動它,騰出空間。
root@localhost# mv /usr /usrold
照葫蘆畫瓢:
重復以上步驟將 SD 卡余下或部分空間 格式化為 ext4,得到/dev/sda0p4分區。用gparted為該分區打上LABEL即 homedata 標簽。掛載該分區到/mnt/homedatadir 復制 /home 的內容 到該分區對應的文件夾 /homedatadir 。別忘了復制home文件夾內容后 重命名home 為 homeold 或其他。 關鍵命令節選:
復制/home下的內容到 /homedatadir,本質上就是復制到分區 /dev/sda0p4 :
root@localhost# sudo rsync -aXS --progress --exclude='/*/.gvfs' /home/. /mnt/homedatadir/.
重命名home為homeold:
root@localhost# mv /home /homeold
啟動配置:
將usrdata、homedata分區與相應文件夾關聯,這樣系統啟動后才能正確掛載分區到指定文件夾。/etc/fstab 追加兩行后:
LABEL=writable / ext4 defaults 0 0 LABEL=system-boot /boot/firmware vfat defaults 0 1 LABEL=usrdata /usr ext4 defaults 0 0 LABEL=homedata /home ext4 defaults 0 0
(這里應該還把usrdatadir homedatadir分別重命名為了 usr home )
重新啟動:
完成后就可以在終端輸入reboot重啟電腦了
root@localhost# reboot
重啟后到根目錄下刪除或轉移 usrold、homeold文件夾,才真正的騰出了空間。 不放心的話,就將 這兩個文件夾移動到別的分區作為備份。
root@localhost# sudo rm -fr /homeold root@localhost# sudo rm -fr /usrold
四:完成效果