우리는 사용자 정의 Ubuntu 20.04를 사용하고 있으며 부팅 프로세스 중에 변수를 전달해야 합니다. 16.04에서는 ISOLINUX 부트로더를 사용하고 txt.cfg는 다음과 같습니다.
label m1
menu label Install srv (SINGLE DISK)
kernel /install/vmlinuz
append auto file=/cdrom/preseed/srv_preseed _C=param1 _S=param2
그런 다음 Param1 및 param2를 부팅 환경에서 환경 변수로 사용할 수 있습니다.
Ubuntu 20.04에서는 UEFI로 전환했으므로 grub을 변경해야 했습니다. grub.cfg는 다음과 같습니다:
menuentry "srv" {
set gfxpayload=keep
linux /casper/vmlinuz _C=param1 "ds=nocloud;s=/cdrom/inst/" quiet autoinstall ---
initrd /casper/initrd
}
그러나 _C=param1은 부트 환경에서 사용할 수 없습니다.
이러한 매개변수를 전달하는 올바른 방법은 무엇입니까? 우리가 놓치고 있는 것이 또 있나요?
답변1
질문에 따르면 귀하는 16.04 "서버" 설치 프로그램과 20.04 "라이브 서버" 설치 프로그램을 사용하고 있는 것으로 보입니다. 이전 "서버" 설치 프로그램( 기반 ) debian-installer
은 새로운 "라이브 서버" 설치 프로그램( 기반)에 의해 subiquity
단계적으로 폐지 되고 있습니다. 20.04에서는 이전 "서버" 이미지의 이름이 "legacy-server"로 변경되었습니다.
당신이 사용하는 경우이전 서버 이미지그러면 16.04 기술을 계속 사용할 수 있습니다.
"라이브 서버" 이미지를 사용하는 경우 환경 변수를 사용하려는 위치에 따라 다릅니다. 일반적인 해결 방법은 /etc/environment
설치 프로그램 환경에서 수정하는 것입니다.
설치 프로그램 환경에서 변수를 추가하는 데 사용되는 부분 파일입니다 user-data
. 셸을 사용하여 출력을 검사하면 설치 프로그램 프로세스에 있는 사용자 지정 환경 변수가 표시됩니다.autoinstall
cloud-init
/etc/environment
/run/my_env.txt
#cloud-config
autoinstall:
version: 1
early-commands:
- env | sort >> /run/my_env.txt
write_files:
- path: /etc/environment
content: |
_C=param1
_S=param2
append: true
커널 매개변수를 계속 사용하여 변수를 설정하려면 PID 1에서 변수를 가져오는 것이 더 창의적인 솔루션입니다. user-data
커널 매개변수가 환경 변수로 사용된다고 가정 한 부분 파일입니다 _
.
#cloud-config
autoinstall:
version: 1
early-commands:
- env | sort >> /run/my_env.txt
bootcmd:
- cat /proc/1/environ | tr '\0' '\n' | grep ^_ >> /etc/environment