埋め込みデバイスでubuntu(ubuntu 16.04.4 LTSと4.4.113カーネル)を使用していますが、fstabに1つのエントリしか表示されません
/dev/mmcblk0p7 / ext4 errors=remount-ro,noatime,nodiratime 0 1
「mount」コマンドを使用してマウントされたパーティションを確認すると、多数のパーティションがマウントされているのがわかります。どういうわけか自動マウントされた関係パーティションは
/dev/mmcblk0p5 on /lib/modules type ext4 (ro,relatime,data=ordered)
/ etc/fstabにエントリがない場合、どのようにマウントされたのか理解できません。
Ubuntu 16.04は、ファイルシステムをマウントできるsystemd
を使用します。 Ubuntuは実際には従来の方法で/etc/fstab
を使用しなくなりました。システムが起動すると、systemd
は/etc/fstab
の各行をチェックし、各エントリにmount
systemd
サービスを作成します。 systemd
が管理している各マウントのステータスを表示するには、systemctl status *.mount
を実行できる必要があります。
つまり、Ubuntuがありますが、カスタムブートスクリプトがいくつかあります。
おそらく、マウントは_.service
_内の一部の_/etc/systemd/system/
_ファイルによって開始されていると思います。 (他のコメントに基づいて、_.mount
_ファイルがないようです-つまり、_lib-modules.mount
_ファイルがありません)。
しかし、マウントは他の多くの場所から開始される可能性があります。また、_.service
_内の_/lib/systemd/system
_ファイルに含めることもできます。別のスクリプトを実行することで間接的にmount
を実行する可能性があるため、すばやく_grep mount *.service
_を実行しても、探しているものが見つかるとは限りません。
または、ベンダーが組み込みの「Ubuntu」イメージに対するカスタム変更を文書化している場合もあります。
そうでない場合は、Ubuntu以外からの変更/作成されたファイルを検索するための一連のメソッドがあります。
.deb
_パッケージソースなしで直接インストールされた.debパッケージを検索するには、_aptitude search ?obsolete
_を実行します。 (これは、パッケージがaptソースからインストールされたが、aptソースから利用できなくなった場合にも表示されます。これらのパッケージは「廃止された」と見なされます)。
- https://raphaelhertzog.com/2011/02/07/debian-cleanup-tip-2-get-rid-of-obsolete-packages/
疑わしいパッケージ名が見つかった場合は、それらのファイルを一覧表示できます。例えば。インストールされているパッケージfooの場合、_dpkg-query -L foo
_を実行します。逆に、疑わしいファイルを見つけて、それを所有するパッケージを調査する場合は、_dpkg-query -s /path/to/file
_を実行します。
有効化されたaptソースからインストールされたパッケージを検索するには、自身をUbuntu以外のものとして宣伝します。aptitude search '?narrow(?installed, !?origin(Ubuntu))!?obsolete'
を実行できます。
_apt-cache policy
_を使用して、最初にソースのリストを確認することにより、警告を確認することもできます。ソースのOriginは_o=Ubuntu
_のように表示されます。
- https://raphaelhertzog.com/2011/02/14/debian-cleanup-tip-3-get-rid-of-third-party-packages/
比較のため、16.04では、デフォルトの公式ソースは次のようになります。
_###### Ubuntu Main Repos
deb http://uk.archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse
###### Ubuntu Update Repos
deb http://uk.archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://uk.archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse
_
(これらに適したドキュメントを見つけるのは難しいため、人気のあるユーティリティ https://repogen.simplylinux.ch から取得しました)。
またはその逆:疑わしいパッケージfooに関連付けられているソースを検索するには、_apt-cache policy foo
_を実行します
インストール済みパッケージのファイルへの変更を確認するには(これらを変更しないことには非常に十分な理由がありますが、それは可能性があります)、debsums
をインストールして_debsums -c
_を実行します。
- https://raphaelhertzog.com/2011/02/21/debian-cleanup-tip-4-find-broken-packages-and-reinstall-them/
管理されているaptパッケージ以外で作成されたファイルを検索するスクリプトを作成することが可能です。これはほぼ間違いなくいくつかの誤警報を示します。この目的のためにサンプルスクリプトを調べました。
_(
export LC_ALL=C
comm -23 <(find /etc /lib /bin /sbin /usr -type f | sort) \
<(sort -u /var/lib/dpkg/info/*.list)
)
_
ただし、ノイズが多すぎる場合は、cruft
コマンドを試してみることをお勧めします。これは、明らかに同じことを行いますが、無視しても安全なファイルをいくつか知っています。 _cruft -d "/etc /lib /bin /sbin /usr" --ignore "/usr/local"
_。
ここで検索されるディレクトリのリストは、ちょっとした判断の呼びかけです。うまくいけば、/ etc、/ usr、/ libは、ほとんどのUbuntuシステムのブートスクリプトをカバーする必要があります。 systemd設定またはsysvinitスクリプト。あなたのケースでは、非常にearlyブートスクリプトを見つけたいことに注意してください。 _/lib/modules
_のマウントは非常に早い段階で行う必要があるため、カーネルモジュールをそこからロードできます。 udev
を起動する前にマウントする必要があります。
(一方で、これはinitrdに恐ろしいハッキングが存在する可能性を引き起こします。そのため、私はinitrdジェネレーターの変更または置き換えに注意していると思います-これは_initramfs-tools
_と呼ばれると思います)。
この回答にリンクされている非常に有用な一連のブログ投稿を作成してくださったRaphaëlHertzogに感謝します。