当前位置:首页 > 尘凡 > 正文内容

Linux修复引导

满纸空言3年前 (2021-11-09)尘凡22220

 

# 1.查看系统下的所有硬盘及分区情况
sudo fdisk -l
# /dev/sdc 是我们的新硬盘,并且没有做分区和格式化

# 2.新盘分区 创建3个分区(2个也可以,boot可以在根目录下)
sudo fdisk /dev/sdc
# 1.n p 1  2048     1026048  设置500M的boot分区
# 2.n p 2  1028096  69158912 设置32G 的swap
# 3.n p 3       剩余的是根目录 /
# 4.w  保存并退出

# 如果磁盘为4T,用fdisk只能分2T的空间,我们需要用 
parted /dev/sdb
# 2.1 将磁盘格式变成gpt的格式(因为parted只能针对gpt格式的磁盘进行操作)
转换:(parted) mklabel  gpt
分区:(parted) mkpart  primary  1  500    (分第一个主分区500MB)
分区:(parted) mkpart  primary  501  1000  (分第二个主分区500MB)
分区:(parted) mkpart  logical  1001  2000 (分第三个逻辑分区1000MB)  
        (parted的逻辑分区不用先分扩展分区,直接一步到位)
查看:(parted) p
退出:(parted)quit             ( parted分区自动保存,不用手动保存 )


# 3.格式化3个分区 第二个为swap
mkfs -t ext4 /dev/sdc1
sudo mkswap  /dev/sdc2
mkfs -t ext4 /dev/sdc3
# /dev/sdc3挂载到 mnt/
sudo mount /dev/sdc3 mnt/

# 4.复制整个系统到新分区(可以排除一些不需要的文件)
# /proc  运行内核和环境的虚拟化视图 kcore很大
# /mnt临时挂载目录  /tmp临时文件 
cd /mnt/
sudo rsync -av --exclude='/mnt' --exclude='/tmp'  --exclude='/sys'  \
      --exclude='/lost+found'  --exclude='/proc'   /  /mnt

# 或者用tar 备份系统 -
# https://blog.csdn.net/whatnamecaniuse/article/details/60754546
tar zcvpf /backups/fullbackup.tar.gz  / --exclude=proc --exclude=/lost+found \
--exclude=sys --exclude=dev/pts --exclude=tmp --exclude=backups
#tar xvpfz backup.tgz -C /


# 5. /mnt/etc/fstab 修改UUID
sudo gedit /mnt/etc/fstab
sudo gedit /mnt/boot/grub/grub.cfg
# 查看 sdc 的UUID
sudo blkid
/dev/sdc1: UUID="7612775b-4899-470d-a57b-9fb6ce75481f" TYPE="ext4" 
/dev/sdc2: UUID="8b3a8fb7-439f-45cf-9bdc-192e45964b8b" TYPE="swap" 
/dev/sdc3: UUID="733414aa-4b61-424c-8aa8-850cec0dc0f3" TYPE="ext4" 
# 注意 /mnt/etc/fstab中swap 和跟目录的都需要跟换,其它自动挂载的根据情况删除
# 替换grub.cfg中的 UUID为新盘的UUID


# 6.修复引导
sudo grub-install --boot-directory=/mnt/new/boot/  /dev/sdc
sudo grub-install --recheck --root-directory=(新硬盘/分区挂的boot目录,或者直接是boot) /dev/sdx(新硬盘的设备文件名) 
--recheck选项是重新检查系统以覆盖新分区/boot/grub下的device.map文件 

#卸载新硬盘,用新盘重启
sudo umount /dev/sdc

 

 

查找grub所在的分区,ubuntu没有另外建分区是在/boot/grub文件夹

# 第一步:输入ls出现(hd0,msods1),(hd0,msdos5),(hd0,msods7)
# 不同的电脑不一样,这是我电脑中的磁盘分区,和系统中的表示方法不一样,
# linux中一般是/dev/sda123 表示,grub一般是 (hd0,msods1)表示
ls

# 第二步:输入set,查看现在电脑的root 和prefix所在的位置
set

# 第三步:查找你的grub目录(当然如果你知道你grub目录在哪里更好)
ls/(hd0,msdos1) 
# 再按enter看看有没有boot文件夹,如果没有,就输入ls/(hd0,msdos5)等等,依次类推。

# 第四步:找到boot文件夹在哪里之后,假设在(hd0,msdos7)中,
set root=(hd0,msdos7)
set prefix=(hd0,msdos7)/boot/grub
insmod normal
normal

# 第五步:之后回车之后应该出现启动界面

# 修复grub
sudo update-grub
sudo grub-install /dev/sda 
reboot #重启

 

grub rescue>ls
grub rescue>set root=(hd0,2)
grub rescue>set prefix=(hd0,2)/grub
grub rescue>insmod normal
grub rescue>normal

参考:

https://blog.csdn.net/luo617/article/details/81322463

扫描二维码推送至手机访问。

版权声明:本文由满纸空言发布,如需转载请注明出处。

本文链接:https://mzky.cc/post/70.html

分享给朋友:

“Linux修复引导” 的相关文章

nmcli参数的各种缩写4年前 (2021-04-21)
setfacl命令4年前 (2021-04-21)
btrfs格式数据提取4年前 (2021-04-21)
Gox让交叉编译超级简单4年前 (2021-05-24)
解决goland显示导入异常4年前 (2021-07-19)

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。