LoginSignup
0
0

More than 1 year has passed since last update.

Amazon Lightsail (VPS) 上の Ubuntu 内で Arch Linux を動かしてみた

Posted at

方法

systemd-nspawnを使います。

※ dockerでもできるかもしれませんが、この記事では systemd-nspawn を使う方法を解説します。

※ 以下、本文中でVPSと記載している箇所は Amazon Lightsail を想定しています。

準備

ローカルで動作中のArch Linux環境上で、最小限のArch Linuxイメージを構築し、圧縮します。

mkdir arch
sudo pacstrap arch base
tar zcvf arch.tar.gz arch

scpコマンド等で、VPSサーバーに転送します。

scp -i myprivatekey.pem arch.tar.gz ubuntu@123.123.123.123:

VPSサーバ側で /var/lib/machines へ展開します。ディレクトリがなければ作ります。

sudo mkdir /var/lib/machines
sudo tar zxvf arch.tar.gz -C /var/lib/machines

systemd-container をインストールします

apt install systemd-container

nspawn用設定ファイルを作成します。

/etc/systemd/nspawn/arch.nspawn
[Exec]
PrivateUsers=no
[Network]
VirtualEthernet=no

初期設定をするためにコンテナを起動します。

systemd-nspawn -D /var/lib/machines/arch

コンテナの中で作業します。

とりあえず最小限必要なパッケージをインストールします。(エディタはお好みのものを)

pacman -Syu
pacman -S sudo nano

sudoを使用するための権限設定を変更します。

EDITOR=nano visudo

# ↓ この行の先頭の # を消してコメント解除します
%wheel ALL=(ALL) ALL

保存して終了します。(nanoエディタなら Ctrl+O Enter Ctrl+X)

ユーザーを作成します

useradd -m -G wheel taro
passwd taro

Ctrl+D または exit で終了します。(何故か終了できなくなった場合は Ctrl を押しながら ] を3回を押してみてください)

起動

コンテナを起動します。

sudo machinectl start arch

作成したユーザーでコンテナにログインします。

sudo machinectl login arch

コンテナ内でsudoを実行できるか確認します。

sudo su
exit

ログアウトします。

Ctrl+D または exit でログインプロンプトに戻ります。

端末を終了します。

Ctrl を押しながら ] を3回を押します。普段はこちらを使ってコンテナから抜ければ良いようです。

コンテナを停止します。

sudo machinectrl stop arch

トラブルシューティング

Q. 端末を終了できない(ホストに戻れない)

A. 上にも書きましたが、Ctrl を押しながら ] を3回を押します。

Q. /var/lib/machine/arch のパーミッション値がおかしなことになっている

A. もし、PrivateUsers=noの設定を忘れていた場合、systemd-nspawn がホストとは別のユーザーIDを付与するようになります。

Q. コンテナの中から外と通信できない。

A. もし、VirtualEthernet=noの設定を忘れていた場合、、systemd-nspawn がホストとは別の仮想ネットワークを提供します。

プライベートユーザーモードや仮想ネットワークモードを理解した上で意図的に使うのであればそれでいいのですが、お手軽に利用するには面倒だと思いますので、本記事ではユーザーIDやネットワークはホストのものを利用する方法を解説しています。

パーミッション値がおかしくなった状態で、/etc/systemd/nspawn/arch.nspawnを修正してから、プライベートではないモードで使いたい場合は、以下のようにしてパーミッションを修正します。

sudo machinectrl stop arch
sudo chown root.root /var/lib/machines/arch -R
sudo systemd-nspawn -D /var/lib/machines/arch
passwd taro
chown taro.taro /home/taro -R
exit

まとめ

メンテナンスのためにrootでコンテナに入りたい

sudo systemd-nspawn -D /var/lib/machines/arch

普段使いのためのコンテナ起動

sudo machinectl start arch

普段使いのためのコンテナログイン

sudo machinectl login arch

端末終了

Ctrl + ] ] ]

コンテナ停止

sudo machinectl stop arch

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0