我在带有 U-boot 引导加载程序的 Banana PI 上的 SD 卡上运行 Debian 8.1。
我试图强制我的系统fsck
重新启动后运行,但无论我做什么,都没有发生。到目前为止,我已经尝试过以下方法:
- 设置
FSCKFIX=yes
在里面/etc/defaults/rcS
touch /forcefsck
和reboot
- 更新
/proc/cmdline
以包含fsck.mode=force
和fsck.repair=yes
(这是通过将cp
文件复制到另一个位置,然后再复制mount -n --bind
到它来完成的)
不管怎样,什么也不会发生。当我查看日志文件 ( /var/logs/fsck/checkfs
) 时,没有任何条目。
我尝试创建自己的文件以在启动时运行,该文件会调用fsck
,我查看了自己的日志文件,我看到的只是fsck from util-linux 2.25.2
.我更改了初始化脚本以在驱动器上显式运行(即fsck -yf /dev/mmcblk0p2
),然后日志文件表示系统正在中止,因为驱动器已安装。仅供参考,这个初始化脚本是在运行之前运行checkfs
的checkroot
!
我真的很感激任何帮助!
答案1
我最近在 BananaPi 上偶然发现了这一点。这可能是你用 Systemd 启动的所以FSCKFIX=yes
在里面设置/etc/defaults/rcS
不会帮助你。也是/proc
一个虚拟文件系统,因此更改将在重新启动之间消失。
设置这些内核选项对于 来说是正确的systemd
,但您需要将它们附加到启动参数中。
在/boot/boot.cmd
我附加fsck.repair=yes
到的末尾setenv bootargs
:
setenv bootargs "console=tty1 root=/dev/mmcblk0p1 rootwait rootfstype=ext4 cgroup_enable=memory swapaccount=1 sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_no_mali_mem_reserve sunxi_fb_mem_reserve=16 hdmi.audio=EDID:0 disp.screen0_output_mode=1920x1080p60 panic=10 consoleblank=0 enforcing=0 loglevel=${verbosity} fsck.repair=yes"
重要的是要注意,您需要使用以下命令重新生成/boot/boot.cmd
它们才会出现(它打印在 的末尾/boot/boot.cmd
)
mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
您可以在重新启动后确认它已应用cat
:
~# cat /proc/cmdline
console=tty1 root=/dev/mmcblk0p1 rootwait rootfstype=ext4 cgroup_enable=memory swapaccount=1 sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_no_mali_mem_reserve sunxi_fb_mem_reserve=16 hdmi.audio=EDID:0 disp.screen0_output_mode=1920x1080p60 panic=10 consoleblank=0 enforcing=0 loglevel=1 fsck.repair=yes