Systemd

systemd:禁用單元失敗:只讀文件系統

  • August 8, 2020

我有一個嵌入式系統,其作業系統由 yocto(汽車級 Linux:Halibut 8.0)建構,具有 2 個競爭 dhcp 客戶端:connman 和 systemd-networkd。

sa8155:~# systemctl --type=service

 connman.service                                        loaded active running Connection service
 systemd-networkd.service                               loaded active running Network Service

我想禁用 connman,但是當我嘗試時出現這個奇怪的錯誤:

sa8155:~# systemctl disable connman.service
Failed to disable unit: File /etc/systemd/system/multi-user.target.wants/connman.service: Read-only file system

我是根。所以我不確定為什麼它不允許我刪除這個文件。

sa8155:~# ls -l /etc/systemd/system/multi-user.target.wants/connman.service
lrwxrwxrwx 1 root root 35 Nov 27  2019 /etc/systemd/system/multi-user.target.wants/connman.service -> /lib/systemd/system/connman.service
sa8155:~# 

有誰知道為什麼?

禁用此服務的正確方法是什麼?

似乎存在異常數量的文件系統:

sa8155:~# df -hT
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/root     ext4    1.4G  504M  812M  39% /
devtmpfs  devtmpfs    291M     0  291M   0% /dev
tmpfs        tmpfs    443M     0  443M   0% /dev/shm
tmpfs        tmpfs    443M   18M  425M   4% /run
tmpfs        tmpfs    443M     0  443M   0% /sys/fs/cgroup
tmpfs        tmpfs    443M   18M  425M   4% /etc/machine-id
/dev/sde4     vfat    180M   53M  128M  30% /firmware
/dev/sde5     vfat     64M  512K   64M   1% /bluetooth
/dev/sde9     ext4     59M   21M   38M  36% /dsp
/dev/sda2     ext4    122M   12M  108M  10% /var
/dev/sda2     ext4    122M   12M  108M  10% /etc/bluetooth
/dev/sda2     ext4    122M   12M  108M  10% /persist
/dev/sda2     ext4    122M   12M  108M  10% /etc/build.prop
/dev/sda2     ext4    122M   12M  108M  10% /etc/usb
/dev/sda2     ext4    122M   12M  108M  10% /etc/misc/wifi
/dev/sda2     ext4    122M   12M  108M  10% /etc/smack/accesses.d
/dev/sda2     ext4    122M   12M  108M  10% /etc/adb_devid
tmpfs        tmpfs    443M  416K  442M   1% /var/volatile
tmpfs        tmpfs    443M  416K  442M   1% /persist/volatile
/dev/sda8     ext4    108G  6.4G  101G   6% /data
/dev/sda8     ext4    108G  6.4G  101G   6% /home
tmpfs        tmpfs    755M  4.0K  755M   1% /run/user/0
/dev/sda8     ext4    108G  6.4G  101G   6% /home/root/adas/dev
/dev/sda8     ext4    108G  6.4G  101G   6% /data/root/adas/dev
sa8155:~# 

有時在嵌入式系統上,/文件系統以只讀方式掛載,通常是因為它的儲存類型會因多次寫入而降級,並且優先考慮壽命。

此特定問題的臨時解決方案是將文件系統重新掛載為rw,進行必要的更改,然後再次重新掛載到 `ro. 這可能只是暫時的,因為可能尚未對持久儲存進行更改。

有時,映像會附帶一種使更改持久化的方法,例如,通過寫入在啟動期間讀取的持久儲存中的配置文件(在您的情況下,我首先要看的地方/persist是圖像的文件,如果有的話)。

如果這確實是一組不兼容的服務,那麼正確的解決方案可能是通過僅啟用所需的服務來修復底層映像,然後重新刷新您的設備。

引用自:https://unix.stackexchange.com/questions/603416