linux(双系统电脑)缩小根目录分区、给/home单独分区的简单方法

news/2024/10/5 13:40:19/文章来源:https://www.cnblogs.com/KZ25T/p/18269838

linux(双系统电脑)缩小根目录分区、给/home单独分区的简单方法​

电脑配置:x86_64,有1T的固态硬盘。Windows 10+kali linux双系统电脑。

$ uname -r
6.1.0-kali5-amd64

在操作之前有 300G 作为一整个根目录安装 kali,文件系统 为 ext4,没有给 /home 单独分区。现在整个根目录大约使用了 36G,其中 /home 大约有15G;希望缩小根目录到 100G,产生的新的200G空间,其中 100G 给 /home 单独分区,剩余的100G留作备用。

网上查到的教程,命令行方式大多数看着感觉有点吓人,不怎么靠谱,而 gparted 无法直接缩小根分区大小。这里分享一种简单的、图形化的方法,看起来不是那么吓人。

给 /home 单独分区是为了便于捣鼓操作系统,如果操作系统寄了,重装系统也能保证家目录下的数据不丢失。未来也可以和其他多个 linux 共享 /home 分区。

基础知识

使用 gparted 管理磁盘空间,这是linux的一个图形化的磁盘管理工具。界面和 windows 的磁盘管理器有点类似,功能也相似但是更强大(毕竟windows的磁盘管理器没法操作 ext4)。但是无法直接对当前操作系统的根目录缩减大小,我猜是因为工作的时候没法直接动。因此我猜测可以使用别的操作系统

UUID 是磁盘分区的编号,linux启动的时候需要用到该内容。在本人的电脑里,/etc/fstab 和 /boot/grub/grub.cfg 里标志了系统启动的时候需要使用正确的 UUID 才能挂载根目录。修改分区可能会对对应分区的 UUID 产生影响,因此需要修复上述的两个文件。

live cd 是 linux 的一种ram os,意思是操作系统运行的时候,整个操作系统的文件存储在内存里,不需要修改硬盘数据。一般用于修复受损的 linux 操作系统。

我的整体方案是:

  1. 制作 live cd 启动盘
  2. 进入 live cd 系统,修改电脑硬盘分区
  3. 修改系统文件
  4. 重启操作系统

在操作之前需要确定根目录安装在哪个分区,通过lsblk能够看到。

$ lsblk 
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme0n1     259:0    0 931.5G  0 disk 
├─nvme0n1p1 259:1    0   128M  0 part 
├─nvme0n1p2 259:2    0   260M  0 part /boot/efi
├─nvme0n1p3 259:3    0 188.8G  0 part /mnt/win/C
├─nvme0n1p4 259:4    0   300G  0 part /mnt/win/E
├─nvme0n1p5 259:5    0 141.3G  0 part /mnt/win/D
├─nvme0n1p6 259:6    0  1000M  0 part 
├─nvme0n1p7 259:7    0   299G  0 part /
└─nvme0n1p8 259:8    0   977M  0 part [SWAP]

我的是 /dev/nvme0n1p7,需要记住这一点。也可能是诸如 /dev/sdax的形式。

制作 live cd 启动盘

下载 live cd 的 ISO 镜像,不一定要与原操作系统相同,但是要有 gparted 工具(我不知道没有 gparted live cd 的能不能登录之后使用网络下载,我猜应该可以),比如 kali 的 live cd 就有。不过 kali livecd 太大,可以使用 512MB 的 GParted Livecd;GParted Livecd 功能太简陋,可以使用作者自己制作的,大小 1.6GB。

kali live cd 下载地址(中科大源,不是官方源,从这里下载网速快):链接,根据电脑硬件,选择 live iso

制作启动盘,方法很多。需要找一个空白U盘制作。我使用的是ventory(官网链接),因为制作多个系统的启动盘很方便,基本上就是无脑操作,占用U盘的空间就是 iso 占的空间,剩下的空间还能装自己的东西。

可以参考这个教程,在 U 盘安装 ventory 之后,打开U盘,把下载的 iso 拖进 U 盘就行了。

