shell - 在 mount 和 mkdir 之间循环
问题描述
我正在尝试使用此脚本安装一些分区。这正是我在我的系统上运行的:
#!/bin/bash
FILENAME="2018-11-13-raspbian-stretch-lite.img"
MOUNTPATH="/mnt/rasp-pi-rootfs"
HOMEPATH=$(pwd)
cd $HOMEPATH
set +e
umount /dev/loop0p4
umount /dev/loop0p3
umount /dev/loop0p1
umount /dev/loop0p2
losetup -D
losetup -a
rm $FILENAME
rm $HOMEPATH/home.tgz
set -e
unzip $FILENAME.zip
truncate -s +800M $FILENAME
sed -e 's/\s*\([\+0-9a-zA-Z]*\).*/\1/' << EOF | fdisk $FILENAME
d # delete partition
2 # partition number 2
n # new partition
p # primary
2 # partition number 2
98304 # first sector
+2G # 2GB partition
n # don't remove the signature
n # new partition
p # primary
3 # partition number 3
4292608 # first sector
+50M # 50MB partition
n # new partition
p # primary
4395008 # first sector
5283839 # last sector
t # change partition type
4 # partition number 4
c # W96 FAT32 (LBA)
p # print partition table
w # write and exit
EOF
losetup -P /dev/loop0 $FILENAME
e2fsck -f /dev/loop0p2
resize2fs /dev/loop0p2
mkfs.ext4 /dev/loop0p3
e2fsck -f /dev/loop0p3
mkfs.vfat -F 32 /dev/loop0p4
mount /dev/loop0p2 $MOUNTPATH
cd $MOUNTPATH/home/
tar cf $HOMEPATH/home.tgz pi/
rm -r pi/
cd $HOMEPATH
mount /dev/loop0p1 $MOUNTPATH/boot/
mount /dev/loop0p3 $MOUNTPATH/home/
tar xf home.tgz -C /mnt/rasp-pi-rootfs/home/
rm $MOUNTPATH/etc/init.d/resize2fs_once
rm $MOUNTPATH/etc/rc3.d/S01resize2fs_once
#mkdir -p $MOUNTPATH/home/pi/resources
mount /dev/loop0p4 $MOUNTPATH/home/pi/resources
如果没有mkdir
最后一次mount
调用失败,则表示挂载点不存在(实际上它不存在)。相反,如果我尝试创建目录,mkdir
则无法说目录已经存在(它实际上存在,但-p
不应该返回错误)。
我不明白这里发生了什么。脚本运行为root
.
解决方案
推荐阅读
- angular - 如何在 TypeScript 中正确格式化日期以进行比较
- python - 显示每个条形图的均值虚线
- julia - Julia 中 deepcopy() 的替代方案
- maven - 将项目作为依赖管理添加到父 pom
- java - Java - 递归查找所有具有两个日期之间修改日期的扩展名的文件
- keras - 在 GPU 模式下使用 keras.layers.Dot 时如何修复从空列表中弹出的错误
- jquery - 如何将字符串转换为 ECS/P Hex
- typescript - 有没有一种优雅的方式在打字稿中拥有值对象?
- postgresql - 未连接到服务器 - postgresql
- python - Django 的 urls 文件解释两次