Core2Duoの古い PCに Ubuntuを入れ LXDでシステムコンテナを作れるようにして Linuxサーバーのお勉強に供する話
皆さんもご存知の通り 2025年10月で Win10のサポートが切れるに伴い、Win11では Intelの第7世代CPUまでが足切りされることになりました。
私の所には第2世代(32GBメモリ)とか・第4世代(メモリ16GB)・第7世代(メモリ64GB)なんて PCが転がっております。
コイツ等が今年の10月で全てお払い箱ってのも困り物で、第2世代のだって「まだまだ現役よ!」てなもんで捨てるには忍びないのです。
幸い私の仕事はサーバーですので、そのお勉強には Linuxの方が都合が良いこともありまして、今回転がっている中から一つピックアップして LXDでシステムコンテナを動かして役立てようと思った次第です。
その対象のPCは「寝かせていた自作PCを Ubuntuで復活させる」で扱った 第2世代どころかその前の Core2Duo(4GBメモリ)のマシンなのです。
私はこういうのをしゃぶり尽くすのが好きでして、メモリが 4GBしかないってのも仮想環境としてのオーバーヘッドが少ない LXDならぴったりじゃないと考えました。
(マザーボードとしてのメモリMAXは 8GBなんですが、これを実現するには DDR2で片面実装の 2GB DIMMってのが必要なんですけど、そもそも存在して無さげで増設は諦めています)
インストールする OSは Ubuntu Server 24.04 にして、普段はキーボード・マウス・モニタ全部なしで使おうかと思います。
さぁ、果たして Core2Duoの PCは今どき使い物になるんでしょうか。
0.前提
マシン名は「Core2Duo」にします。
偉大なCPUでしたから、その名前を冠すると。
IPアドレスは [192.168.1.201/24] とします。
但しこのサーバーにアクセスするクライアントは Lubuntu 24.04で、[/etc/hosts]ファイルを使って [Core2Duo]サーバーの名前解決してしまっています。
1.Ubuntu Server 24.04 インストール
Ubuntu Serverのインストールについては VMware Workstation Proの仮想マシンに入れる形ですけど「Ubuntu 24.04 Server インストール」に書いていて、それと変わりません。
但し仮想マシンではなく実機が対象になりますので、ダウンロードした Ubuntu Server インストール用の ISOイメージファイルを Rufusで USBメモリに書き込みました。
PCを電源ONしたらDeleteキーを連打し、UEFI/BIOS画面に入ります。
このマザーボードの場合は [USB-HDD] を起動順序の最初に持ってくれば良い模様。
F10キーで CMOSへの書き込み&起動をします。
このあとはもう仮想マシンにインストールするのと何も変わらずで、一通りインストールできました。
モニタが付いている状態で一旦シャットダウンして、モニタ・キーボード・マウスは外してしまい、ネットワークと電源だけつなげて再起動しました。
ここは去って、普段遣いの PC(Lubuntu)に参ります。
2.sshのための公開鍵をサーバーに置く
「Ubuntu Serverへの SSH接続とファイルコピー 3」に書いてあることをします。
暗号鍵ファイルの作成は済んでいますのでサーバーに置くところだけ。
subro@Lubuntu2404:~$ ssh-copy-id -i .ssh/id_ed25519 subro@Core2Duo
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_ed25519.pub"
The authenticity of host 'core2duo (192.168.1.201)' can't be established.
ED25519 key fingerprint is SHA256:GU+EFsMJpBZ4AT/zpjHzzZ8LmaBsd/H/vb/6Fzn72Wg.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
subro@core2duo's password: [Core2Duo]サーバーの[subro]ユーザーのパスワード
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'subro@Core2Duo'"
and check to make sure that only the key(s) you wanted were added.
置けました。
これでノーパスワードで sshログインできるようになりました。
subro@Lubuntu2404:~$ ssh subro@Core2Duo
〜〜〜 省略 〜〜〜
subro@core2duo:~$
3.諸々下準備
OSとパッケージを最新版にアップデートしましょう。
subro@core2duo:~$ sudo apt update
〜〜〜 省略 〜〜〜
subro@Lubuntu2404:~$ sudo apt -y upgrade
〜〜〜 省略 〜〜〜
次は日本語環境にします。
subro@core2duo:~$ sudo apt -y install language-pack-ja-base language-pack-ja
〜〜〜 省略 〜〜〜
subro@core2duo:~$ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
subro@core2duo:~$ sudo timedatectl set-timezone Asia/Tokyo
[/etc/systemd/timesyncd.conf]ファイルの末尾に以下を追加して NTPサーバーを設定します。
NTP=ntp.nict.jp
FallbackNTP=ntp1.jst.mfeed.ad.jp ntp2.jst.mfeed.ad.jp ntp3.jst.mfeed.ad.jp
インストーラではマシン名に大文字が使えないので(そもそも使うなつ〜話かも知れませんが)、マシン名を変えます。
subro@core2duo:~$ sudo hostnamectl set-hostname Core2Duo
カーネルがアップデートされてましたので、一度リブートします。
subro@core2duo:~$ sudo reboot
やはりというか [Core2Duo]サーバーは遅い PCゆえ、ここが時間がかかりますね。
それでも我慢できない程のことはなく十分に使える範囲です。
4.LXDインストール
LXDのインストールについては 「Linuxシステムコンテナ(LXD) 1」からのシリーズで書いたものを応用しています。
[Core2Duo]サーバーに sshでログインしなおして、インストールします。
subro@Core2Duo:~$ sudo snap install lxd --channel=latest/stable
2025-04-05T11:04:58+09:00 INFO Waiting for automatic snapd restart...
lxd 6.3-f22a395 from Canonical✓ installed
インストールできました。
lxcコマンドを実行することで lxdデーモンが開始します。
subro@Core2Duo:~$ sudo lxc config set core.https_address :8443
If this is your first time running LXD on this machine, you should also run: lxd init
To start your first container, try: lxc launch ubuntu:24.04
Or for a virtual machine: lxc launch ubuntu:24.04 --vm
Web UIが使えるようになっているはずですので、Webブラウザでアクセスします。
私の環境では [https://Core2Duo:8443] です。
このあとユーザー証明書を作って Web UIが使えるようにするところまでは割愛します。
5.ブリッジインターフェイス作成
[Core2Duo]サーバーの外から Linuxシステムコンテナにアクセスできるようにするためブリッジインターフェイスを作ります。
「Linuxシステムコンテナ(LXD) 2」の手順になります。
VMware Workstation Proの仮想マシンの場合と実機ではネットワークインターフェイスの名前が違うはずなので確認しておきます。
netplan用の既存のファイルに書いてあります。
subro@Core2Duo:~$ cd /etc/netplan
subro@Core2Duo:/etc/netplan$ sudo cat 50-cloud-init.yaml
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
enp2s0:
addresses:
- 192.168.1.201/24
nameservers:
addresses:
- 192.168.1.1
search:
- subrohouse.internal
routes:
- to: default
via: 192.168.1.1
version: 2
このマザーボードの場合は [enp2s0] のようです。
既存のファイルはリネームしてしまいます。
subro@Core2Duo:/etc/netplan$ sudo mv 50-cloud-init.yaml 50-cloud-init.yaml.bak
[/etc/netplan]ディレクトリの下に [60-lxd.yaml]ファイルを以下の内容で作りました。
network:
version: 2
ethernets:
enp2s0:
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces:
- enp2s0
addresses:
- 192.168.1.201/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 192.168.1.1
parameters:
forward-delay: 0
stp: no
optional: true
ファイルパーミッションを [-rw------](600) に変えてから、netplanに読み込ませて有効化します。
subro@Core2Duo:/etc/netplan$ sudo chmod 600 60-lxd.yaml
subro@Core2Duo:/etc/netplan$ sudo netplan apply
ここで一旦 sshのセッションは切れてしまうので、改めて sshログインし直します。
6.Linuxシステムコンテナ作成準備
Linuxシステムコンテナ用にディスクをどれだけ使えるか dfコマンド(report file system space usage)で残り量を確認しておきます。
subro@Core2Duo:~$ df -m
Filesystem 1M-blocks Used Available Use% Mounted on
tmpfs 389 2 387 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 297346 6661 275510 3% /
tmpfs 1941 0 1941 0% /dev/shm
tmpfs 5 0 5 0% /run/lock
/dev/sda2 1946 96 1732 6% /boot
tmpfs 389 1 389 1% /run/user/1000
tmpfs 1 0 1 0% /var/snap/lxd/common/ns
あと 275GB使えそうです。
LXDに使うのは 250GBくらいにしておこうと思います。
Web UIに戻ります。
ストレージプールの作成で、[Driver] にはメモリが少ない PCゆえメモリを多く使う [ZFS] ではなく [LVM] を選択しています。
できました。
プロファイルを作ります。
ここまで作ってたら下のコマンドを実行して、ブリッジインターフェイスを当プロファイルに紐付けます。
subro@Core2Duo:~$ sudo lxc network attach-profile br0 HomeLAN eth0
7.Linuxシステムコンテナ作成
ここでやっと本当にやりたい事ができるようになりました。
こんな感じで Ubuntu Serer 24.04の Linuxシステムコンテナを a〜zまでグイグイ作っていきます。
(実際に zまで作るわけではありません。限界がくるところまで。)
ここからは「Linuxシステムコンテナ(LXD) 3」の手順になります。
手順にはないですが、静的 IPアドレスを [192.168.1.115] から順々に割り当てます。
Web UIの [Terminal] タブで netplanの既存ファイル(/etc/netplan/50-cloud-init.yaml)を書き換えてしまいます。
(余り良い方法ではないですがこのファイルが変わる予定もないので。)
Ubuntu Server 24.04 のイメージから作られた Linuxシステムコンテナの場合、デフォルトのネットワークインターフェイス名は [eth0] のようです。
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
eth0:
addresses:
- 192.168.1.115/24
nameservers:
addresses:
- 192.168.1.1
search:
- subrohouse.internal
routes:
- to: default
via: 192.168.1.1
version: 2
設定を読み込ませます。
root@UbuntuServer2404-a:~# netplan apply
このあと、一般ユーザーを作る・sudoを使えるようにする・パスワードで sshログインできるようにする・日本語化する、をやりまして、外から sshでログインして使えるようにしました。
8.Linuxシステムコンテナをコピーで作成
[UbuntuServer2404-a]コンテナができましたので、コイツをコピって b以降を作っていきます。
一旦コンテナを停止します。
□を押します。
Stopを押します。
右上の [Actions] メニューから [Duplicate] を選択します。
[New Instance name](→マシン名になる)を変えて、Duplicateを押します。
アッという間にできてしまいました!メチャ速い。
この後は IPアドレスを変えては次のを作って…を繰り返しました。
別環境を作るだけならまだまだ行けそうでしたがキリがないのでここいらでお終い。
それぞれの Linuxシステムコンテナ内で何か処理させれば流石に重くなるはずですが、この時点では重さは感じませんでした。
==========
思い立ってやってみましたが「Linuxシステムコンテナって良くね?」って印象です。
特に最後の章でコンテナをコピーしまくりましたが、これが非常に簡単で速くて話が早いです。
お勉強に限って言えば Core2Duoの今となっては非力なマシンでも十分使い物になるんじゃないかと思いました。
Web UIのターミナルはややモッサリ感がありますが、外部から sshで入った場合は「何かちょっと重い?」程度にしか感じないんじゃないですかね。
決して VMwareが遅いとか言う事じゃないのですが、素の LinuxOSをインストールしたマシンで LXDで作る Linuxシステムコンテナは多分オーバーヘッドが非常に少ないのじゃないでしょうか。
その意味でサーバーエンジニアは Win11にできない古い PCはこの使い方でしゃぶり尽くすのが良いですね。
もうちょっと新しい PCや SSDが入っていりゃパフォーマンスがもっと良くなりますし、決して捨ててはいけないなぁと思いました。