我有一个嵌入式系统,其操作系统由 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:~#
答案1
有时在嵌入式系统上,/
文件系统以只读方式安装,通常是因为它的存储类型会随着多次写入而降级,并且寿命是优先考虑的。
此特定问题的临时解决方案是将文件系统重新挂载为rw
,进行必要的更改,然后再次重新挂载到“ro”。这可能只是暂时的,因为可能尚未对持久存储进行更改。
有时,映像会提供一种使更改持久化的方法,例如,通过写入持久存储中的配置文件来在启动期间读取该配置文件(在您的情况下,我首先要查看的位置是/persist
,但也可以在图像的文档(如果有的话)。
如果这确实是一组不兼容的服务,正确的解决方案可能是通过仅启用所需的服务来修复底层映像,然后重新刷新您的设备。