我有一台配备英特尔酷睿 i3-4030u(第四代)的戴尔 Inspiron 15 3000 系列。
我双启动 Windows 10 Home 64 位和 Ubuntu Gnome 16.04(grub2 是引导加载程序)。
我正在使用 Chromium,突然间,Ubuntu 冻结并且没有响应。我进行了强制关机并尝试重新启动;但它没有进入 grub2 启动屏幕(您可以在其中选择启动 Ubuntu、Windows 或其他选项),而是进入 grub 提示符:
grub>
如果我从 BIOS 中选择 Windows 启动管理器,它将启动;但 ubuntu 总是转到 grub 提示符。
当我使用该ls
命令时,我得到以下输出:
(hd0) (hd0,gpt9) (hd0,gpt8) (hd0,gpt7) (hd0,gpt6) (hd0,gpt5) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1) (hd1) error: failure reading sector 0x0 from hd1
Ubuntu 安装在硬盘 0 (hd0,gpt8) 的第 8 个分区中。我只有 1 个硬盘,只有 1 个硬盘插槽,并且 CD-ROM 中没有任何东西;所以我不知道它为什么尝试访问 hd1。
我做了一些研究,并尝试使用以下命令手动启动:
grub> set root=(hd0,8)
grub> linux /boot/vmlinuz-4.10.0-30-generic root=/dev/sda8 ro
grub> initrd /boot/initrd.img-4.10.0-30-generic
grub> boot
我通过查看文件夹获得了 vmlinuz 和 initrd 版本/boot
。
当我输入这些命令时,系统会尝试启动,但出现了一些错误,说明 systemd 在启动服务时无法加载某些模块,因为它找不到文件或功能未实现。
此外,还出现了一个错误:
Aug 07 08:46:50 AlexUbuntu kernel: FAT-fs (sda1): IO charset iso8859-1 not found
Aug 07 08:46:50 AlexUbuntu systemd[1]: local-fs.target: Job local-fs.target/start failed with result 'dependency'.
Aug 07 08:46:50 AlexUbuntu systemd[1]: local-fs.target: Triggering OnFailure= dependencies.
Aug 07 08:46:50 AlexUbuntu systemd[1]: boot-efi.mount: Unit entered failed state.
Aug 07 08:46:50 AlexUbuntu systemd[1]: Starting Enable support for additional executable binary formats...
然后它继续启动服务。
然后它进入紧急模式。我通过输入访问了系统日志systemctl
。
它显示有两个错误,但其他一切都正常loaded active
,还有一些其他状态,例如running
或exited
:
...
boot-efi.mount loaded failed failed /boot/efi
...
systemd-modules-load.service loaded failed failed Load Kernal Modules
...
当我使用以下命令时:
systemctl status systemd-modules-load.service
我得到了一些输出,其中包含:
Process: 378 ExecStart=/lib/systemd/system/systemd-modules-load (code=exited, status=1/FAILURE)
当我使用时:
systemctl status boot-efi.mount
我得到的输出包含:
Process 534: ExecMount=/bin/mount /dev/disk/by-uuid/6036-A092 /boot/did -t vfat -o umask=0077 (code=exited, status=32)
...
Aug 07 08:46:50 AlexUbuntu mount[537]: mount: wrong fs type, bad option, bad superblock on /dev/sda1,
missing codepage or helper program, or other error
手动启动一次后,我现在得到了 grub2 启动屏幕来再次在启动选项之间进行选择,但是当我选择 ubuntu 时,它仍然会启动到紧急模式。
我读了一些关于手动配置 grub 配置文件的内容,但我不知道从哪里开始。
我可以做些什么让它再次成功启动,还是必须重新安装 Ubuntu?
编辑:
sudo blkid
:(Windows 分区省略了 UUID 和 PARTUUID)
/dev/sda1: LABEL="ESP" UUID="6036-A092" TYPE="vfat" PARTLABEL="EFI system partiton" PARTUUID="2ad4eb64-f0c3-457a-9f95-8679a75333a5"
/dev/sda2: LABEL="DIAGS" TYPE="vfat" PARTLABEL="Basic data partition"
/dev/sda3: PARTLABEL="Microsoft Reserved Partiton"
/dev/sda4: LABEL="WINRETOOLS" TYPE="ntfs" PARTLABEL="Basic data partition"
/dev/sda5: LABEL="OS" TYPE="ntfs" PARTLABEL="Basic data partition"
/dev/sda6: TYPE="ntfs"
/dev/sda7: LABEL="PBR Image" TYPE="ntfs" PARTLABEL="Microsoft recovery partition"
/dev/sda8: UUID="421b08b9-5965-45d5-8490-48bd8bf373a5" TYPE="ext4" PARTUUID="c0172335-398f-4094-8344-fdad94a8e5da"
/dev/sda9: UUID="b9ddff1f-4da1-44c0-b9e1-0afe98c3109e" TYPE="swap" PARTUUID="744e5f85-28ed-4f38-b35b-9a3a2cd64494"
cat /etc/fstab
:(文件开头的一些注释被省略)
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda8 during installation
UUID=421b08b9-5965-45d5-8490-48bd8bf373a5 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
#UUID=6036-A092 /boot/efi vfat umask=0077 0 1
# swap was on /dev/sda9 during installation
UUID=b9ddff1f-4da1-44c0-b9e1-0afe98c3109e none swap sw 0 0
UUID=6036-A092 /boot/efi vfat defaults 0 1
free -h
:
total used free shared buff/cache available
Mem: 3.8G 33M 3.5G 5.9M 241M 3.5G
Swap: 3.9G 0B 3.9G
swapon -s
:
Filename Type Size Used Priority
/dev/sda9 partition 4095996 0 -1
sudo fdisk -l
:
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 554B9E62-9C74-4A35-8CDE-6F87341A0BE1
Device Start End Sectors Size Type
/dev/sda1 2048 1026047 1024000 500M EFI System
/dev/sda2 1026048 1107967 81920 40M unkown
/dev/sda3 1107968 1370111 262144 128M Microsoft Reserved
/dev/sda4 1370112 2906111 1536000 750M Windows recovery environment
/dev/sda5 2906112 577532275 574626164 274G Microsoft basic data
/dev/sda6 952780800 953747455 966656 472M Windows recovery environment
/dev/sda7 953747456 976771119 23023664 11G Windows recovery environment
/dev/sda8 577533952 944588799 367054848 175G Linux filesystem
/dev/sda9 944588800 952780799 8192000 3.9G Linux swap
Partition table entries are not in disk order
以下是 gparted 的屏幕截图:
编辑2:
这些是我在日志中发现的更多错误(journalctl -xb
):
kernel: PCCT header not found
ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
kernel: (NULL device *): hwmon_device_register() is deprecated. Please convert the driver to use hwmon_device_register_with_info().
kernel: r8169 000:07:00.0: can't disable ASPM; OS doesn't have ASPM control
Failed to insert module 'autofs4': No such file or directory
Starting of Arbitrary Executable File Formats System Automount Point not supported
systemd[1]: dev-disk-by\x2dpartlabel-Basic\x5cx20data\x5cx20partition.device: Dev dev-disk-by\x2dpartlabel-Basic\x5cx20data\x5cx20partition.dev
我认为这是主要问题:
[FAILED] Failed to start Load Kernal Modules.
See 'systemctl status systemd-modules-load.service' for details.
systemctl status systemd-modules-load.service
输出:
systemd-modules-load.service - Load Kernel Modules
Loaded: loaded (/lib/systemd/system/systemd-modules-load.service; static; vender preset: enabled)
Active: failed (Result: exit-code) since Mon 2017-08-07 15:21:20 EDT; 11min ago
Docs: man:systemd-modules-load.service(8)
man:modules-load.d(5)
Process: 374 ExecStart=/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE)
Main PID: 374 (code=exited, status=1/FAILURE)
systemd[1]: Starting Load Kernel Modules...
systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start Load Kernel Modules.
systemd[1]: systemd-modules-load.service: Unit entered failed state
systemd[1]: systemd-modules-load-service: Failed with result 'exit-code'.
编辑3:
我使用的是 vmlinuz 和 initrd 版本 4.10.0-30-generic。当我使用 4.10.0-27-generic 启动时,仍然出现有关 Kernal Load Modules 的错误,但启动成功。
但是启动几秒后就出现了系统程序错误,我报告了这个问题,然后它说 Ubuntu 16.04 遇到了内部错误。
软件包 colord 崩溃了,它说原因是软件包过时了,我需要更新一些软件包。
我更新的一些软件包是:systemd、libsystemd0、libpam-systemd 和 libkmod2
现在它在 vmlinuz 和 initrd 版本 4.10.0-27-generic 和 4.10.0-30-generic 中成功启动。
答案1
我通过启动不同的内核版本并更新软件包来解决了这个问题。
要使用不同的内核版本启动:
在 grub2 启动菜单上,不要选择 ubuntu 或 Windows 启动管理器,而是选择 Ubuntu 的高级选项;然后选择您拥有的第二最新版本(不是恢复模式)。
要更新软件包:
打开终端并输入:
sudo apt install --upgrade systemd libsystemd0 libpam-systemd libkmod2