• 记 Win10


    起因是正常使用的archlinux做滚动更新,结果貌似有一个盘块写坏了(?)。
    手上没有U盘,进入不了linux,不好做fsck。于是直接就直接用win10了。

    取消Fast Boot

    当晚进入linux发现出现问题

    Loading kernel...
    error: invalid cluster 0
    

    应该是win10把efi分区盘块搞坏了,只要把BIOS的Fast Boot取消掉即可防止此问题。
    但是明显我盘块已经是坏掉了,用cdlive进去看了看,发现是vmlinux坏了。

    这里稍微提一下grub引导linux的步骤(详情请参考/boot/grub/grub.cfg,或grub菜单中按c健):
    装载必要的模块
    设置root(即efi分区)
    载入vmlinux
    执行initrd

    发现问题就好说了,livecd进入根目录重新安装linux即可

    ...
    arch-chroot /mnt
    pacman -S linux
    

    至此问题解决。

    win10+双linux系统安装

    考虑到每次系统出问题时,手边没有u盘的尴尬,决定再装一个应急的linux系统。
    磁盘空间有限,把swap分区让出来好了(主要是因为加了个内存条,大概是用不着对换了吧)。

    swapoff /dev/sda5
    mkfs.ext4 /dev/sda5
    

    接下来就用刚才的livecd安装即可。

    EFI分区过小

    我的efi分区当时分得特别小,只有100M,同时还有其他系统的内容。所以安装新的vmlinux和initramfs空间绝对是不够的。
    想办法删点东西。
    /boot/Boot/Fonts
    /boot/EFI/Microsoft/Boot/Fonts
    initramfs-fallback.img
    这些除了其中的中文字体(英文字体自带),我都不要了

    安装引导的注意事项

    安装引导时请注意

    1. 安装os-prober,用于发现其他两个系统(即win10和正常archlinux)
    2. 正常生成grub.cfg
    3. 区分正常系统和Emergency系统的vmlinux和initrmfs,同时修改grub.cfg
    pacman -S os-prober
    grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=emergency
    grub-mkconfig -o /boot/grub/grub.cfg
    
    # 首先区分vmlinux, initramfs
    mv /boot/vmlinux /boot/vmlinux-emergency
    mv /boot/initrmfs.img /boot/initramfs-emergency.img
    
    # 其次修改grub.cfg
    # 把emergency对应的内容改为vmlinux-emergency, initramfs-emergency.img
    vim /boot/grub/grub.cfg
    

    至此完活。

    肯定有人问为什么不共享vmlinux和initramfs呢?
    我考虑到正常和应急系统的内核版本很可能是不一样的,事实上我在共享的情况下尝试启动正常系统失败。

    [Failed] Failed to mount /boot
    
    # 看看boot.mount
    systemctl status boot.mount
    # 发现报错信息:
    # mount: unknown filesystem type 'vfat'
    

    首先想到grub的载入fat模块是否存在问题,但是启动脚本中明显写着isnmod fat
    其次就是linux自己的模块载入了

    modprobe vfat
    # 报错:/lib/modules/5.1.15-arch1-1-ARCH不存在
    

    笑话,我正常系统内核版本是5.1.14,紧急版本应该是5.1.15,此处出现这个问题就是vmlinux和initramfs共享造成的。

    于是区分是必然的。

  • 相关阅读:
    php使用iconv进行从utf8转为gb2312字符编码出错解决方案
    PHP 的 cURL库快速入门文档
    转载 DISCUZ!X1程序目录、文件列表及模板文件结构说明,帮助大家二级开发
    下拉菜单部分选项不允许选择
    Htaccess文件用法集锦
    MYSQL server has gone away解决办法
    Discuz X 模板中获取用户头像
    CSS Hack
    VS轻松保存重复多用的代码片段
    三菱FX PLC编程口通讯协议详解
  • 原文地址:https://www.cnblogs.com/tanglizi/p/11089184.html
Copyright © 2020-2023  润新知