状況
以前現場に居たときはオンプレミスでRHEL4, CentOS6を使っており、現場からは離れた気でいたけれども諸事情でUbuntu使わないといけなくなったのでチャレンジしていくお話。私のスペック感
-
NetworkManager
ちょっとだけ触ったことあるけど基本的にip
コマンドだった -
systemctl
もあんまり。/etc/init.d
とかservice
だったし -
journal
ってなんぞ
自分の学習Outputなので何か結論をまとめたものではありません。ただ、こういう考え方してんだな、という脳内トレースにはなる、のかな。
今回はHPノートPCのWindows10上でVirtualBoxを使ってサーバ構築を目指す。
Ubuntuインストールする
imgファイルの入手
日本語Remix か 純正か
「Ubuntu インストール」で検索して見つかるのがこちら:Ubuntuの入手 - Ubuntu Japanese Team
この時点で日本語Remix版というものが存在することを知る。だいたい機械語の次元において日本語は悪さをしてくれるけれども、以下の2つの観点から日本語Remixを受け入れる方針とした。
- 各種システムメッセージをある程度日本語化してくれている可能性
- 初学であるため、解析はかどるほうが良い(※)
- この先、自分だけではなくどのレベル層のエンジニアか触るかわからない
- 90%ぐらいの確率で日本語を母国とする方が触るためハードルを下げておく
※「解析がはかどる」という観点でいうと、英文メッセージのほうが検索するとより多くの情報にHitする。ここでは「その場で自分が問題箇所のあたりをつけられるかどうか」の意味
バージョンはどれにするか
2023年08月12日現在、バージョンはUbuntu 22.04 LTS
らしい。で、これは安定版なのか?と気になって調べる:Ubuntu LTS について
LTS = Long Term Support。じゃあOK
ざっくりと方針決めておく
- 現場に居たときは当たり前に
root
使っていた。今回は無し。sudo
使っていく。 - 現場に居たときは当たり前に
firewalld
,iptables
は無効化していた。今回はちゃんと見る。 - ただし
SELinux
、てめぇは駄目だ。Ubuntu
にあるのか知らないけど。
素のUbuntuインストール(インストーラ利用範囲まで)
皮の作成
Oracle VirtualBox
を使っていく
仮想マシンパラメータ | 値 |
---|---|
メインメモリ | 4GB |
EFIを有効化 | Disable |
Processors | 2 |
ビデオメモリ | 128MB |
ストレージ | HDDに80GB(VDI) |
ネットワーク1 | NAT |
ネットワーク2 | ホストオンリー |
インストール
パーティション構成。お試しなので基本的に全部/
にぶっこみ。このあとDockerなど試す予定があったので/data
として作業領域を残しておく。
ここは一般ユーザではなく管理者アカウントの話らしい。もはや管理者 = root
ということではないのか。衝撃を受けた。かといってadmin
という名前にしようとしたら既にシステムで使用していると言われた。なんでや。しかたないので適当な名前でインストールを完了させておく。
インストール後の初期設定
初期セットアップ
インストール時に作成したアカウントでログインして状態をチェック。最小インストールなのにデスクトップ入ってるんだ。へぇ~
SSO(シングルサインオン)
どれとも連携しない。スキップ
Livepatch
Canonical Livepatch helps keep your comuter secure, by applying some up dates that would normally require restarting.
Would you like to set up Livepatch now?Canonical Livepatchは、通常再起動が必要なアップデートを適用することで、お客様のコンピュータを安全に保つのに役立ちます。
今すぐLivepatchを設定しますか?
再起動なしでKernelをアップデートできるとかそんなのらしい。商用利用のサーバで勝手に更新とかされるとこまるので今回はパス
ソフトウェアの更新
ありがたいのだがこれをそのまま受けると検証時と商用構築時で各種パッケージのバージョンに差分が出てしまう。今回は後回しにして手動で取り込んでいく。
アカウント設定
へぇ~。つまり最初に作ったアカウントは全操作sudo
できるけれどもroot
では無いらしい。今回は検証なのでインストール時に作成したアカウント(udon
)のみで作業を進めていく。
ネットワーク設定
ネットワーク設定にyaml
を使っていますけど!?既に衝撃。/etc/netplan
配下に置くyaml
ファイルの命名規則があるのかと考えて調べてみる。
-
/etc/netplan
に置いたファイルが名前順に読み込まれる -
sudo netplan apply
もしくはサーバ再起動で反映 - TAB使用禁止。半角スペースで対応すること。まじか。
- 私がインストールしたときはデフォルトで
NetworkManager
へrendererされていた。
Ubuntu Server だと networkd になる
え!?Ubuntu Server
なんてものがあるのか。もしかして私がインストールしているものはサーバ用途ではなくパーソナルコンピューティング用??調べたところ日本語RemixはDesktop版しか提供していなさそう。やり直しだ。がーん。
Ubuntu Serverのインストール
細かいところは端折っていく。
ダウンロード:Ubuntu 22.04.3 LTS (Jammy Jellyfish)
The Virtual machine failed to boot. That might be caused by a missing operating system or misconfigured boot order. Mounting an operating system install DVD might solve this problem.Selecting an ISO file will attempt to mount it after th dialog is closed.
仮想マシンの起動に失敗しました。オペレーティングシステムが見つからないか、ブート順序が正しく設定されていないことが原因かもしれません。オペレーティングシステムのインストールDVDをマウントすると、この問題が解決する可能性があります。ISOファイルを選択すると、ダイアログが閉じた後にマウントしようとします。
なんじゃい。DVDのプルダウンにISOファイルを選択してみる。むぅ。変わらんぞ。
これかな。起動順序でIDEプライマリマスターにすりゃいいのかな。うーん駄目だな。そういうわけじゃないらしい。
Virtual Machine failed to boot
く、、、読むの面倒だな。
もしかしてBIOSでHyper-Vが有効になってないのか?というわけで確認する。むぅ、BIOSではVTxは有効になっていた。
Windows 10 上に Hyper-V をインストールする
と思ったらOSにもなにかやらんといかんのか。
お、進んだ、ぽい?いや違うな。これ仮想マシンのBIOS開いているだけだ。試しにISOをホストOS(Windows)でマウントし、そのディスクドライブを選択したらどうなるのだろう。
再び機能の有効化。「Windowsハイパーバイザープラットフォーム」と「仮想マシンプラットフォーム」をEnableにする。うーん、変わらない。
VBox.logを漁ってみる。
00:00:08.864689 VirtualBox VM 7.0.8 r156879 win.amd64 (Apr 17 2023 16:42:53) release log
00:00:08.864691 Log opened 2023-08-12T05:42:21.584273700Z
00:00:08.864692 Build Type: release
00:00:08.864695 OS Product: Windows 10
00:00:08.864696 OS Release: 10.0.19045
00:00:08.864696 OS Service Pack:
:
00:00:09.177228 Guest OS type: 'Ubuntu'
00:00:09.177666 fHMForced=true - No raw-mode support in this build!
00:00:09.183096 File system of 'C:/Users/xxxx/Downloads/ubuntu-22.04.3-live-server-arm64.iso' (DVD) is ntfs
00:00:09.187246 File system of 'D:\VM\Ubuntu\Ubuntu.vdi' is ntfs
:
うん、isoを見つけてはいる。
00:00:30.201347 File system of 'C:/Users/alpha/Downloads/ubuntu-22.04.3-live-server-arm64.iso' (DVD) is ntfs
00:00:30.202801 DrvVD: Flushes will be ignored
00:00:30.202821 DrvVD: Async flushes will be passed to the disk
これはどういう意味だろう。
00:00:47.232056 VMMDev: Guest Log: BIOS: CDROM boot failure code : 0009
00:00:47.232283 VMMDev: Guest Log: BIOS: Boot from CD-ROM failed
ふむ。わからん。このエラーコードで調べたがかなり昔の情報にしか行き当たらなかった。また改めてDesktop版を指定すると普通にインストールを進めることができた。
マイナーバージョンアップ前のubuntu-22.04-live-server-amd64.iso
であればいけるだろうか。探してみよう。って探してたら以下に行き着いた
Ubuntu 22.04.3 LTS (Jammy Jellyfish) via ftp.riken.jp
よく見るとファイル名が違う。駄目だったやつはarm64
で、今回はamd64
。なんかこっちのほうが聞き慣れている。
動いたぁ~~~えーーーなんでーーー??うん、じゃあまぁスマホとかサーバ用途てきには良いんだね。うーん、己の知識不足よ。
が、今度はここからカーソルがチカチカするだけで進まんな。。Windowsの機能を色々いじったからなのか?一度もとに戻してやりなおしてみよう。
うーん駄目だな。また別の事象か。EFIモードで起動してみるか。。。いや違うな。
結局、バージョン部分が32-bitになっていたことが原因だった。これただのアイコン画像差し替えるためのものじゃなかったのか。。
言語は英語、キーボードはJapanese。このあたりはServer Worldさんに沿う。
ここに行き着くのに半日かかっちゃったよ…
初期設定
Server Worldさんのお品書きに沿って実施。
(01)ユーザーを追加する
必須ではないっぽいのでパス
(02)rootユーザーを有効にする
udon@localhost:~$ sudo -s
[sudo] password for udon:
root@localhost:/homeudon#
イメージ的にsudo su -
だったのだが、オプションとして存在するらしい。へぇ。ちなみにsudo su -
でも昇格できた。そのときはroot
のホームディレクトリに移動したのでログインシェルを実行しているのだろう。あくまでsudo -s
は「root権限だけど実行者はudonですよ」というところだろうか。
(03)ネットワークの設定
ようやっと戻ってきたぞぉ。でnetplan
のyaml
を編集しようとしたら
root@localhost:/etc/netplan# vi 01-netcfg.yaml
bash: vi: command not found
うそやろw インストールメディアを挿入してインストールを試みる。あぁ~rpm
コマンドしか知らないぞ私…。というか最小限パッケージでここまで最小限にするかねw
root@localhost:/etc/netplan# mount /dev/cdrom -r /mnt
root@localhost:/etc/netplan# ls -l /mnt
ちゃんとマウントできている。良かったぁ~mount
コマンドは生きてて。。
root@localhost:/mnt# find . -type f -name *.rpm | head -n 5
root@localhost:/mnt#
いや何もないですやん。あれ、マジで?
root@localhost:/mnt# cd /
root@localhost:/# umount /mnt
仕方ないね、apt
とやらを使いましょうか。いま家のネットワークだからいいけど、職場の場合はインストール時のproxy
の設定がちゃんと生きてくれることを信じるしか無い。そんでこのあたりのパッケージ追加は怖い。常に最新がインストールされてしまう。検証環境構築時と商用構築時でパッケージのバージョン変わってました~は大変なことになるので、「ローカルにダウンロード→ダウンロードしたものをインストール」としておきたい。
root@localhost:/# mkdir /home/pkgs
root@localhost:/home/pkgs# cd !$
root@localhost:/home/pkgs# apt-get -d install vim
~ごにゃごにゃ~
Do you want to continue? [Y/n] (Enter)
~ごにゃごにゃ~
Download complete and in download only mode
root@localhost:/home/pkgs# ls -tlr /var/cache/apt/archives/
たくさんファイルある
で、これを指定してインストールはどうやるんだろう。ふむふむ。
apt-get installでローカルのdebをインストール出来た
root@localhost:/home/pkgs# cp -p /var/cache/apt/archives/*deb .
root@localhost:/home/pkgs# apt-get -y install *.deb
:
E: Unable to locate package libgpm2_1.20.7-10build1_amd64.deb
E: Couldn't find any package by glob 'libgpm2_1.20.7-10build1_amd64.deb'
:
いや駄目ですやん。なんだろう。cache
のところにあったファイル群も必要なのだろうか。
こっちは通常のapt
で入れられると書いてある。
~# cd /var/cache/apt/archives
~# apt install -y *.deb
:
E: Unable to locate pakcage ....deb
うーん駄目だな。
UbuntuでUnable to locate packageのエラー解決法
あぁ、なるほどね。リポジトリを更新してないからなのか。ってapt update
しても状況かわらず。うーん、嫌だけど直接インストール試してみるか。
~# apt install -y vim
~# which vim
/usr/bin/vim
うわーいやだなぁ。なんでだろう。まぁいいこれでネットワークの設定に戻れる。デバイス一覧を確認しておく。
~# ip addr show | grep mtu
1: lo: ....
2: enp0s3: ...
3: enp0s8: ...
ということでnetplan
の生成
network:
ethernets:
# network IF name
enp0s3:
dhcp4: true
dhcp6: false
enp0s8:
dhcp4: false
addresses: [192.168.56.102/24]
dhcp6: false
version: 2
~# netplan apply
IPv6も手順通り閉じておく。
(04)サービスの管理
特にやることなし
(05)システムを最新化する
さて困ったぞ。さっきと同じようにやると商用・ローカルで差が出てしまうかもしれない。その時はまた考えよう。
apt update
apt -y upgrade
ひとまずこのあたりまでやればごく普通のLinuxサーバとしては使えそう。firewall
とかの設定見当たらんけど。