进入 live cd 系统

U盘插入电脑,选择U盘启动(这一步安装过电脑系统的人应该都很熟悉),选择 live-cd 的 iso,一路默认选项进入 live cd 系统。打开终端。

首先拍照记录硬盘各分区的 UUID,命令是 sudo blkid | sort

执行 gparted 命令,修改之前记住的 /dev/nvme0n1p7 的大小。建议留出的空间都放在后边(也就是说,“之前的可用空间”填0,多出来的都放在之后的可用空间),因为这样 UUID 大概率不变:

选好之后点击调整大小,然后点击上边的对号执行操作。

需要有一定的时间。

执行 lsblk 发现大小已经变了,blkid 发现根目录系统的 UUID 没有变化:

如果变化,那么需要挂载根目录,进去修改 /etc/fstab 和 /boot/grub/grub.cfg ,把原来根目录分区的 UUID 改成新的。如果像我之前那样,调整大小之后新的分区在原有分区位置的前端,那么 UUID 应该不变。

重启操作系统并迁移 /home

重启后发现能正常进入操作系统,说明根目录没有问题。现在需要的就是对剩余空间进行分区并挂载到 /home ,这里仍然使用 gparted

选择未分配,右键新建,调整后点击添加:

点击上边的对号,完成新建分区。

此时出现了新的 /dev/nvme0n1p9 ,这就是计划的 /home 分区的位置。

blkid,确认其他分区的 UUID 都没有变化:(如果发生变化,那我也不知道怎么办)

复制上边的 /dev/nvme0n1p9 的 UUID 内容。

sudo vim /etc/fstab 修改 /etc/fstab 文件,添加一行:

UUID 是上面复制的 UUID;这个会在重启之后生效并自动挂载。

把 /home 的内容复制进去:

