お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2021-12-04 13:54:20

gbaka
新しいメンバ
登録日: 2021-12-04

/usr/libはルートパーティションになければならないか

 お世話になります。

 ルートパーティションの容量が少なくなってきてバージョンのアップグレードができない状況に陥ったため、/usrを別の既存のパーティションにコピーし、/usrにはシンボリックリンクを置く形にすることを考えました。
 ところが実際にやってみると、ブート時に/sbin/initの起動のところで
/sbin/init: error while loading shared libraries: libip4tc.so.0: cannot open shared object file: No such file or directory
 というエラーでカーネルがパニックします。
 調べてみると、このlibip4tc.so.0は/usr/libにあります。

 さて、これはlibip4tc.so.0のパッケージのバグなのでバグ報告すべきでしょうか? それとも、Ubuntuでは/usrはルートに置かなければならない仕様なのでしょうか?
 この点の仕様についてどなたかご存じではないでしょうか。

オフライン

 

#2 2021-12-08 08:15:42

taka.zoo.n
メンバ
登録日: 2013-05-30

Re: /usr/libはルートパーティションになければならないか

ルートパーティションの容量が少なくなってきてバージョンのアップグレードができない状況に陥ったため、/usrを別の既存のパーティションにコピーし、/usrにはシンボリックリンクを置く形にすることを考えました。

私は /usr を別パーティションにしてそのデバイスを /usr にマウントしていますが、問題なく動いています。
/etc/fstab のエントリーは

コード:

UUID=ファルシステムのUUID /usr            ext4    defaults        0       2

(「ファイルシステムのUUID」はそのパーティションにあるファイルシステムのUUIDを調べて記述します。)

詳しくは理解できていないのですが / と /usr は boot 時に特別扱いされて、その情報は /etc/fstab から採られます。(man bootup の BOOTUP IN THE INITIAL RAM DISK や man systemd.special の initrd-fs.target に sysroot-usr.mount が出てきますが内容が分かりません。)/usr を symbolic link にすると /usr/lib が使えるようになるのが一般のファイルシステムと同じタイミング(local-fs.target?)まで遅れるのでエラーになるのだと推測します。

オフライン

 

#3 2021-12-09 19:46:22

gbaka
新しいメンバ
登録日: 2021-12-04

Re: /usr/libはルートパーティションになければならないか

 ありがとうございます。
 私もその後/usrに直接マウントしたら別扱いされるのかなというところまでは辿り着いたのですが、使えるパーティションはすでに別のところにマウントしているのでその構成を採れませんでした。/etc/fstabのオプションのところにx-initrd.mountを追加したら何か変わるかも…というところまで調べてあきらめました。
 とりあえず/varの方を移動して容量をあけました。AppArmorが有効なので/etc/apparmor.d/tunables/aliasにパスを追加しないとうまく動かないとかこれはこれですんなりとはいきませんでしたが。

オフライン

 

Board footer

Powered by FluxBB