QEMUでLinux(Ubuntu 22.04)をテキストモード(シリアルコンソール)でインストールする

最近のLinuxのインストーラは、GUIベースのものが多いです。 ただし、サーバにインストールする場合、テキストベースで操作が完結できるとが便利な場合があります。 この記事では、Ubuntu 22.04をQEMUの仮想マシンにテキストモード(シリアルコンソール)でインストールする方法を紹介します。

インストーラISOイメージのダウンロード

wget https://releases.ubuntu.com/22.04.2/ubuntu-22.04.2-live-server-amd64.iso

カーネルとinitrdをファイルとしてアクセスするための準備

以下のようのインストーラのISOイメージをマウントし、その中のカーネルとinitrdを直接ファイルとしてアクセスできるようにします。
mkdir mnt
sudo mount -o ro ubuntu-22.04.2-live-server-amd64.iso mnt
また、インストール終了後、以下のようにアマウントします。
sudo umount mnt

仮想ディスクイメージの作成

qemu-img create -f raw drive1.img 10G
参考: QEMU用の仮想ドライブイメージファイルの作成例

QEMUの起動

ここでは、以下のシェルスクリプトを作って実行します。もちろん、コマンドラインに直接入力してもよいですが、コマンドラインが長いのでファイルに記載して実行します。 このコマンドラインでは、カーネルをファイルとして直接指定し、カーネルオプションにconsole=ttyS0を渡します。 ttyS0は、シリアルポートデバイスを意味します。これにより、インストーラがシリアルコンソール用に動作します。 また、-nographicオプションは、QEMUを起動した端末(xtermなど)を仮想マシンのシリアルポートとして使用するためののオプションです。
#!/bin/sh

QEMU=qemu-system-x86_64
CD_IMAGE=ubuntu-22.04.2-live-server-amd64.iso
DISK_IMAGE=drive1.img
MEMORY=2048

${QEMU} \
-cpu host \
-enable-kvm \
-m ${MEMORY} \
-drive format=raw,file=${DISK_IMAGE},if=virtio \
-cdrom ${CD_IMAGE} \
-nographic \
-kernel mnt/casper/vmlinuz \
-append console=ttyS0 \
-initrd mnt/casper/initrd
起動すると、以下のようなインストーラの画面が表示されます。
================================================================================
  Serial                                                              [ Help ]
================================================================================
                                                                              
  As the installer is running on a serial console, it has started in basic    
  mode, using only the ASCII character set and black and white colours.       
                                                                              
  If you are connecting from a terminal emulator such as gnome-terminal that  
  supports unicode and rich colours you can switch to "rich mode" which uses  
  unicode, colours and supports many languages.                               
                                                                              
  You can also connect to the installer over the network via SSH, which will  
  allow use of rich mode.                                                     
                                                                              
                                                                              
                                                                              
                                                                              
                                                                              
                                                                              
                                                                              
                          [ Continue in rich mode  > ]                        
                          [ Continue in basic mode > ]                        
                          [ View SSH instructions    ]                        
                                                      
あとは、キーボードで項目を選択したり、ユーザ名を入力するなどGUIのインストーラと同じように操作します。 以下は、インストール完了時に画面です。
================================================================================
  Install complete!                                                   [ Help ]
================================================================================
  ┌──────────────────────────────────────────────────────────────────────────┐
  │            writing etc/fstab                                            ^│
  │            configuring multipath                                         │
  │            updating packages on target system                            │
  │            configuring pollinate user-agent on target                    │
  │            updating initramfs configuration                              │
  │            configuring target system bootloader                          │
  │            installing grub to target devices                             │
  │final system configuration                                                │
  │  configuring cloud-init                                                  │
  │  calculating extra packages to install                                   │
  │  downloading and installing security updates                             │
  │    curtin command in-target                                              │
  │  restoring apt configuration                                             │
  │    curtin command in-target                                             ││
  │subiquity/Late/run                                                       v│
  └──────────────────────────────────────────────────────────────────────────┘

                               [ View full log ]
                               [ Reboot Now    ]

上記でReboot Nowを選択すると、仮想マシンの再起動後に再度インストーラが起動します。そのためCtrl-a xで、QEMUを一旦終了します。

インストールしたLinuxの起動

インストールに使用したQEMUのコマンドラインからインストーラISOイメージドライブとカーネルの指定を除いた以下で、インストールしたLinuxが起動できます。
#!/bin/sh

QEMU=qemu-system-x86_64
DISK_IMAGE=drive1.img
MEMORY=2048

${QEMU} \
-cpu host \
-enable-kvm \
-m ${MEMORY} \
-drive format=raw,file=${DISK_IMAGE},if=virtio \
-nographic

参考記事

仮想マシンのドライブやネットワークインターフェイスカードなどをカスタマイズするには以下の記事を参照。

0 件のコメント: