我编写了一个脚本,用于将boot
目录从microSD卡迁移到USB驱动器。这是用于树莓派4项目的。作为该脚本的一部分,将更新两个文件以删除microSD引用并使用USB拇指驱动器的UUID引用。该脚本以sudo
的身份运行。用于更新/boot/cmdline.txt
和/etc/fstab
文件的脚本如下:
#!/bin/bash
fCMDLINE=/boot/cmdline.txt
fFSTAB=/etc/fstab
cat $fCMDLINE
sed -i -r -e 's/PARTUUID=([a-z]\S*)/PARTUUID='"$vPARTUUID"'/g' $fCMDLINE
cat $fCMDLINE
cat $fFSTAB
sed -i -r -e 's/PARTUUID=([a-z]\S*)/\/dev\/disk\/by-uuid\/'"$vUUID"'/g' $fFSTAB
cat $fFSTAB
运行整个脚本后,前置和后置文件如下:
CMDLINE FILE
#ORIGINAL
console=serial0,115200 console=tty1 root=PARTUUID=d9b3f436-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles
#UPDATED
console=serial0,115200 console=tty1 root=PARTUUID=0b1e4c33-0a73-4c26-aad2-03c1b5fd9266 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles
FSTAB FILE
#ORIGINAL
proc /proc proc defaults 0 0
PARTUUID=d9b3f436-01 /boot vfat defaults 0 2
PARTUUID=d9b3f436-02 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
#UPDATED
proc /proc proc defaults 0 0
/dev/disk/by-uuid/5bee13fa-5c62-45b0-91ed-12c544d4b528 /boot vfat defaults 0 2
/dev/disk/by-uuid/5bee13fa-5c62-45b0-91ed-12c544d4b528 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
两个文件的输出均正确,并且sed命令似乎已在替换UUID时按预期执行。但是,当我重新启动树莓派时,原始fstab
文件会保留下来,并且不会更新。这仅在重启后发生。在此之前,文件是正确的,并且一切都按预期装入。
#After Reboot
pi@raspberrypi:~ $ sudo cat /etc/fstab
proc /proc proc defaults 0 0
PARTUUID=d9b3f436-01 /boot vfat defaults 0 2
PARTUUID=d9b3f436-02 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
没关系,但这是两个具有权限的文件。
/boot/
-rwxr-xr-x 1 root root 191 Dec 8 01:01 cmdline.txt
/etc/
-rw-r--r-- 1 root root 314 Sep 26 01:31 fstab
预期的行为将是fstab
文件保持重新引导的方式与cmdline.txt
文件持久保持的方式相同。显然有些东西我只是想念。有什么想法吗?
更新...
我以前没有注意到,但是上面的两个文件没有相同的日期--9/26文件是Buster(9/26)图像中的原始文件,并且没有更新。重新启动之前,文件为:
-rw-r--r-- 1 root root 382 Dec 8 18:16 fstab
莫名其妙-我觉得这是硬件问题或更深层的操作系统错误。