Изображение Xenial debootstrap (с grub2 / UEFI) загружается невероятно медленно

Я использую debootstrap для создания пользовательского изображения на сервере (основанного на Xenial repos), который можно скопировать на новый диск без использования интерактивного установщика. Спасибо за помощь в моем предыдущем вопросе, я могу загрузиться, однако это очень медленно. Это займет 90 секунд до запуска init (systemd)! Это совершенно новая система NUC6 celeron с 4 ГБ оперативной памяти.

Основные сведения о том, что я делаю:

run dbootstrap --variant=minbase --include=$INCLUDES xenial $CHROOT_DIR $MIRROR my $INCLUDES включить linux-image-generic grub, efi-shim и т. д. Я создаю два раздела на целевой диск, root как ext4 и / boot / efi в качестве корня fat32 mount, скопировать сгенерированные rootfs, монтировать efi partition bind-mount proc, dev и т. д. и ввести chroot run grub-mkinstall $TARGET_DISK и grub-mkconfig -o /boot/grub/grub.cfg использовать lsblk, чтобы получить UUID из обоих разделов и генерировать простой fstab

Мой fstab выглядит следующим образом:

# <file system> <mount point> <type> <options> <dump> <pass> UUID=$ROOT_UUID / ext4 errors=remount-ro 0 1 UUID=$EFI_UUID /boot/efi vfat defaults 0 2

/ дерево загрузки выглядит так (исключая модули и lst файлы):

boot ├── abi-4.4.0-21-generic ├── config-4.4.0-21-generic ├── efi │   └── EFI │   └── BOOT │   ├── BOOTX64.EFI │   ├── grub.cfg │   ├── grubx64.efi │   └── MokManager.efi ├── grub │   ├── fonts │   │   └── unicode.pf2 │   ├── grub.cfg │   ├── grubenv │   ├── locale │   ├── unicode.pf2 │   └── x86_64-efi │   ├── < omitted... > ├── initrd.img-4.4.0-21-generic ├── memtest86+.bin ├── memtest86+.elf ├── memtest86+_multiboot.bin ├── System.map-4.4.0-21-generic └── vmlinuz-4.4.0-21-generic

Мой grub.cfg выглядит правильно для меня ... соответствующие части меню по умолчанию:

search --no-floppy --fs-uuid --set=root <$ROOT_UUID> linux /boot/vmlinuz-4.4.0-21-generic root=UUID=<$ROOT_UUID> ro quiet splash $vt_handoff initrd /boot/initrd.img-4.4.0-21-generic

Я узнал, что splash $vt_handoff связан с заставкой plymouth, и после чтения /etc/grub.d/10_linux я понял, что удаление этих параметров позволяет мне видеть загрузочную информацию на консоли. Тревожная часть - это 90 секунд до за 90 секунд до запуска init (systemd)! .

Вот мой вывод dmesg

... с добавлением debug linux cmdline: (слишком много времени для включения в этот пост)

run dbootstrap --variant=minbase --include=$INCLUDES xenial $CHROOT_DIR $MIRROR https://pastebin.com/pccGXjXy & lt; - это заняло 120 секунд для достижения systemd init

Примечания

https: // pastebin .com / pccGXjXy & lt; - этот принятый 120s для достижения systemd init my $INCLUDES включает linux-image-generic grub, efi-shim и т. д. Хост - это amd64 Intel Core i5 NUC запуск Xenial. Я создаю два раздела на целевом диске, root как ext4 и / boot / efi как fat32 Я не запускаю MAKEDEV в любое время во время процесса сборки / установки mount root, скопируйте созданный rootfs, mount efi partition Я не запускаю вручную mkinitramfs, хотя, когда я сравниваю рабочую систему «ubuntu-installer» с моим, я не вижу никаких настроек, отличных от настроек по умолчанию.

Еще один намек: у меня есть идентичная система (установленная с использованием традиционного ubuntu-installer), которая достигает init в ~ 4s. Сравнивая dmesg выходы бок о бок, они расходятся при загрузке initrd

Медленный читает:

