systemd-242.0-3
오늘 업데이트를 받았습니다 (몇 가지 관련 업데이트도 포함). 패키지를 설치한 후 터미널에는 initramfs가 처음부터 빌드되었음을 표시합니다. 출력은 다음과 같습니다:
:: Running post-transaction hooks...
(1/9) Updating linux initcpios...
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
-> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img
==> Starting build: 5.0.9-arch1-1-ARCH
-> Running build hook: [base]
-> Running build hook: [udev]
-> Running build hook: [autodetect]
-> Running build hook: [modconf]
-> Running build hook: [block]
-> Running build hook: [filesystems]
-> Running build hook: [keyboard]
-> Running build hook: [fsck]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux.img
==> Image generation successful
~에 따르면선형 FS:
부팅 시 부트로더는 커널 및 initramfs 이미지를 메모리에 로드하고 커널을 시작합니다. 커널은 initramfs가 존재하는지 확인하고, 발견되면 이를 /로 마운트하고 /init를 실행합니다. init 프로그램은 일반적으로 쉘 스크립트입니다. initramfs를 사용하면 부팅 프로세스가 더 오래 걸릴 수 있으며 상당히 걸릴 수도 있습니다.
gzip 및 cpio 도구를 사용하여 열었고 /boot/initramfs-linux.img
전체 /usr/lib/systemd
폴더가 포함되어 있습니다. 커널만 포함하면 안 되나요? initramfs에도 systemd가 존재하는 이유는 무엇입니까? 커널을 RAM에 넣고 디스크에서 시스템을 로드하는 것이 더 빠르지 않습니까?
답변1
즉각적인 이유는 일부 패키지(내 생각엔 커널 패키지라고 생각하며 systemd와는 아무 관련이 없음)에 설치 스크립트가 있기 때문입니다. initramfs에는 해당 패키지에 후크/바이너리/커널 모듈 등이 포함되어 있을 수 있으므로 다시 빌드해야 합니다. 그렇지 않으면 이전 버전을 사용하게 됩니다(대부분의 initramfs에는 후크할 필수 커널 모듈이 포함되어 있다는 점에 유의하세요). 다음 부팅 시 이전 버전이 새 커널과 함께 실행될 수 없는 실제 루트).
initramfs에는 커널이 포함되어 있지 않지만(모든 파일을 포함할 수 있지만 의미는 없습니다) 커널은 이미 부트로더를 통해 RAM에 로드되어 있으며 initramfs는 첫 번째 마운트된 파일 시스템으로만 사용됩니다.
일반적인 시스템에서 initramfs의 작업은 "실제 루트 파일 시스템"(에서 사용하는)을 마운트하는 첫 번째 PID=1 프로세스를 실행하기 위해 init 프로그램(다른 종속 라이브러리 또는 스크립트 해석기를 포함할 수 있음)을 제공하는 것입니다. 컴퓨터의 "일반 루트 파일 시스템) 하드 디스크 파티션)"을 선택한 다음 피벗 루트로 이동하여 실제 루트 파일 시스템에서 init를 수행합니다.
PID=1로 실행되도록 설계된 프로그램인 Systemd는 initramfs에서는 init로, 실제 루트 파일 시스템에서는 init로 실행되는 기능을 제공합니다.
답변2
커널은 RAM에 배치되고 별도의 initramfs가 커널의 첫 번째 파일 시스템인 rootfs(=ramfs)로 추출됩니다.
Initramfs는 임베디드 애플리케이션과 같은 미니 Linux 시스템으로 사용될 수 있습니다.
systemd-init를 사용하는 경우 systemd 파일은 initramfs에 위치합니다.
HOOKS
mkinitcpio.conf
포함 된후크 스크립트, 파일을 initramfs(커널 모듈, 프로그램, 시작 스크립트...)에 넣지만 그렇지 않습니다.후크 스크립트그들 자신. systemd-init
후크 대신 후크 가 있습니다 busybox
.
pacman -Syu linux
최신 커널로 업데이트 /boot
하지만 initramfs의 재생성도 트리거합니다.
pacman -Syu systemd
initramfs(마지막 링크)의 재생성을 트리거할 수도 있지만 커널 설치처럼 자동으로 수행되지는 않습니다. systemd-init
대안이 있기 때문이다 busybox
. Archlinux는 busybox
기본적으로 파일과 해당 후크를 사용합니다.
링크: