我几天前删除了启动分区,但无法恢复。为了解决这个问题,我在闪存驱动器上安装了具有相同参数的相同映像,然后将该启动分区复制到我的硬盘驱动器上。我现在收到一条错误消息,表明 vmlinuz 映像通过 uuid 搜索根分区,并且可以找到我的硬盘驱动器。让事情变得更复杂的是,我的 hd 是 lvm+LUKS。我可以编辑 vmlinuz 和 initrd.img 吗?还有其他方法可以解决这个问题吗?或者我应该放弃它并重新安装?
我正在使用 32 位 Debian Jessie,并且能够访问硬盘驱动器上的所有剩余文件。
编辑——我没有旧的 vmlinuz 或 initrd.img,它们已被删除。
答案1
您的引导参数由引导加载程序在启动时将参数传递给 vmlinuz 来处理。假设您正在使用 grub,那么grub.cfg
将会有一个参数表明root=
应该包含您的 UUID。由于您使用 LUKS,更困难的部分是可能有一个 initramfs 映像在启动时启动并实际安装和解密您的分区,并且很可能将 UUID 存储在映像内。
最简单的恢复是找到一个支持 LUKS 的 live 发行版并从它启动(Debian 安装通常在 livecd 启动时有一个恢复模式)。然后挂载加密的根目录、解密、挂载 boot,然后 chroot 到已挂载的分区。进入后,您可以重新运行 ramdisk 实用程序,看看是否会更新您的所有信息。确保/boot
在 chroot 之前也安装了。
update-initramfs -c -k <kernel>
update-grub
退出 chroot,卸载所有内容并重新启动。
答案2
1) 从 Live CD 启动
2)像ext4一样再次创建启动分区
3) 在启动分区上安装 Linux 映像
sudo mount /dev/sdax /mnt/myroot
(其中 sdax 是您的根分区)
sudo mount /dev/sday /mnt/myroot/boot
(我们需要挂载 boot,因为它位于另一个分区 /dev/sday)
sudo mount ‐‐bind /dev /mnt/myroot/dev
sudo mount ‐‐bind /proc /mnt/myroot/proc
sudo mount ‐‐bind /sys /mnt/myroot/sys
挂载所有其他分区/boot
、/var
、等/usr
。/tmp
确保您已将它们全部挂载。
复制resolv.conf
cp -L /etc/resolve.conf /mnt/debian-example/etc/resolve.conf
chroot
sudo chroot /media/bin:/sbin:/usr/bin:/usr/sbin /mnt/tmp...
重新安装丢失的内核映像
从根目录移动 initrd.img:
mv initrd.img initrd.img.OLD
安装Linux镜像
apt-cache search 'linux-image'
apt-get install linux-image-x.x-generic
换成linux-image-x.x-generic
你的。
恢复 grub
sudo grub-install /dev/sda
重启。
答案3
就我而言,根分区默认不挂载。必须通过手动安装的地方shell root 提示符启动时按 键,使用该命令的高级启动选项ctrl+alt+f3 | f4 | f5
。
fsck
挂载前对所有分区执行彻底检查。lsblk
将显示所有分区名称。fsck /dev/{partition-name}
重新挂载所有具有读写访问权限的分区
mount -n -0 remount, rw /
- 类型
exit
和恢复你的靴子没有重新启动 - 您现在应该可以登录了。
为一个永久解决方案,必须找到根分区
6.使用命令lsblk
或手动从目录/dev/your-root-partition中查找。你可以 cat /etc/fstab 来找到根分区 它会说
# / was on /dev/{your-partition-name} during installation
编辑
fstab
中的 来/etc/fstab
在启动时自动挂载根分区读写访问并添加/dev/{your-boot-directory} / ext3 rw 0 1
保存文件并更新你的 grub
sudo update-grub
reboot
现在应该可以正常登录了。
学分:
https://bbs.archlinux.org/viewtopic.php?id=118114