Systemd
systemd:禁用單元失敗:只讀文件系統
我有一個嵌入式系統,其作業系統由 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
是圖像的文件,如果有的話)。如果這確實是一組不兼容的服務,那麼正確的解決方案可能是通過僅啟用所需的服務來修復底層映像,然後重新刷新您的設備。