V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
outman87
V2EX  ›  Linux

救命! boot 分区被破坏!

  •  
  •   outman87 · Jun 10, 2022 · 4620 views
    This topic created in 1422 days ago, the information mentioned may be changed or developed.
    SUSE 误删 libc.so.6 。而后从光盘启动,选择 Automatic Repair(重大失误)。结果人工智障似乎把原先的 boot 分区( sda1 )给破坏了—filesystem type 变成了 swap (隔天才发现)。开机直接 grub >

    根据网路上的教程,新建一个 boot 分区( sdb1 ),grub 也装好了。但是 kernel 无法安装,也不能从原来的 boot 分区 cp—原因是 swap 无法 mount 。咋办呢?各位老师,救救萌新。从昨天早上折腾到现在...心塞。







    24 replies    2022-06-13 17:33:09 +08:00
    KagurazakaNyaa
        1
    KagurazakaNyaa  
       Jun 10, 2022
    考虑使用 fat 的文件系统作为 /boot 的文件系统
    j0ck1e
        2
    j0ck1e  
       Jun 10, 2022
    先直接注释掉,没 swap 一样跑
    7RTDKSAK
        3
    7RTDKSAK  
       Jun 10, 2022
    你还有 suse iso ?

    启动 iso ,安装到一块空 u 盘,注意一定要手动分区

    然后拿新安装地 os 的启动分区来启动旧 rootfs ,只需要手写一下 grub.cfg 就行了

    (我乱说地不负责)
    e7
        4
    e7  
       Jun 10, 2022
    swap 功能上就不是能挂载的,换个文件系统比如 xfs 、ext4 格式化,然后拷贝文件过去,最后 grub-install 写引导记录就可以了,只是思路具体操作还是搜下
    outman87
        5
    outman87  
    OP
       Jun 10, 2022
    @XiLingHost 请教下 /dev/sda1 如何修改 fs type 呢。感谢。
    j0ck1e
        6
    j0ck1e  
       Jun 10, 2022
    mkfs.ext4 /dev/sda1
    @outman87
    outman87
        7
    outman87  
    OP
       Jun 10, 2022
    @e7 不知道怎么更改 fs type 。格式化吗?会不会把里面的数据给清空了?我是菜鸟...感谢
    spike060
        8
    spike060  
       Jun 10, 2022
    EFI 分区(/boot)使用 FAT32 文件系统,可用 mkfs.vfat 进行格式化,完成后可以将内核文件和 initramfs 文件拷贝至该目录。
    最后使用 grub 命令行加载内核启动系统。
    j0ck1e
        9
    j0ck1e  
       Jun 10, 2022
    @outman87 格式化当然清空了
    KagurazakaNyaa
        10
    KagurazakaNyaa  
       Jun 10, 2022
    mkfs.vfat -F32
    用这个命令来重新制作文件系统
    FYFX
        11
    FYFX  
       Jun 10, 2022
    你这个其实和 arch 安装引导的过程差不多吧,如果是 UEFI 的话
    先 mkfs.fat -F 32 /dev/efi_system_partition 格式化一下引导分区 https://wiki.archlinux.org/title/installation_guide#Format_the_partitions
    然后挂载 efi 分区,再用 grub 安装应该就行了
    https://wiki.archlinux.org/title/GRUB#Installation
    outman87
        12
    outman87  
    OP
       Jun 10, 2022
    @j0ck1e @spike060 谢谢几位老师,请问 mkfs 把 /dev/sda1 格式化以后,内核文件和 initramfs 文件从哪里拷贝过来?
    j0ck1e
        13
    j0ck1e  
       Jun 10, 2022
    @outman87 从 iso 镜像里面拷贝
    outman87
        14
    outman87  
    OP
       Jun 10, 2022
    @FYFX 谢谢,我啃啃
    outman87
        15
    outman87  
    OP
       Jun 10, 2022   ❤️ 1
    @j0ck1e @XiLingHost @spike060 @e7 @7RTDKSAK 感谢各位大佬的相助。从虚拟机另一台 suse 11 上把 boot 目录拷贝到 U 盘,再挂载到故障系统上。进入救援模式,覆盖到 sdb1 的同名目录。重启后再用 grub 命令人工引导,启动成功了!哭了...
    ShellRank
        16
    ShellRank  
       Jun 10, 2022
    恭喜 op 渡劫成功
    basncy
        17
    basncy  
       Jun 10, 2022   ❤️ 5
    论从零开始安装 archlinux 的重要性.(学习 linux 启动流程)

    另一种方案(没有多余备份情况下, 重新生成 boot 分区里的内容):
    U 盘启动 live CD, mount 好各种挂载点, chroot 到根分区
    1. 生成 fstab
    2. 重装 grub
    3. mkinitcpio 生成内核和 ramfs
    4. grub-mkconfig
    5. reboot
    ToBeHacker
        18
    ToBeHacker  
       Jun 10, 2022
    通过 grub 不是也能启动起来么,指明内核参数就可以了
    james122333
        19
    james122333  
       Jun 10, 2022 via Android
    ….................
    basncy
        20
    basncy  
       Jun 10, 2022
    @ToBeHacker 哪里看的半吊子教程? 你当企业版 linux 是学生玩的开发板啊?
    ToBeHacker
        21
    ToBeHacker  
       Jun 11, 2022
    @basncy 🤣
    ToBeHacker
        22
    ToBeHacker  
       Jun 11, 2022
    basncy
        23
    basncy  
       Jun 12, 2022
    @ToBeHacker 嗯, 书上就是这么说的:
    把 /boot/grub/menu.lst 或 /boot/grub/grub.cfg. 备份, 然后 rm -rf /boot ; reboot 进入 GRUB> 界面后, 照着 menu.lst 或 grub.cfg 的命令敲一遍试.
    kaiger
        24
    kaiger  
       Jun 13, 2022
    @basncy

    无法启动,我直接重装系统( oTo )
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2681 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 14:47 · PVG 22:47 · LAX 07:47 · JFK 10:47
    ♥ Do have faith in what you're doing.