启动期间无法识别内置硬盘,但挂起/唤醒后可以识别

启动期间无法识别内置硬盘,但挂起/唤醒后可以识别

我尝试在 Acer Aspire 3 笔记本电脑上安装 Ubuntu,但我的硬盘 (WDC WD10SPZX-21Z10T0) 直到挂起操作系统并唤醒后才被识别。这是dmesg | grep ata1挂起前的输出:

[    0.604968] ata1: SATA max UDMA/133 abar m2048@0x4fb13000 port 0x4fb13100 irq 125
[    2.818041] ata1: SATA link down (SStatus 1 SControl 300)

之后

[  123.660687] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[  123.661423] ata1.00: ATA-10: WDC WD10SPZX-21Z10T0, 02.01A02, max UDMA/133
[  123.661425] ata1.00: 1953525168 sectors, multi 16: LBA48 NCQ (depth 32), AA
[  123.662151] ata1.00: configured for UDMA/133

当然,我可以在唤醒后安装 Ubuntu,但它不起作用(/由于无法识别的硬盘,操作系统无法在启动时挂载分区)

我尝试在 UEFI 中切换 SATA 模式、禁用快速启动和安全启动、更新 UEFI 固件,但结果是一样的。

Linux 版本是 Ubuntu-desktop 18.04、linuxmint-20-cinnamon。

Upd1:我尝试了来自 Ubuntu 存储库和https://kernel.ubuntu.com/~kernel-ppa/mainline

Upd2:这似乎是一个 Linux 问题,而不仅仅是 Ubuntu,因为 Fedora33-beta 也无法识别 HDD。

Upd3:Acer 支持人员回答说他们不提供操作系统安装帮助。

答案1

由于挂起后硬盘被成功识别,随后被唤醒,因此解决方法是在挂载/文件系统之前强制挂起。使用内核参数构建CONFIG_PM_TEST_SUSPEND=y和启动的内核test_suspend=mem会执行此操作。

关于CONFIG_PM_TEST_SUSPEND=y来自内核源的帮助:

此选项可让您在启动期间暂停机器,并使用 RTC 唤醒警报使其在几秒钟后唤醒。使用内核参数(如“test_suspend=mem”)启用此功能。

要在这样的笔记本电脑上安装 Linux,您需要:

  1. 从 live-USB 启动
  2. 暂停笔记本电脑并唤醒它
  3. 将 Linux 安装到内部驱动器上
  4. Chroot 进入最近安装的操作系统
  5. 下载内核源代码
  6. 使用以下命令构建并安装内核CONFIG_PM_TEST_SUSPEND=y
  7. 设置test_suspend=mem到引导加载程序中
  8. 重启

有关某些步骤的更多信息

  1. Chroot 进入最近安装的操作系统

除了绑定挂载/dev,,/dev/pts并且/proc不要/sys忘记执行它以/run允许从 chroot 访问互联网(如果您需要它)。

  1. 设置test_suspend=mem到引导加载程序中(如果你的引导加载程序是 grub)

要做到这一点,请打开/etc/default/grub(当然是从 chroot 开始),找到以 开头的行GRUB_CMDLINE_LINUX_DEFAULT=并将其替换quiet splashtest_suspend=mem。然后运行

update-grub

相关内容