首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ubuntu内核的rc.local编辑

Ubuntu内核的rc.local编辑
EN

Ask Ubuntu用户
提问于 2018-04-10 14:08:41
回答 2查看 2.5K关注 0票数 2

我试图在Ubuntu上创建一个启动脚本,以使usb_modeswitch能够更改连接到该设备的设备之一的模式。我正在Dragonboard410c上运行Ubuntu。

和经典的Ubuntu桌面一样,我尝试过编辑/etc/rc.local

然而,即使我做了sudo vi /etc/rc.local,我也不能编辑rc.local,因为它抱怨它只是一个只读文件。

我试着直接从SD卡编辑文件(这适用于netplan上的配置文件),但是在SD卡中看不到rc.local

您应该如何在Ubuntu的引导上使用apt风格的包。我需要为这个创建一个单独的快照吗?

提前谢谢你

EN

回答 2

Ask Ubuntu用户

发布于 2018-04-18 04:48:33

检查根文件系统是否具有读写权限(通过/etc/mountab/etc/fstab )。只读文件系统不允许在其上编辑文件,也就是说,它本身可能不是文件问题。

如果它是只读的,请使用sudo mount -o remount,rw /命令.注意,snappy core ( iirc )出于安全考虑,它是一个只读文件系统。

票数 1
EN

Ask Ubuntu用户

发布于 2019-05-09 07:16:34

不能写入/etc/rc.local的原因是在mount命令的输出中找到的(此处截断)。

代码语言:javascript
复制
/dev/mmcblk0p4 on /writable type ext4 (rw,relatime,data=ordered)
/dev/loop0 on / type squashfs (ro,relatime)

Ubuntu将根文件系统挂载为squashfs,这是只读的。正如您在mount命令的非截断输出中看到的那样,文件系统的部分被挂载为rw,但是rc.local并不存在于其中之一。

如何绕过这个问题:

首先,rc.local是一个遗留的sysvinit文件,它已经被SystemD所取代,它现在是Ubuntu和其他发行版中的默认版本。

所以您不能通过从rc.local调用脚本来执行它,因为它是ro。在引导时使用SystemD计时器是一种更好和更细粒度的服务方式。这具有相对于其他服务提高服务的优势。这是一把手术刀对sysvinit的rc.local砍刀。

要在引导的精确点执行脚本,请使用SystemD计时器。下面显示了一个示例脚本;根据您的特定用例进行调整。

代码语言:javascript
复制
#!/bin/bash

cat <<EOF> /etc/systemd/system/myscript.service
[Unit]
Description=Customise Networking
Requires=network-online.target
After=snap.wifi-ap.management-service.service

[Service]
User=root
Group=root
Type=oneshot
ExecStart=/home/myuser/scripts/myscript.sh

[Install]
WantedBy=multi-user.target

EOF

chmod 644 /etc/systemd/system/myscript.service

systemctl enable myscript.service

这已经过测试,并被证明可以提升我在引导时创建的自定义服务,并在重新启动后存活下来。HTH-

票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1023666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档