$ sudo mkdir /mnt/tmp # 创建临时目录
$ sudo mount /dev/nvme0n1p9 /mnt/tmp/ # 挂载新的目录
$ sudo rsync -av /home/* /mnt/tmp/ # 复制家目录下的全部文件
$ umount /mnt/tmp # 关闭挂载

现在需要把旧的 /home 重命名,否则重启之后挂载硬盘的 /home 会和根目录的 /home 产生冲突。但是显然在有普通用户登录的时候是无法这样操作的,因为需要读写 /home 目录。因此需要退出普通用户,用 root 的纯命令行解决。

首先登录 root 用户并退出全部普通用户。这里我的方法是,按 ctrl+shift+F1 进入 tty1 的纯命令行界面,登录 root 用户:

依次执行命令:

w # 查看有哪些普通用户。如果有命令行界面的用户,则直接 logout 退出。
ps -e | grep -i xorg # 我是 xfce 桌面,感觉这是唯一有效退出图形界面普通用户的方法。
kill xxxx # 关闭上面的进程 PID 从而退出所有普通用户
mv /home /home.back # 给 home 留出来名字,不删除是为了做备份
mkdir /home # 新建挂载点
mount /dev/xxx /home # 把刚刚新建的 home 分区挂回去

之后按 ctrl+alt+F7 进入图形界面,登录普通用户,发现能正常登陆。

重启也能正常登陆。至此迁移完毕,可以把 /home.back 删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/731765.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5_Spring Bean Scope 失效分析

Scope作用域 1. Scope类型有哪些 截至目前为止,Spring 目前有如下几种scope:singleton: 从ioc容器中返回的都是同一个对象 prototype: 从ioc容器中可以返回多个对象 request: 该类型的bean的生命周期就和request请求一样,每当有request请求发送过来,就会创建一个bean对象放入…

Profibus DP主站转Modbus模块连接马达保护器案例

在工业自动化控制系统中,Profibus DP和Modbus是常见的通信协议,在同一现场还有可能遇到Modbus协议,ModbusTCP协议,Profinet协议,Profibus协议,Profibus DP协议,EtherCAT协议,EtherNET协议等。本案例介绍了如何使用Profibus DP主站转Modbus模块(XD-MDPBM20)来实现与马…

platform 设备驱动实验

platform 设备驱动实验 Linux 驱动的分离与分层 代码的重用性非常重要,否则的话就会在 Linux 内核中存在大量无意义的重复代码。尤其是驱动程序,因为驱动程序占用了 Linux内核代码量的大头,如果不对驱动程序加以管理,任由重复的代码肆意增加,那么用不了多久Linux 内核的文…

ENVI深度学习V1.0操作教程

软件试用:https://www.cnblogs.com/enviidl/p/16275745.html计算机环境要求:https://www.cnblogs.com/enviidl/p/16309506.html教程下载链接:https://pan.baidu.com/s/15D3c6MXTAnN3STfKuzUg1g 提取码:hek6目录 ENVI Deep Learning V1.0操作教程 1 ENVI Deep Learnin…

ENVIDeepLearning1.1新功能预览

ENVI Deep Learning 1.1 Tech Preveiw目前已经发布,仅在内部测试。迫不及待的要跟大家分享一下新的功能,应该跟1.1正式版没有太大区别。 此版本包含了几个关键改进和新功能:多要素/多类别支持。 新增项目管理功能,用于管理训练图像和ROIs。 训练过程中的状态信息显示改进。…

利用ENV/深度学习工具提取防尘网覆盖信息

为扬尘治理和保护环境,城市的裸露地表、易扬尘物料等要求覆盖防尘网。防尘网一般由聚乙烯材料制作的网状物,颜色主要为黑色和绿色。 本文介绍利用遥感影像和ENVI深度学习工具快速提取防尘网覆盖信息,数据和处理环境如下: 数据源:标准景高分二号3.8米4波段多光谱数据,16bi…

数理方法考前必背

特殊函数 勒让德多项式 前几个勒让德多项式 \[\begin{aligned} P_{0}(x) & = 1 \\ P_{1}(x) & = x=\cos \theta \\ P_{2}(x) & = \dfrac{1}{2}\left(3 x^{2}-1\right)=\dfrac{1}{4}(3 \cos 2 \theta+1) \\ P_{3}(x) & = \dfrac{1}{2}\left(5 x^{3}-3 x\right)=…

机器人建模与控制复习总结

数学补充 符号约定 (1) 一般大写字母的变量表示矢量或矩阵,小写字母的变量表示标量 (2) 左上标和左下标表示变量所在的坐标系 如:\(^AP\)表示坐标系\(\{A\}\)中的位置矢量;\(_B^AR\) 是确定坐标系\(\{A\}\)和坐标系\(\{B\}\)相对关系的矩阵;无左上、下标的位置矢量一般是世…

润生商团出行打车模块(环境安装)2

微服务认证最佳方案 BFF(Backends For Frontends)是“服务于前端的后端”的简称。它的核心思想是在设计后端微服务API接口时,考虑到不同设备的需求,为不同的设备提供不同的API接口。 在没有BFF层的情况下,客户端需要直接访问服务器的公共接口。而在引入BFF层后,客户端不再…

工程热力学复习总结

热力学系统 热力学状态:某一瞬间系统所呈现的宏观物理状况 状态参数:描述物系所处平衡状态的宏观物理量 状态参数是宏观量,是大量粒子的统计平均效应,只有平衡态才有状态参数。状态参数是热力系统状态的单值函数,物理上与过程无关,数学上其微量是全微分。状态参数分类有:…

ENVIDeepLearning1.1正式版发布

ENVI DL 1.1 包含许多重大改进,以提高可用性和训练性能。多类别架构(Multiclass Architecture)深度学习标记工具(Deep Learning Labeling Tool)集成TensorBoard(可查看训练状态)测试系统支持状态其他更新编程申请试用1 多类别架构(…

塑性力学复习总结

基本概念 弹性和塑性 弹性:若外力不大,则外力除去后变形可以全部恢复。这种性质称为材料的弹性,这种可以全部恢复的变形是弹性变形。这时称物体处于弹性状态。 塑性:当外力超过一定限度,则物体将产生不可恢复的变形。这种变形不可恢复的性质称为塑性,不随应力消失而恢复的…