Я использую 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)! .
... с добавлением debug linux cmdline: (слишком много времени для включения в этот пост)
run dbootstrap --variant=minbase --include=$INCLUDES xenial $CHROOT_DIR $MIRROR https://pastebin.com/pccGXjXy & lt; - это заняло 120 секунд для достижения systemd initЕще один намек: у меня есть идентичная система (установленная с использованием традиционного 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 на хосте перед первая загрузка на цель. Проблема уходит: У меня все еще есть больно медленный