Петля между mount и mkdir - PullRequest
       9

Петля между mount и mkdir

0 голосов
/ 10 января 2019

Я пытаюсь смонтировать некоторые разделы с помощью этого скрипта. Это именно то, что я использую в своей системе:

#!/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.

...