更新日期 2018-03-23
所以,我终于找到了问题所在。这都是关于在双启动设置中启动时安装 NTFS 分区。因此,如果您想在 Windows 和 Linux 之间共享数据,您可能需要使用 FAT32 而不是 NTFS。似乎 Windows 有时会以某种方式卸载文件系统,这会导致 Linux 再次安装时遇到麻烦。要解决启动问题,您可以进入紧急控制台并输入
ntfsfix /dev/sdXX
其中sdXX
是 ntfs 分区的标识符。您可以在/etc/fstab
或 中输入 来查找df
。运行 ntfsfix 后,您可以通过退出紧急控制台来登录(只需输入exit
)
原始帖子
我最近决定升级我的电脑并重新安装 ubuntu 和 windows。我肯定犯了一些严重的错误,因为每次尝试启动 ubuntu 时才成功。
当启动失败时,会出现一个紧急终端。我按照建议导出了日志journalctl -xb
,并为您上传了输出(见下面的链接)
我的硬件配置的相关部分:
Asus M5A97 LE R2.0 Mainboard
- PCIe 2.0 x 16: AMD Radeon R9 380
- PCIe 2.0 x 4: PCIe > M.2 Converter
- 500GB NVME attached to M.2 Converter
- PCI: Creative Sound Blaster X-Fi SB0730
- SATA-3: 480GB SSD
- SATA-3: 500GB HDD
主板不支持从 pcie 启动,因此我无法将 windows 或 ubuntu 直接安装到 NVME 驱动器。我认为只需将引导加载程序安装到 SSD (/dev/sda),将 /boot 挂载到 ssd 上的主分区 (/dev/sda3) 上,然后将其他所有内容挂载到 nvme 上就可以了。
为了避免配置 grub,我决定先安装 Windows 10,然后再安装 ubuntu,这样 ubuntu 就会自动将 grub 写入 /dev/sda 的 MBR。这样总是能完美运行...
此外,我还为 ssd 创建了一个 ntfs-3g 挂载,以便在我的操作系统之间共享数据。我在 hdd 上只创建了一个 ext4 分区,并将其挂载到某个用户文件夹(/media 内)上
我迄今为止尝试过
一开始我发现没有声音。因为我买的是二手主板,所以我以为 ac97 芯片坏了,所以买了一个二手声卡(见上文)。我以为那可能导致启动问题,但事实并非如此。我现在确实有声音了,但启动问题仍然存在。
然后,由于多次安装尝试,我读到了一些关于 /etc/fstab 中的 UUID 问题,并且我检查了所有 uuid,它们与 /etc/fstab 中的相同。
然后我读到了一些关于错误安装的交换分区的信息,所以我卸载了 /dev/nvme0n1p6 上的分区,然后关闭了 swapoff 并重新交换了该分区。没有成功。
然后我发现一些帖子,最好从 /etc/fstab 中删除 uuid,然后直接插入分区。所以我这样做了 - 没有成功。
像往常一样,lightdm 出现了很多问题,所以我安装了 gdm。
lsblk -f
输出
NAME FSTYPE LABEL UUID MOUNTPOINT
loop1 squashfs /snap/vlc/190
sdb
└─sdb1 ext4 4fd6ff2a-50d0-465e-bd85-1c698bdbdc4a /media/hdd
loop0 squashfs /snap/core/4110
sda
├─sda4
├─sda2 ntfs CAC4D02AC4D01B11
├─sda5 ext4 b68dceb3-b600-4143-bbcb-836e94503c34 /var
├─sda3 ext4 09ef7d7c-6332-4c63-b4df-5875db98ebd7 /boot
├─sda1 ntfs System-reserviert 0CE4C7BBE4C7A4F4
└─sda6 ntfs Share 7FA5097E3B9D5067 /media/share
nvme0n1
├─nvme0n1p5 ntfs NVME AA52186052183393
├─nvme0n1p1
├─nvme0n1p6 swap 3277de96-09c9-4731-805a-a693c08543ab [SWAP]
└─nvme0n1p2 ext4 891a41fd-4c9b-4c0f-9f10-7abe82952b0a /
的内容/etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/nvme0n1p2 during installation
/dev/nvme0n1p2 / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda3 during installation
/dev/sda3 /boot ext4 defaults 0 2
# /var was on /dev/sda5 during installation
/dev/sda5 /var ext4 defaults 0 2
# swap was on /dev/nvme0n1p6 during installation
/dev/nvme0n1p6 none swap sw 0 0
# share ntfs partition on 480g ssd
/dev/sda6 /media/share ntfs-3g permissions 0 2
# hdd
/dev/sdb1 /media/hdd ext4 defaults 0 2
最后是我上次启动失败的日志
http://s000.tinyupload.com/download.php?file_id=00683467828265059379&t=0068346782826505937914236
我会很感激任何帮助!感谢您阅读到目前为止的内容 ;-)
更新
引导日志的这一部分可能很有趣:
Mär 07 18:12:34 desktop-amdfx systemd-fsck[732]: /dev/sda3 besitzt nicht unterstützte Eigenschaft(en): metadata_csum
Mär 07 18:12:34 desktop-amdfx systemd-fsck[732]: e2fsck: Neuere Version von e2fsck benötigt!
Mär 07 18:12:34 desktop-amdfx systemd-fsck[732]: fsck failed with error code 8.
Mär 07 18:12:34 desktop-amdfx systemd-fsck[732]: Ignoring error.
Mär 07 18:12:34 desktop-amdfx systemd[1]: Found device SanDisk_Ultra_II_480GB 5.
答案1
我设法找出问题并解决它们。
将 /var 挂载到其他磁盘上似乎有问题。可能是因为在启动过程中,当磁盘尚未挂载时,将日志记录到 /var/log 中是硬编码的。
怎么解决?
启动到恢复模式安装驱动器,具有读/写选项
然后
nano /etc/fstab
# -> in nano outcomment the /var mount by prepending a "#" character
umount /dev/sdxx /var
mkdir /media/var
mount /dev/sdxx /media/var
rm -rf /var
mkdir /var
rsync -a /media/var/ /var/
reboot
解释
sdxx
是您在 /var 上挂载的分区标识符。根据您的设置,它也可以从 nvme 开始。
nano /etc/fstab
首先,我们需要防止在 /var 上挂载额外的分区。一旦编辑器启动,请按Ctrl+w
以下方式取消注释挂载并关闭:Ctrl+x
umount /dev/sdxx /var
卸载驱动器mkdir /media/var
创建一个目录,在其中重新挂载 sdxxmount /dev/sdxx /media/var
将分区挂载到新目录rm -rf /var
使用大锤,确保之前没有留下任何东西mkdir /var
以 root 身份创建新的空文件夹rsync -a /media/var/ /var/
将所有内容按原样复制到 /var。我不知道为什么,但是 cp -a 给出了错误的结果,只有 rsync -a 似乎可以可靠地工作。reboot
测试安装
我的问题出在哪里cp -r
?
将所有文件复制到 /var 后,我通过运行一些命令检查结构是否相同。
按文件夹大小检查
du -hs /var
对阵du -hs /media/var
通过符号链接数检查
find /var -type l | wc -l
对阵find /media/var -type l | wc -l
我尝试了几次,cp 总是搞砸了,要么是权限错误,服务开始阻止启动,要么是在源中没有的地方创建了链接。不要问我为什么——据我所知cp -a
它应该可以完美运行——但它却不行。然而 rsync -a 却可以
重要的:不要忘记 rsync 命令中的尾部斜杠
更新
现在情况变得更加明朗。在将我的 /dev/sda5 配置为直接挂载/var/www
而不是/var
(由于历史原因,我习惯在该位置托管我的 Web 项目)后,启动再次失败。因此,我认为一定是 apache 阻止了我的启动。
我的解决方案
- 启动进入恢复模式
- 运行
mount -a -orw,remount
以获得对文件系统的读/写访问权限 - 运行
systemctl disable apache2.service
以防止 apache 在启动时自动启动
现在它又能正常工作了。
由于某种原因,似乎 apache 在所有磁盘安装完成之前就开始加载了。所以这可能是 systemd 中的一些严重错误。
我现在要重新启动五次以确保万无一失:-)
更新2
好的 - 似乎有多个问题同时影响到我
我终于(至少目前看起来很沮丧)我的设置工作正常:
- 将所有可选挂载(/、/boot 和 swap 除外)从 /etc/fstab 移至 /etc/rc.local 中的手动挂载
- 在安装 Windows 和 Linux 中都安装的分区之前运行 ntfsfix
详细来说:
Ubuntu 似乎并行安装所有驱动器,而不是逐个安装,这就是该问题随机性的原因。
当 Windows 关闭时,由于某些内部原因,它可能不会留下“干净”的文件系统。
我的/etc/fstab
仅包含关键的 Linux 专用分区:
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/nvme0n1p2 / ext4 errors=remount-ro 0 1
/dev/sda3 /boot ext4 defaults 0 2
/dev/nvme0n1p6 none swap sw 0 0
我的/etc/rc.local
包含了其他所有内容的说明:
mount /dev/sda5 /var/www
mount /dev/sdb1 /media/hdd
ntfsfix /dev/sda6
mount -t ntfs-3g /dev/sda6 /media/share
exit 0
连续启动 3 次都没有问题。但我怀疑现在一切都没问题,我的系统似乎被诅咒了
更新 3
这也不是一个解决方案,挂载现在变得“有竞争力”,因为 ubuntu 尝试挂载/dev/sda5
并/dev/sdb1
自动在 /media/$USER/somelabel 上
此外,我注意到 ntfs-3g 有时会阻止关机,所以我必须按下电源按钮才能关机。
我觉得有些东西我完全错过了 :-(