rootfs 이미지를 initramfs로 압축 해제하는 것이 느린 이유는 무엇입니까?

rootfs 이미지를 initramfs로 압축 해제하는 것이 느린 이유는 무엇입니까?

새 젠투를 설치했는데 시간이 걸리는 유일한 부팅 단계는 다음과 같습니다:

Trying to unpack rootfs image as initramfs...

시작하는 데 약 10초 정도 걸립니다. 이 단계가 왜 더 오래 걸리는지 알아내기 위해 initramfs를 읽어보았지만 여전히 나에게는 매우 신비스럽습니다. 내 부팅 파티션에 initramfs가 있습니다.

~ $ cd /boot/
malcolm@Host-002 /boot $ ls
grub                                       lost+found
initramfs-genkernel-x86_64-4.12.12-gentoo  System.map-genkernel-x86_64-4.12.12-gentoo
kernel-genkernel-x86_64-4.12.12-gentoo

grub2-mkconfig -o /boot/grub/grub.cfginitramfs-genkernel을 찾았는데 그것은 내 것입니다 /boot/grub/grub.cfg:

menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuent$
        load_video
        if [ "x$grub_platform" = xefi ]; then
                set gfxpayload=keep
        fi
    insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --$
        else
          search --no-floppy --fs-uuid --set=root 80e1a69b-be52-4845-a6c7-4f7e8353bc1e
        fi
    echo    'Loading Linux x86_64-4.12.12-gentoo ...'
        linux   /kernel-genkernel-x86_64-4.12.12-gentoo root=UUID=2eb28949-50a7-4178-9d0a-309$
        echo    'Loading initial ramdisk ...'
        initrd  /initramfs-genkernel-x86_64-4.12.12-gentoo
}

혼란스럽고 그것이 무엇을 의미하는지 모르겠습니다 unpacking roots image as initramfs. 시스템을 로드하는 데 필요한 도구를 로드하려면 initramfs가 필요하므로 시스템이 initramfs-genkernel을 부팅 파티션에 압축해제할 것이라고 가정했습니다. 이 rootfs 이미지는 무엇입니까?

나는 이것이 매우 혼란스러운 질문이라는 것을 알고 있지만 나도 그렇습니다. 더 나은 질문을 만드는 방법에 대한 조언을 주시면 대단히 감사하겠습니다.

편집하다:

/var/log/dmesginitramfs를 둘러싼 실제 포인트

[    0.275512] pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7 window]
[    0.275514] pci_bus 0000:00: resource 5 [io  0x0d00-0xffff window]
[    0.275515] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
[    0.275516] pci_bus 0000:00: resource 7 [mem 0xd0000000-0xfebfffff window]
[    0.275517] pci_bus 0000:00: resource 8 [mem 0xfed40000-0xfed4bfff window]
[    0.275518] pci_bus 0000:03: resource 0 [io  0x2000-0x2fff]
[    0.275519] pci_bus 0000:03: resource 1 [mem 0xd0100000-0xd02fffff]
[    0.275520] pci_bus 0000:03: resource 2 [mem 0xd0300000-0xd04fffff 64bit pref]
[    0.275521] pci_bus 0000:04: resource 1 [mem 0xf1000000-0xf10fffff]
[    0.275611] NET: Registered protocol family 2
[    0.275839] TCP established hash table entries: 65536 (order: 7, 524288 bytes)
[    0.276037] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
[    0.276238] TCP: Hash tables configured (established 65536 bind 65536)
[    0.276353] UDP hash table entries: 4096 (order: 5, 131072 bytes)
[    0.276455] UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes)
[    0.276597] NET: Registered protocol family 1
[    0.276691] pci 0000:00:02.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[    0.277288] PCI: CLS 64 bytes, default 64
[    0.277324] Trying to unpack rootfs image as initramfs...
[    5.396096] Freeing initrd memory: 38272K
[    5.396183] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[    5.396270] software IO TLB [mem 0xba0af000-0xbe0af000] (64MB) mapped at [ffff918efa0af000$
[    5.396465] RAPL PMU: API unit is 2^-32 Joules, 4 fixed counters, 655360 ms ovfl timer
[    5.396587] RAPL PMU: hw unit of domain pp0-core 2^-14 Joules
[    5.396670] RAPL PMU: hw unit of domain package 2^-14 Joules
[    5.396752] RAPL PMU: hw unit of domain dram 2^-14 Joules
[    5.396835] RAPL PMU: hw unit of domain pp1-gpu 2^-14 Joules
[    5.397284] audit: initializing netlink subsys (disabled)
[    5.397435] audit: type=2000 audit(1513038122.396:1): state=initialized audit_enabled=0 re$
[    5.397762] Initialise system trusted keyrings
[    5.397883] workingset: timestamp_bits=46 max_order=21 bucket_order=0
[    5.398161] SELinux:  Registering netfilter hooks
[    5.398739] Key type asymmetric registered

로그에는 5초가 표시되어 있지만 부팅 및 출력 시 표시되는 실제 시간은 약 10초입니다.

답변1

아카이브 압축 해제는 두 가지 사항(IMHO)에 따라 달라집니다.

  1. 사용된 알고리즘
  2. 아카이브의 파일 크기

그래서 초기 메모리 디스크가 너무 큰 것 같아요.

프로세스 속도를 높이려면 크기를 최소화하고 지원되는 다양한 보관 알고리즘을 사용하여 어느 것이 설정에 가장 적합한지 확인할 수 있습니다.

나에게 그것은 LZ4 압축을 사용하고 init 램디스크가 없는 최소 커널입니다. 이를 통해 grub에서 hp envy 14(1.8GHZ의 amd apu)의 sysv init까지 0.9초가 걸렸습니다. 프로세스 최적화에 관심이 있다면 여기에서 커널 및 초기화 램 디스크 크기를 최소화하는 좋은 가이드를 찾을 수 있습니다.https://www.dotslashlinux.com/post/the-linux-kernel-configuration-guide-part-1-introduction/

관련 정보