
initramfs의 작동 방식과 구성 방법을 배우려고 노력 중입니다. initramfs에서 사용 가능한 패키지에 컬을 추가하고 부팅 중에 컬을 사용하는 스크립트를 실행하고 싶습니다(이는 네트워크가 그 전에 설정되어야 함을 의미합니다).
어떻게 해야 하나요? (커널을 업그레이드할 때도 작동하려면 이 기능이 필요합니다.)
답변1
initramfs 후크를 편집해야 합니다. 다음과 같이 자신만의 파일을 생성하세요:
$ cat /usr/share/initramfs-tools/hooks/curl
#!/bin/sh -e
PREREQS=""
case $1 in
prereqs) echo "${PREREQS}"; exit 0;;
esac
. /usr/share/initramfs-tools/hook-functions
copy_exec /usr/bin/curl /bin
initramfs를 다시 빌드하세요.
$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-3.8.0-4-generic
실제로 거기에 도착했는지 확인하십시오.
$ lsinitramfs -l /boot/initrd.img-3.8.0-4-generic | grep curl
-rw-r--r-- 1 root root 385704 Nov 28 18:32 usr/lib/x86_64-linux-gnu/libcurl.so.4
-rwxr-xr-x 1 root root 150344 Nov 28 18:32 bin/curl
답변2
가장 먼저 알고 싶은 것은 Ubuntu가 전통적인 init 대신 Upstart라는 시스템을 사용하고 있다는 것입니다. 초기 램디스크는 계속 사용되지만 init 대신 upstart를 재구성하게 됩니다.
둘째, initrd의 맥락 내에서 이 작업을 완전히 수행하시겠습니까? 그렇다면 이것은 훨씬 더 복잡해질 것입니다.