📌
カーネル引数を使ってinitramfsのIPアドレスを固定にする
initramfsのアドレスを固定にする方法を以下に記します。暗号化されたUbuntuのルートファイルシステムをリモートから復号する方法を参考にしています。
考え方
initramfsはLinuxが動作を始める前にその下準備をする小さなLinuxです。initramfsはLinuxシステム本体と同じカーネルを使いますが、デーモン等は共用しません。
動作中のinitramfsに介入するためにdorpbear SSHを使うのですが、その際IPアドレスがDHCPで割り振られていると何かと不都合です。そこで、IPアドレスを固定にする必要があります。
initramfsでIPアドレスを指定するには、単にカーネル引数で指定すれば済みます。
カーネル引数によるIPアドレスの指定
先に述べたようにSSHから接続するためにはIPアドレスを固定しなければなりません。ここで固定するアドレスはDHCPが付与するアドレスとの衝突を避けるため、付与されるアドレスレンジの外でなければなりません。
設定に当たって以下の事を調べておきます。
項目 | この稿での略記 | 説明 |
---|---|---|
IPアドレス | xxx.xxx.xxx.xxx | initramfsの中で使用したいIPアドレスです。Dropbearでこのアドレスに接続します |
ゲートウェイIPアドレス | yyy.yyy.yyy.yyy | PCが所属するサブネットワークのゲートウェイのIPです |
ネットマスク | zzz.zzz.zzz.zzz | 使用するIPアドレスのネットマスクです |
ホスト名 | foo | initramfsの中で使用するホスト名です。Linuxシステムのホスト名と同じでいいでしょう |
インターフェース名 | bar | ネットワークインターフェースの名前です。あらかじめLinuxシステムを起動して調べておきます |
設定はetc/default/grub
の中のGRUB_CMDLINE_LINUXの中に書きます。書式はip=の後にあらかじめ調べておいた引数を":"で区切って並べます。最初から順番に
- initramfsで使用するIPアドレス
- NFSサーバーのIPアドレス(省略可)
- ゲートウェイのIPアドレス
- ネットマスク
- ホスト名
- インターフェース名
- 自動設定方法
となります。上の表の略記を使うと、設定は以下のようになります。
/etc/default/grub
GRUB_CMDLINE_LINUX="ip=xxx.xxx.xxx.xxx::yyy.yyy.yyy.yyy:zzz.zzz.zzz.zzz:foo:bar:none"
最後に私のVMの設定を例として挙げます。
/etc/default/grub
GRUB_CMDLINE_LINUX="ip=192.168.222.101::192.168.2.101:255.255.255.0:myserver:ens33:none"
GRUBの更新
修正を保存したらgrubを更新して再起動します。
sudo update-grub
Discussion