首页 > 解决方案 > 在 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.

标签: shellpartitioningmountmkdir

解决方案


推荐阅读