![/usr/sbin/grub-mkconfig: 11: /etc/default/grub: : 权限被拒绝](https://linux22.com/image/1020844/%2Fusr%2Fsbin%2Fgrub-mkconfig%3A%2011%3A%20%2Fetc%2Fdefault%2Fgrub%3A%20%3A%20%E6%9D%83%E9%99%90%E8%A2%AB%E6%8B%92%E7%BB%9D.png)
我在更新系统时遇到了问题。我发现在“sudo apt upgrade”期间更新 grub 会出现问题。
Removing linux-image-5.4.0-42-generic (5.4.0-42.46) ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-5.4.0-42-generic
/etc/kernel/postrm.d/zz-update-grub:
Sourcing file `/etc/default/grub'
/usr/sbin/grub-mkconfig: 11: /etc/default/grub: : Permission denied
run-parts: /etc/kernel/postrm.d/zz-update-grub exited with return code 127
dpkg: error processing package linux-image-5.4.0-42-generic (--remove):
installed linux-image-5.4.0-42-generic package post-removal script subprocess returned error exit status 1
dpkg: too many errors, stopping
Errors were encountered while processing:
linux-image-5.4.0-42-generic
Processing was halted because there were too many errors.
E: Sub-process /usr/bin/dpkg returned an error code (1)
然后我也尝试了“sudo update-grub”并得到了这个
Sourcing file `/etc/default/grub'
/usr/sbin/grub-mkconfig: 11: /etc/default/grub: : Permission denied
grub 文件(/etc/default/grub)本身如下所示:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX= ""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
“ls -ldh /etc/default/grub”
-rw-r--r-- 1 root root 1,2K Nov 30 21:41 /etc/default/grub
有人有想法吗?
答案1
错误是分配中的空格
GRUB_CMDLINE_LINUX= ""
在 /etc/default/grub 文件的第 11 行。它导致 shell(可能是/bin/sh
)将其解析为“不分配任何内容GRUB_CMDLINE_LINUX
,然后GRUB_CMDLINE_LINUX
在其环境中运行没有名称的命令”。
您可以按如下方式复制错误的格式:
$ sh -c 'GRUB_CMDLINE_LINUX= ""'
sh: 1: : Permission denied
而 bash 报告则更有帮助
$ bash -c 'GRUB_CMDLINE_LINUX= ""'
bash: : command not found
该行应为
GRUB_CMDLINE_LINUX=""
尽管GRUB_CMDLINE_LINUX=
也应该可以工作。