使用 emacs 编辑 grub.cfg 文件

使用 emacs 来编辑 grub.cfg 文件

首先来看看 grub.cfg 文件的权限,内容如下:

[longyu@debian-10:20:15:39] ~ $ ls -lh /boot/grub/grub.cfg 
-r--r--r-- 1 root root 7.9K 9月  30 16:12 /boot/grub/grub.cfg

grub.cfg 文件的 owner 与属组都是 root,普通用户只有读权限,没有写权限。除非你直接使用 root 用户来启动 emacs ,否则 grub.cfg 文件将无法被修改。

我们一般都是使用普通用户来启动 emacs 的,难道为了编辑一个 grub.cfg 文件必须关闭 emacs 后以 root 用户启动吗?这样不免有点太过低级了。那问题来了——能不能在 emacs 中临时提升权限,就像在 bash 中执行 sudo 命令临时获取 root 权限一样呢?

经过搜索我发现的确可以这样做,有两种方式:

  1. C-x C-f /su::filename
  2. C-x C-f /sudo::filename

我使用第一种方式,按下 C-x C-f 后输入 /su: 之后选择了我的 hostname,然后就需要输入密码,验证通过后就可以输入文件所在目录,以 root 权限打开文件。

示例内容如下:

Password for /su:root@debian-10: xxxxxxxxx
Find file: /su:debian-10:/boot/grub/grub.cfg

这之后 emacs 打开了一个缓冲区,我尝试修改缓冲区中的内容时有如下警告:

Buffer is read-only: #<buffer grub.cfg</su:root@debian-10:>>

这个警告表明当前缓冲区是只读的,无法进行修改。解决方法是关闭 read-only-mode,按下 M-x 并输入 read-only-mode,按下回车键便关闭了 read-only-mode,这之后缓冲区的内容可以修改,直接使用 C-x C-s 就可以写回修改到 grub.cfg 中。

由于我需要在内核启动的一长串参数后添加一个选项,我在内核的启动命令之后输入一个空格后,原来的长行被切割为多行,这样会在引导时产生问题。为了避免长行被切割,我执行 M-x 并输入 auto-fill-mode,关闭了自动填充模式,这之后就可以在长行后继续输入,而不会自动断行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值