Ubuntu를 설치한 후 즉시 일부 명령을 실행하고 싶습니다. 그래서 프리팹 개념을 활용해보자고 생각했어요. 내 iso를 추출하고 preseed 폴더의 custom.seed 파일에 다음 줄을 추가했습니다.
대상 mkdir /home/abc의 di preseed/late_command 문자열
이제 iso를 다시 패키지하고 이를 사용하여 우분투를 설치했습니다. 그러나 아무것도 변경되지 않았습니다. 여기서 내가 뭘 잘못하고 있는 걸까요?
답변1
무엇이 문제인지 말씀드릴 수는 없지만, 수많은 시행착오 끝에 제가 어떻게 작동하게 되었는지는 말씀드릴 수 있습니다.
내 요구 사항은 새 파일과 교체 파일을 ISO로 패키지하고 설치 후 스크립트를 실행하는 것입니다.
프로필:
d-i preseed/late_command string /bin/sh -c "$(cat /setup.sh); exit 0"
의심할 바 없이 스크립트를 실행하는 이상한 방법이지만 작동합니다.
installer.sh:
# [ hardware/hosting detection, other customizations ]
# set PackageList string
in-target --pass-stdout /bin/sh -c \
"apt-get update &&
apt-get install -y $PackageList &&
apt-get dist-upgrade -y
"
스크립트는 재부팅 후 손실되는 설치 프로그램 환경에서 실행됩니다. in-target
설치된 환경에서 실행하려면 이 명령을 사용해야 합니다 .
여기에서 ISO에 대한 기존 프로세스를 풀어보세요.
initrd에 압축된 파일
initrd
부팅 및 설치 프로그램이 실행되는 환경에서 확장되는 파일 시스템 아카이브입니다. setup.sh
제 경우에는 파일을 이 아카이브에 복사해야 합니다.
확장 initrd
파일
cd $ExpandedISO/install
mkdir initrd
cd initrd
gzip -dc ../initrd.gz | cpio -id --no-absolute-filenames
복사새 파일은 확장 initrd
디렉터리로 이동됩니다.
재건 initrd
파일:
# in $ExpandedISO/install/initrd/
find . | cpio -o -H newc | gzip > ../initrd.gz
# expanded dir can now be deleted to not take up space in ISO
rm -rf $ExpandedISO/install/initrd/
ISO를 다시 패키징하는 기존 프로세스는 여기에 있습니다.