私たちはカスタム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