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

関連情報