[ 0.427469] Trying to unpack rootfs image as initramfs... [ 1.408168] Freeing initrd memory: 31644K (ffff880034222000 - ffff880036109000) [ 1.408271] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) [ 1.408282] software IO TLB [mem 0x6f188000-0x73188000] (64MB) mapped at [ffff88006f188000-ffff880073187fff] [ 1.408585] Scanning for low memory corruption every 60 seconds [ 2.407690] tsc: Refined TSC clocksource calibration: 1497.599 MHz [ 2.407701] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x1596467b3e4, max_idle_ns: 440795260276 ns [ 4.227589] clocksource: Switched to clocksource tsc [ 4.227970] futex hash table entries: 1024 (order: 4, 65536 bytes) [ 4.228021] audit: initializing netlink subsys (disabled) [ 4.228063] audit: type=2000 audit(1507857839.179:1): initialized [ 4.228682] Initialise system trusted keyring [ 8.299792] HugeTLB registered 1 GB page size, pre-allocated 0 pages [ 8.299835] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 8.302996] zbud: loaded [ 9.856012] VFS: Disk quotas dquot_6.6.0 [ 9.856088] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 10.839858] fuse init (API version 7.23) [ 10.840167] Key type big_key registered [ 10.855847] Key type asymmetric registered [ 10.855868] Asymmetric key parser 'x509' registered [ 10.855958] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249) [ 10.856028] io scheduler noop registered [ 10.856039] io scheduler deadline registered (default) [ 10.856115] io scheduler cfq registered [ 10.857668] pcieport 0000:00:13.0: Signaling PME through PCIe PME interrupt [ 10.857679] pci 0000:01:00.0: Signaling PME through PCIe PME inter

В то время как быстрый читает: (это случается, не xenial)

[ 0.300193] Unpacking initramfs... [ 1.576152] Freeing initrd memory: 41708K [ 1.576295] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) [ 1.576306] software IO TLB [mem 0x6f18c000-0x7318c000] (64MB) mapped at [ffff911f6f18c000-ffff911f7318bfff] [ 1.576371] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x159647815e3, max_idle_ns: 440795269835 ns [ 1.576439] clocksource: Switched to clocksource tsc [ 1.576648] Scanning for low memory corruption every 60 seconds [ 1.577354] audit: initializing netlink subsys (disabled) [ 1.577450] audit: type=2000 audit(1507833942.569:1): initialized [ 1.578113] Initialise system trusted keyrings [ 1.578291] workingset: timestamp_bits=36 max_order=20 bucket_order=0 [ 1.581568] zbud: loaded [ 1.582543] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 1.582997] fuse init (API version 7.26) [ 1.586065] Key type asymmetric registered [ 1.586075] Asymmetric key parser 'x509' registered [ 1.586177] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 248) [ 1.586251] io scheduler noop registered [ 1.586258] io scheduler deadline registered [ 1.586289] io scheduler cfq registered (default) [ 1.587677] pcieport 0000:00:13.0: Signaling PME with IRQ 122 [ 1.587720] pcieport 0000:00:13.1: Signaling PME with IRQ 123

Единственная заметная разница, которую я вижу выше, отсутствует в строке «squashfs». Не уверен, что еще я должен смотреть на это, возможно, это может привести к этому ...

Обновления

Я заметил, что при запуске apt-get update && apt-get upgrade linux-image-generic проблема исправлена. Это обновляет ядро ​​с 4.4.0-21 до 4.4.0-98. Кажется маловероятным, что некоторые изменения в пакете ядра могут быть причиной, поэтому я пробовал оба из следующих:

sudo /var/lib/dpkg/info/linux-image-4.4.0-21-generic.postinst configure 4.4.0-21-generic sudo /var/lib/dpkg/info/linux-image-extra-4.4.0-21-generic.postinst configure (runs the same kernel postinst parts

, думая, что есть какой-то постсинструмент, который настраивает что-то специфичное для устройства ... Ни один из приведенное выше помогает, но обновление ядра исправляет его каждый раз. К сожалению, debootstrap не позволяет мне включить обновленное ядро ​​в мое изображение как часть первоначального выбора пакета: (

Наконец, я пошел на обновление ядра в chroot на хосте перед первой загрузкой цель. Проблема исчезла:

apt update apt upgrade -y --reinstall linux-image-generic

Итак, это также исключает некоторую проблему с initramfs-tools, которая не работает на целевом устройстве. По какой-то причине в моем chroot на хосте перед первая загрузка на цель. Проблема уходит: У меня все еще есть больно медленный

0
задан 18 October 2017 в 22:35

0 ответов

Другие вопросы по тегам:

Похожие вопросы: