前提
- Ubuntu Serverを入れてサーバー運用していたマシンを、仕事部屋用作業マシンにしようと思い、再インストールも面倒だったので、
sudo apt install ubuntu-desktop
してデスクトップ版にした。 - 元サーバー運用用なのでディスクは
/var
を大きめに切って、/var/home
をホームディレクトリの親にしていた - ルートディレクトリには
ln -s /var/home /home
でリンクを作っていた
2000年頃のLinuxだったらこんな感じで上手くいってたなー、と思いながら何も考えずに上記のセットアップをして運用していたものの、デスクトップ版にアップデートしたら問題発生。
- ブラウザがインストールされていないので、
sudo apt install firefox
したらエラーが発生。
$ sudo snap install firefox
[sudo] password for User:
cannot create mount point /tmp/snap.rootfs_00owC7//home: Read-only file system
調べてみると、/home
以外にホームディレクトリがある場合、snapがエラーを吐くとのこと。対策として以下のコマンドを実行。
sudo apt update
sudo apt upgrade snapd
sudo snap set system homedirs=/var/home
sudo systemctl restart snapd
ところが動かないまま。色々なパターンで試したが、理由は謎のまま動かない。
回答
ルートディレクトリ直下のシンボリックリンクは削除し、ホームディレクトリの実体をマウントする。sudo snap unset system homedirs
も忘れない。
sudo mkdir /home
sudo mount --bind /var/home /home
起動時にマウントされるように、/etc/fstab
に以下を追加。
/var/home /home none bind 0 0
/etc/passwd
等のホームディレクトリ位置は/home/$HOME
でOK。
結果
$ sudo snap install firefox
[sudo] password for User:
firefox 130.0.1-1 from Mozilla✓ installed
動いた!
結論
今どきシンボリックリンクでホームディレクトリを移動してはいけない。