Linux学习篇(八):优麒麟20.4 添加分区、home目录重定向--ARM_Linux

优麒麟20.4 是基于ubuntu20.4的国产发行版,ARM架构版本有许多组件默认未安装,软件源用的跟x86_64的也不一样下文中对个分区的  空间大小只是 记个大概数值,不必纠结。

如果实验中修改了 优麒麟 Linux 的系统文件如  /etc/fstab 导致 Linux 无法正常启动的,可以利用 Windows 上的软件 DiskGenius   ,在二进制层面上对 优麒麟 Linux 所在的 microSD 卡进行修改,使 Linux 系统文件恢复正常。

 

一:实验环境

硬件:

1. 树莓派4B  通过 microHDMI转HDMI 线  链接到 显示器    2. 树莓派4B 通过 网线 连到 路由器    3. 128G的 SD 卡  及必要的 读卡器 

软件: 

1. Windows10    2. 刻录软件 balenaEtcher    3. 树莓派版——优麒麟 系统镜像 ubuntukylin-20.04.1-desktop+raspi.img   ( 可以说是 ARM版 ubuntu )   

 

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

  

四:完成效果

 

posted @ 2020-10-05 19:25  星云体  阅读(2575)  评论(0编辑  收藏  举报