固态硬盘使用f2fs作为根分区安装linux
前言
在固态硬盘上,f2f比起ext4之类的文件系统在性能和寿命上都有较大优化。所以我决定使用f2fs来作为我debian的根分区。
碰到的问题
- 安装debian过程中,到硬盘分区的阶段没有f2fs文件系统的选项
- grub默认不支持f2fs
- initramfs默认不支持f2fs
对策
因为grub不支持f2fs,所以boot必须和根分区独立出来,且/boot分区的文件系统格式必须是grub能识别的。这样grub才能引导/boot分区中的内核。然后由/boot分区中的带f2fs模块的initrd来识别f2fs根分区继续完成操作系统启动。总结起来就是 grub2 -> /boot分区 (载入内核,载入带fsfs模块的initrd) -->通过支持f2fs的initrd引导根分区操作系统。
安装过程简述:
1.使用常规流程安装debian,要分配独立的boot分区。进入系统后,安装f2fs-tool, 并且更新initramfs(也就是更新initrd文件),此时,这个系统在备份操作前就已经具备识别f2fs的能力,initrd也能在引导过程中识别f2fs的根分区了。
2. 进入debian liveCD,使用tar命令备份固态硬盘linux根分区。live系统也安装f2fs-tool, 这样live系统就具备格式化固态硬盘linux根分区的能力。格式化固态硬盘linux根分区为f2fs后,再使用tar命令将刚才的备份恢复到f2fs的根分区。
3. 修改f2fs中的etc/fstab中的uuid,因为上面格式化操作会导致uuid变化
4. 在live系统中,chroot到固态硬盘的linux,更新grub,使之能脱离u盘独立引导固态硬盘的操作系统。
我的实际操作步骤
0.警告
任何时候,不要相信序号,比如sda3 sda2。而是执行下面的命令,通过多个指标判断,比如分区大小、格式等。否则数据误删很麻烦。
这些命令有:
fdisk -lu 或 fdisk -lu /dev/sdXn
lsblk
lsblk -f (加了-f选项后有变化,自己试一下)
blkid
1. 准备
1-为了方便和安全起见,最好准备两个u盘,一个用于安装操作系统,一个用于放debian liveCD。存放liveCD的U盘能让你在电脑操作系统起不来的时候,可以救急。
2-中途涉及多次联网的步骤,可以使用网线,也可以手机通过usb数据线共享4g流量或wifi数据到电脑(电脑能看到类似enp4s0u1的网卡就是手机usb共享4G网络的网卡,这里的u就是usb的意思)。当然还可以用热点共享手机的4G流量(liveCD模式下命令行连热点的时候,没有前两种方式那么方便,所以我一般是用usb线连接手机共享手机的4G网络)
2. 分区
sda1: ESP(EFI System Partition----EFI系统分区)
sda2: BOOT分区,btrfs
sda3: 根分区,btrfs
sda4, 交换分区,swap
3. 使用网络安装debian10
1- 我从debian官网下了个最小化的iso,大概300m,也有50M的mini.iso。之所以使用网络安装是因为,我发现通过网络安装debian的问题最少(比如字体、输入法、中文显示等)。
2- 刻录安装debian用的iso文件到U盘,这里使用dd,win下可以使用ultraISO。(同样的方式,用liveCD的ISO刻录到另一个u盘,作为意外救急的准备)
dd if=netinst.iso of=/dev/sdX bs=1M #注意这里是sdX(u盘),不是sdXn(u盘的某分区)。sdX是u盘,不要搞错,否则硬盘数据丢失
3- 把刻录好的U盘插到笔记本上,使用u盘启动。分区的时候按照上面的方式分,记住esp分区和boot分区必须和根分区分开。建议安装的时候,最小化安装,首先保证流程通了,再尝试带桌面的全量安装,这样比较稳妥。
4- 安装完系统后,进入系统,终端执行命令安装f2fs-tools: apt install f2fs-tools
5- 在/etc/initramfs-tools/modules文件末尾添加三行:
f2fs
crc32_generic
crc32_intel
然后执行update-initramfs -u更新initrd。通过这两个步骤,就可以保证备份根目录前,initrd镜像文件中存在f2fs模块了,能支持f2fs根分区引导了。
6- 格式化刚刚安装系统用的u盘,为下面第4大步中备份用途做准备。
4. 备份根分区
使用刻录了**LiveCD**的U盘启动后进入live系统
执行sudo su - 切换到root用户
执行mkdir /tmp/3; mount /dev/sdX3 /tmp/3 (假设SSD的根分区位于sdX3, 这里把还是btrfs的根分区挂载到/tmp/3目录)
执行mkdir /tmp/u; mount /dev/sdY1 /tmp/u (这里假设/dev/sdY1是备份u盘的第一分区, 执行完命令后,备份用的u盘就挂载到/tmp/u目录了)
然后执行下面命令:
cd /tmp/3 #cd的ssd的根分区
tar cpf /tmp/u/root.tar --one-file-system --exclude=lost+found --exclude=dev . #将当前目录(ssd的根分区)下的所有文件备份到/tmp/u/root.tar文件。这里是冷备份,proc、sys目录是空的,所以不需要像热备份一样带--exclude=/proc --exclude=/sys,也不需要--exclude=boot,因为冷备份时boot只是空的挂载点。注意排除目录的权限,后面恢复系统之前要按照原来权限建目录。注意,这里有个英文点号。此时固态硬盘根分区已经备份到备份u盘中了。继续下面的第5大步
5. 修改固态硬盘linux根分区为f2fs
1-为了下载更快,修改live系统的软件源 vi /etc/apt/sources.list为中科大的源。执行apt update (可能没网络。需要连网线,或手机通过usb数据线共享4g或wifi网络到电脑,然后执行dhclient获取dhcp自动配置的ip地址才能联网)
2-执行apt install f2fs-tools 此时live系统就具备了识别和格式化f2fs的能力
3-执行umount /dev/sdX3 #取消ssd根分区的挂载,准备格式化分区为f2fs
4-执行fdisk /dev/sdX进入fdisk的交互命令中
执行p命令查看当前分区,找到固态硬盘的linux根分区(如前文说的,通过分区大小判断是不是linux根分区)
执行d命令删除固态硬盘linux根分区
执行n命令新建分区
执行w命令将刚才的变更写入固态硬盘
执行mkfs.f2fs /dev/sdXn (执行前,务必使用fdisk -lu /dev/sdX来确认根分区是哪个,因为序号会在上面的分区操作中发生变化)
现在执行lsblk -f就可以看到固态硬盘的linux根分区变成f2fs格式了。
6.恢复备份
1- mount /dev/sdX3 /tmp/3
cd /tmp/3
mkdir dev; chmod 755 dev # 前面tar备份的时候排除了dev目录,所以这里要新建
tar xpf /tmp/u/root.tar --numeric-owner #恢复备份
2-上面删分区、建分区操作导致uuid变化。需要修正uuid。
执行lsblk -f或blkid命令获取f2fs根分区的uuid
执行 vi /tmp/3/etc/fstab 找到根分区的uuid修改成正确的值。
7.更新grub:
mount /dev/sdX2 /tmp/3/boot #把ssd上的boot分区挂在到ssd根分区的boot目录
mount /dev/sdX1 /tmp/3/boot/efi #把ssd上的esp分区挂到ssd根分区boot目录的efi目录下
mount --bind /dev /tmp/3/dev
mount --bind /proc /tmp/3/proc
mount --bind /sys /tmp/3/sys
mount --bind /run /tmp/3/run
chroot /tmp/3 #chroot到固态硬盘的linux
update-grub2 #可能会报错,但是不要紧
执行poweroff,拔掉u盘,启动即可进入操作系统。
另外: 意外有时不可避免,比如grub引导不了,initramfs无法挂载根分区等。救急操作参考本博客的另一偏随笔:"桌面版linux问题记录"
固态硬盘使用f2fs作为根分区安装linux的更多相关文章
- [双硬盘GPT分区安装linux] ----安装
最近机器学习课程需要用到pytorch, 基于cuda8的pytorch的需要,最终决定还是要安装一个linux系统在我的windows10机器上.本篇记录安装过程备用. 本人笔记本是联想Y520,系 ...
- 添加新硬盘,扩展Centos7根分区
##背景介绍,系统安装时,分配的硬盘容量太小,根分区空间不够用,现添加一个新硬盘,通过以下步骤来扩展centos7根分区 [root@t201 ~]# df -h 文件系统 容量 已用 可用 已用% ...
- Pavilion M4-1016TX 加装固态硬盘(SSD)+UEFI+GPT安装WIN8.1
折腾了一天,终于将电脑加上SSD和装上系统,记录下,方便后面忘记使用. 步骤: 1.Pavilion M4-1016TX内置了mSata的接口,大小是全高的.ssd支持大小官方说法是测试过32g的,目 ...
- 联想拯救者15-isk安装固态硬盘与系统迁移教程
一.固态选择 首先知道拯救者15-ISK是m.2接口2280尺寸,支持PCIE协议NVMe接口标准.我加装的固态是HP EX900系列250G M.2 NVMe固态硬盘. 二.开盖安装 1.拯救者15 ...
- VM下--Linux根分区磁盘扩容
转载请注明源出处:http://www.cnblogs.com/lighten/p/6825938.html 1.缘由 由于需要对虚拟机中的软件进行升级,执行yum update的时候,整个更新包在8 ...
- VMware安装Linux,系统分区。
系统分区: 主分区<=4 扩展分区<=1 主分区+扩展分区<=4 扩展分区不能直接使用,必须再分成若干逻辑分区才能读写数据. 逻辑分区编号从5开始,1-4给主分区和扩展分区使用的,不 ...
- Linux从入门到放弃、零基础入门Linux(第三篇):在虚拟机vmware中安装linux(二)超详细手把手教你安装centos6分步图解
一.继续在vmware中安装centos6.9 本次安装是进行最小化安装,即没有图形化界面的安装,如果是新手,建议安装带图形化界面的centos, 具体参考Linux从入门到放弃.零基础入门Linux ...
- 笔记本光驱位安装固态硬盘及window系统一些过程记录
自己的笔记本电脑是13年买的 联想G480 i3 32位 2g内存,配置有点低,呵呵.当初刚毕业问家里要钱买的,到现在后悔没有买好一点的笔记本. 用着用着感觉内存不够用,网上就买了根内存条,买之前 ...
- 重装系统windows10/8/7,绝对纯净版永久激活的详细步骤和固态硬盘找不到分区的原因
简介:重装系统有两种: 一种是在线重装,可实现电脑双系统或多系统,也可单系统(重装在另外一个盘,再去格式化系统盘),这种方式比较麻烦,前提电脑能开机使用,但是一般能启动使用也没人去重装系统,但是不需要 ...
- 固态硬盘Ghost安装Windows 10无法引导的问题
机器配置如下: 电脑型号 技嘉 B360M POWER 台式电脑 操作系统 Windows 10 64位 ( DirectX 12 ) 处理器 英特尔 Core i7-8700 @ 3.20GHz 六 ...
随机推荐
- echarts在左下角添加单位
配置单位 option = { xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], ...
- golang: 模仿 VictoriaMetrics 中的做法,通过把局部变量放在自定义 Context 对象中来做到hot path 的 0 alloc
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 使用 benchmark 压测过程中通常会出现这样的信息: ...
- 【JS 逆向百例】百度翻译接口参数逆向
逆向目标 目标:百度翻译接口参数 主页:https://fanyi.youdao.com/ 接口:https://fanyi.baidu.com/v2transapi 逆向参数: Form Data: ...
- 【JS 逆向百例】网洛者反爬练习平台第四题:JSFuck 加密
关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后 ...
- zap自定义日志级别
简介 zap是有uber开发的一款日志库. zap提供了三个快速创建Logger方法: NewProduction: 以JSON格式记录Info级别及以上的标准错误日志 NewDevelopment: ...
- [P9253 [PA 2022] Ornitolog 2] 题解
题目 P9253 [PA 2022] Ornitolog 2 题目描述 给你一个长度为 \(n\) 的数列,求至少要修改多少个数才能让数列成为交替鹡鸰鸟鸣的音高序列. 思路 这道题有两种情况. 第一种 ...
- Windows10磁盘占用100%和内存占用高
前言 公司配备了两台电脑,两台电脑都是安装的win10系统,一台是磁盘占用高,另一台是内存可用低. 具体情况如下: 一台外网机 8g内存,安装win10 专业版,开机一天后经常出现内存不够用,但其实都 ...
- ROS节点通信(一)消息发布和订阅
目录 1.说明 2.创建工作空间 3.创建功能包 4.编写自定义传输类型文件 5.编写源代码 5.1.编写发布者代码 5.2.编写订阅者代码 6.编译 7.启动运行 8.查看ROS网络结构图 1.说明 ...
- CF1916E Happy Life in University 题解
题目: CF1916E Happy Life in University 链接: 洛谷 或者 CF 前置知识点: 线段树与HH的项链 先简单回顾下HH的项链这题怎么做的吧.先去掉莫队算法,因为这个不是 ...
- Matrix【未完成】
Matrix The fitrst thing we do,let's kill all the language lawyers. -- Henry VI, Part II The "pr ...