Boot timeout starting instance as t3.small type, works fine as t2.small

0

Hi,
my Centos7 AMI start fine as t2.small but does't boot using instance type t3.small or any Nitro Based instance type, with system log:

...
many dracut-initqueue timeout
...
[  184.749683] dracut-initqueue[231]: Warning: dracut-initqueue timeout - starting timeout scripts
[  185.258984] dracut-initqueue[231]: Warning: dracut-initqueue timeout - starting timeout scripts
[  185.262729] dracut-initqueue[231]: Warning: Could not boot.
[  185.265338] dracut-initqueue[231]: Warning: /dev/centos/root does not exist
[  185.268902] dracut-initqueue[231]: Warning: /dev/centos/swap does not exist
[  185.272733] dracut-initqueue[231]: Warning: /dev/mapper/centos-root does not exist
         Starting Setup Virtual Console...
[  OK  ] Started Setup Virtual Console.
         Starting Dracut Emergency Shell...
Warning: /dev/centos/root does not exist
Warning: /dev/centos/swap does not exist
Warning: /dev/mapper/centos-root does not exist
Generating "/run/initramfs/rdsosreport.txt"
Entering emergency mode. Exit the shell to continue.
Type "journalctl" to view system logs.
You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot
after mounting them and attach it to a bug report.

I double checked all test (nitro support: ENA, NVMe, ecc.) and run nitro scripts as explained:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html#test-enhanced-networking-ena
https://github.com/awslabs/aws-support-tools/tree/master/EC2/NitroInstanceChecks
https://aws.amazon.com/premiumsupport/knowledge-center/boot-error-linux-nitro-instance/
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html

I tried many Fix, also editing fstab and /boot/grub2/grub,cfg using UUID instead of fixed device name, but nothings worked... I cannot find what stop on the boot process !

Edited by: Roxyrob on Jul 10, 2020 9:22 AM

Edited by: Roxyrob on Jul 10, 2020 9:26 AM

Edited by: Roxyrob on Jul 10, 2020 9:34 AM

Roxyrob
已提问 4 年前1758 查看次数
1 回答
0

Found solution. I think aws documentation can be improved (check script and documentation for new nitro systems). Script erroneously return "OK" for NVMe check. In fact nvme driver (e.g. nvme.ko.xz) was present in the OS (modeprobe nvme), but not in initramfs, allowing boot unable to discover and use new nitro based nvme devices.

To add nvme driver in initramfs (available at device discover and mount phase):

echo 'add_drivers+=" nvme "' > /etc/dracut.conf.d/nvme.conf
dracut -f -v
lsinitrd /boot/initramfs-$(uname -r).img | grep nvme.ko

other configuration make instance more robust:

For (ENA):

(optional - network availability in initramfs phase)

echo 'add_drivers+=" ena "' > /etc/dracut.conf.d/ena.conf
dracut -f -v
lsinitrd /boot/initramfs-$(uname -r).img | grep ena.ko

(optional - avoid network device name change between reboot)

add net.ifnames=0 to kernel options (e.g in GRUB_CMDLINE_LINUX inside /etc/default/grub and executing grub2-mkconfig -o /boot/grub2/grub.cfg. OS distribution and version dependent)

(optional - avoid inconsistent disk name)

use UUID instead of device names in /etc/fstab and boot loader (e.g. for GRUB in /boot/grub2/grup.cfg root=UUID=...).

Edited by: Roxyrob on Jul 10, 2020 12:17 PM

Edited by: Roxyrob on Jul 10, 2020 12:31 PM

Roxyrob
已回答 4 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则