個人的ヘッドレス Ubuntu Server 20.04 構築メモ
FPGAや組み込みシステムの開発向けに構築したUbuntu Serverの構築手順メモ。
OSインストールの注意点
- 必要な場合、固定IPアドレスを割り当てる。
- インストール先のボリューム選択時にデフォルトでLVMが有効になっているので無効にする。
- opensshの公開鍵はGitHubアカウントから取得する仕組みがあるので利用すると便利。
アップデートと不要なパッケージの削除
$ sudo apt update && sudo apt upgrade
$ sudo apt purge plymouth cloud-init apport*
$ sudo apt --purge autoremove
- plymouth … 起動スプラッシュとかを出す仕組み。
- cloud-init … IaaS向けに仮想マシンの初期設定を自動化するための仕組み。
- apport* … クラッシュレポートをカノニカルに送信する仕組み。
起動時のネットワーク接続待ちの無効化
ネットワークI/Fが有効だけど未接続の場合、networkdがOS起動時に接続待ちになるのでこれを無効化する。
$ sudo systemctl disable systemd-networkd-wait-online.service
$ sudo systemctl mask systemd-networkd-wait-online.service
xfce4とtigervncの導入
FPGAの開発環境はGUIを使う場合が多いので、VNCでリモートデスクトップ環境を構築する。
-
環境のインストール
xfce4のインストール時にディスプレイマネージャとしてgdm3とlighdmのどちらをインストールするか聞かれるので、 とりあえずlightdmを選択する。ディスプレイマネージャは使わないのでアンインストールする。$ sudo apt install xfce4 xfce4-goodies tigervnc-common tigervnc-standalone-server tigervnc-xorg-extension firefox
$ sudo apt purge lightdm
-
VNC接続パスワードの設定
$ vncpasswd Password: Verify: Would you like to enter a view-only password (y/n)? n
-
xstartupの設定
~/.vnc/xstartupに次のスクリプトを入力して保存する。#!/bin/bash xrdb $HOME/.Xresources exec xfce4-session &
-
VNCサーバの起動 以下のコマンドでVNCサーバを起動する。
起動中のセッション・ポート番号・ディスプレイ番号の確認$ vncserver -localhost no -SecurityTypes VncAuth,TLSVnc -geometry 1920x1080 -depth 24
サーバーの切断は以下のコマンドの通り。$ vncserver -list TigerVNC server sessions: X DISPLAY # RFB PORT # PROCESS ID :1 5901 75572
$ vncserver -kill :<ディスプレイ番号>
シリアルコンソールにログインプロンプトを表示させる
PCにシリアルポートがあり、OSから/dev/ttyS*が見える場合はシリアルコンソールを有効にできる(USBシリアル変換の場合は/dev/ttyUSB*)。 グラフィック出力がなく、SSHサーバが死んでネットワークからログインが不能となった場合に使える。
管理者権限で/etc/default/grubの10行目を次のように編集する。
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0,115200n8"
以下コマンドで設定を適用して再起動。
$ sudo update-grub
$ sudo reboot
Ubuntu Serverのインストールディスクのカーネルコマンドラインを上のように編集しておくと、OSのインストール自体もシリアルコンソール経由で可能になる。起動ディスクが内臓ストレージではなくインストールディスクになっている時は有用。