Ubuntu Server 18.04 LTS 上で、各種サービスを動かしていたマシンの電源が故障して、
急遽新しいマシンを調達、出たばかりの 20.04 (Focal Fossa) を入れてみる。
ちなみに、この記事は当面更新を続ける予定で、
以下のトピックにも展開予定。
- Rootless Docker の導入
- WordPress のインストール、設定
- GitLab CE のインストール、設定
- Nextcloud のインストール、設定
- AMD Ryzen の学術計算(Python)における演算能力
インストールしたマシン
- CPU: Ryzen 7 3700X
- M/B: ASRock X570M Pro4
- Memory: DDR4-3200 16GB x2
- GPU: ASUS GeForce GT 1030 (2G, GDDR5)
- Storage: Intel 760p 256GB (NVMe)
別記事でも触れたが、私の周りのサーバーはまだ Xeonばかりで、
そのため手元の開発機なども Intel系ばかりとなっていた。
numpy 等の並列演算を行う用途では、CPUコア数で律速するようなケースもあり、
ソケット辺りのコア数、コア辺りの単価などの観点で、昨今の AMD 躍進は魅力的に思える。
一方で、 numpy などでは Intel MKL版の性能が OpenBLAS版の2倍程度となっており、
これを踏まえるとこの用途ではまだ Intel に分があるようにも思える。
その辺を試す目的で、今回は Ryzen 7 3700X を選択した。
他はスペック的には適当。
Ryzen 7 は iGPU がないので、何らかのビデオカードが必要。
適当につけても数千円はかかるので、1系統 HDMI(/DP) で 4K を出せそうなものを選択。
この ASUS のはファンレス, ヒートシンクが大きいので2スロット占有。
GT 1030 の DDR4版は地雷なので注意。
2スロットのGPU, GbE NIC, 10GbE NIC が刺さるので、
Mini-ITX M/B は無理で、Micro-ATX が限界。
Ryzen はメモリ速度の影響が比較的大きいようなので、
BTO で面倒を見てくれる中で最も速いものを選択。
あとは適当。
NVMe は PCIe4 対応のにすればよかったと少し後悔。
HW更新
--> GPU: NVIDIA Quadro P5000
(NVIDIA GeForce RTX 3080 は電源容量が足りず(?) 不安定だった。。。)
インストール
Server版を DVD からインストール。
インストールメモ
- 特定のNIC を活性化
Intel 10GbE NICは、Win10Pro標準ドライバでは認識されていなかったが、
Ubuntu 20.04 では認識されていた。 - ubuntu の repository は 理研ミラー を指定しておいた
http://ftp.riken.jp/Linux/ubuntu - ディスク全体を使用(後述)
- ホスト名: '_' が入力できるが、インストール後のホスト名からは消える
- OpenSSH-server を入れておく
トラブルシューティング
ここ最近はいくつかの要因ですんなりとは行かないことが多いので、
以下の色々試してインストールするのだが、いまだに確定的なことが分からない。
ここ何回かで引っかかった点をいくつか列挙してみる。
尖ったマシンほど引っかかることが多い気がする。
Windows が既にインストールされている場合
- Windows を正常終了させてからインストールを行う。
ついつい boot 選択に入り忘れて windows が起動しかけて、
慌てて reset などしてインストールを開始しようとしても、
Ubuntu インストーラーがその状態を検知して進まなくなる。
Windows は正常終了させてからインストールを行う。 - Windows とのデュアルブート等を目指す場合、
少なくとも 18.04 サーバー版は既存パーティションには入れられなかった。
その際はそれができた 16.04 Server をインストールしてから即アップグレードした。
今回の 20.04 は元々 Ubuntu 単独のつもりなので試せていない。 -
既存の Windows を grub が見つけてくれない時など
-- 高速スタートアップを無効化してみる
-- hibernate を無効化してみる
-- UEFI, USB など同じインストールメディアの起動元を変えてみる
その他
-
NVMe の挙動が怪しい
以前もそうだったのだが、インストール時の NVMe SSD の挙動が安定しない。
前は同じものを2つ導入し、片方を Windows, 他方を Ubuntu の予定だったが、
NVMe が1つしか見えなかったり、2つ見えてもシリアルが両方同じだったりした。
単一システムにするなら、見えて進められればインストール後は問題ない。
デュアルブート時は注意が必要。 -
セキュアブートを切ってみる
-
エラーとか言ってても、画面出力が動き続いているなら少し待ってみる
Ubuntuインストーラの仕様なのか分からないけど、
本質的でない場所でも、ところ構わずエラーって出力されているような気がする。
画面が更新されなくなったり、インストールできませんと表示されたら別の道を探す。 -
インストールに用いるUSBメモリ, 外付け光学ドライブなどが
認識されない場合は USB の口を変えてみる。
Type-C, USB 3.1 Gen2, ケース全面のポートなどはうまく行かないことがある。
デスクトップ環境
今回入れたのは Server版だが、Desktop環境も入れておく
1 2 3 4 |
export LANG=C sudo apt install ubuntu-desktop (無印) (...) sudo reboot |
# まだ日本語 Remix が発表されていない。 下記は 18.04 のもの。
20.04 (Focal Fossa) の日本語 Remix が公開されました。
日本語環境:https://www.ubuntulinux.jp/japanese
1 2 3 4 |
wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add - wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add - sudo wget https://www.ubuntulinux.jp/sources.list.d/focal.list -O /etc/apt/sources.list.d/ubuntu-ja.list sudo apt update |
10.04 の頃から上記手順を毎回経てきたわけですがですが、
今回それなりに長く日本語 Remix 無しの状態のまま使っていたので、
何を目的に導入していたのか分からなくなってしまいました。
NVIDIA ドライバ
GT 1030 に 4K は重すぎるのか動きが辛い。
- ドライバファイルのダウンロード: NVIDIA-Linux-x86_64-440.82.run
- マルチユーザーモードで再起動(graphical UI/X を起こさない)
1 2 |
$ sudo systemctl set-default multi-user.target $ sudo reboot |
- DKMS: Dynamic Kernel Module Support を入れる
1 2 |
$ sudo apt update $ sudo apt install dkms |
- 互換ドライバ: nouveau を除外
1 2 3 4 5 |
$ sudo nano /etc/modprobe.d/blacklist-nouveau.conf (新規) blacklist nouveau options nouveau modeset=0 $ update-initramfs -k all -u $ sudo reboot |
- ドライバのインストール
1 2 3 4 5 |
$ chmod a+x NVIDIA…~.run $ sudo ./NVIDIA…~.run —no-cc-version-check register the kernel module to DKMS Install and Overwrite libglvnd nvidia-xconfig は NO にして後で、nvidia-setting しておいた |
- グラフィカルUIに戻す
1 2 |
$ sudo systemctl set-default graphical.target $ sudo reboot |
※ 20.04 の主要変更である “Fractional Scaling (i.e. 150%)” は
20.04 と nvidia v440 の組み合わせでバグっているらしいので、様子見。
[5/10追記] 起動時の kernel parameter に nvidia_drm.modeset=1 を追加するとの情報あり(未確認)
各種設定、追加インストール
settings/設定
1 2 3 4 5 6 7 |
Mouse & Trackpad Natural-Scrolling Regions & Language Manage Installed Language 日本語をインストール, 日本語設定にしてログアウト, ログイン 地域と言語 + から日本語(mozc) |
apt
1 2 3 4 5 6 7 8 9 10 11 |
emacs autofs QNAP, SMB/NFS など VLC # chromium-browser # snap が途中で止まるので ubuntu-software 経由で入れた ubuntu-software net-tools (ifconfig) ubuntu-restricted-extras nginx |
"ソフトウェア"
chromium
AppImage
CPU-X
PB for Desktop
Cryptomator
個別アプリ
SmartGit
GitKraken (v6.4.1)
/etc/fstab
tmpfs
ゴミ箱を Dock に
1 |
$ gsettings set org.gnome.shell.extensions.dash-to-dock show-trash true |
あちこちの表示不具合対応
https://qiita.com/outou_hakutou/items/ce06cb3c8c355d5fd87c
1 2 3 |
get https://sicklylife.jp/ubuntu/1910/fonts-nt-ui-jp_1_all.deb sudo apt install ./fonts-nt-ui-jp_1_all.deb rm fonts-nt-ui-jp_1_all.deb |
ネットワーク
基本的なネットワーク構成の設定
18.04 と同様、netplan (/etc/netplan/~.yaml) で設定する。
yamlファイルは、タブ文字が使えないのでインデントにはスペースを使う。
基本的には以下のような感じになる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
network: ethernets: enp2s0: match: macaddress: xx:xx:xx:xx:xx:xx addresses: - yyy.yyy.yyy.yyy/yy gateway4: yyy.yyy.yyy.1 nameservers: addresses: - 8.8.8.8 - ... search: - ... optional: true enp3s0: match: macaddress: zz:zz:zz:zz:zz:zz dhcp4: true optional: true version: 2 renderer: NetworkManager |
複数のNICがある場合は、名前を match, macaddresses で固定する。
固定IPの場合は addresses、DHCPの場合は dhcp4(6): true で設定する。
末尾の renderer: NetworkManager は、下記の Vino の設定にも必要。
10GbEなどを使用する際のMTU や bonding の設定もこのファイルで行える。
DHCPデーモンの設定
1 |
$ sudo apt install isc-dhcp-server |
/etc/default/isc-dhcp-server で、DHCPを構成するNICを指定する。
INTERFACESv4="enp2s0 enp3s0" のように複数指定することもできる。
/etc/dhcp/dhcpd.conf で構成するローカルネットワークの設定、
配るIPの設定などが行える。
個々のマシンに配るIPを固定したい場合は、このファイルで MACと紐付けを行う。
ローカルのネットワーキング設定
上記のDHCPで配った配下のローカルネットワークから、
外へ出れるようにするには以下のようにする。
まずシステムの IP forward を有効にする。
1 2 3 4 |
/etc/sysctrl.conf net.ipv4.ip_forward=1 $ sudo sysctl -p $ sudo /etc/init.d/networking restart |
次に iptables でローカルネットからのリクエストを外に foward させる。
例えば以下のような感じ。
1 |
$ sudo iptables -A POSTROUTING -s 192.168.0.0/24 -o enp2s0 -j MASQUERADE |
上記は 192.168.0.x のローカルから他へのアクセスを enp2s0 から外に送り出す設定。
まずこの状態で正しく設定ができているか確認してください。
正しく設定できていることが確認できたら、設定を固定化させます。
1 |
$ sudo apt install iptables-persistent |
上記でインストールされる iptables-save/iptables-restore を使うと簡単です。
iptables-save は現在設定されている状態が、設定ファイルの形式でダンプされます。
この出力をリダイレクトなどで適当なファイルにして、適宜加筆・修正したものを、
1 |
$ sudo iptables-restore filename |
で再反映させることができます。
この状態で問題なければ、設定ファイルを /etc/iptables/rules.v4 にコピーすると、
次回起動以降、この設定ファイルを読んで自動的に iptables が設定されます。
VNC/Vino
1 2 3 4 |
設定 - 共有 - 画面共有 netplan-enpxxx password の設定 $ gsettings set org.gnome.Vino require-encryption false |
複数のユーザーが端末を直接触る可能性があるような場合は、xrdp の方がよいかも?
その他
gnome-open
libgnome2-bin が無くなっていた。
—> gifs-open —> ‘gio open’ になったらしい。
alias open=‘gio open’ としておいた。
Nextcloud
Ubuntu でもかなり詳細な手作業のインストール手順が複数あったが、
snap 1コマンド だけでいけるという記述もあるので、とりあえずお試し。
外部公開するかなら気を付ける必要があるかもしれないけど、ひとまずローカルで。
https://qiita.com/S_Katz/items/819feddb62de839f3c49
※ Docker で構築し直しました。 後日記事掲載予定。
1 2 3 |
$ sudo snap install next cloud ブラウザで localhost にアクセス ユーザー名, パスワード |
/var/snap/nextcloud/common/nextcloud/data 以下あたりにファイルを保管するようだ
localhost 以外でアクセスできるようにする
1 2 3 4 5 |
/var/snap/nextcloud/current/nextcloud/config/config.php 'trusted_domains' 1 => 'hogehoge.jp', 2 => '192.168.x.x', $ sudo systemctl restart snap.nextcloud.apache.service |
待ち受けポート番号を変える
1 2 |
$ sudo snap get -d nextcloud $ sudo snap set nextcloud ports.http=xxxx ports.https=yyyy |
DNS がおかしくなった場合
DNS が正しく動作せず、例えばLAN内のページ等が引けなくなった場合
1 |
$ sudo systemctl restart systemd-resolved.service |
別記事参照
Rootless Docker のインストール
WordPress on Docker (Nginx + MariaDB)
GitLab CE on (Rootless-) Docker
Nextcloud + ONLYOFFICE (+ MariaDB) on Docker
TBD