grub은 txt.cfg의 추가 매개변수와 동일합니다.

grub은 txt.cfg의 추가 매개변수와 동일합니다.

우리는 사용자 정의 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. 셸을 사용하여 출력을 검사하면 설치 프로그램 프로세스에 있는 사용자 지정 환경 변수가 표시됩니다.autoinstallcloud-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

관련 정보