Files
Linux_Drivers/ramdisk/initramfs/glibc_arm64/bin/format.sh
sam.xiang 1cf39ecdd5 [ramdisk] add cvitek pre-built ramdisk
Change-Id: Ic7d2046a23358129eaf621b5558984a64fa7361d
2023-03-10 20:35:40 +08:00

150 lines
3.0 KiB
Bash
Executable File

#! /bin/sh
VERSION="0.1"
execute ()
{
$* >/dev/null
if [ $? -ne 0 ]; then
echo
echo "ERROR: executing $*"
echo
exit 1
fi
}
version ()
{
echo
echo "`basename $1` version $VERSION"
echo "Script to create bootable SD card for Linux"
echo
exit 0
}
usage ()
{
echo "
Usage: `basename $1` <options> [ files for install partition ]
Mandatory options:
--device SD block device node (e.g /dev/sdd)
Optional options:
--label sd volume label
--version Print version.
--help Print this help message.
"
exit 1
}
check_if_main_drive ()
{
mount | grep " on / type " > /dev/null
if [ "$?" != "0" ]
then
echo "-- WARNING: not able to determine current filesystem device"
else
main_dev=`mount | grep " on / type " | awk '{print $1}'`
echo "-- Main device is: $main_dev"
echo $main_dev | grep "$device" > /dev/null
[ "$?" = "0" ] && echo "++ ERROR: $device seems to be current main drive ++" && exit 1
fi
}
unmount_all_partitions ()
{
for i in `ls -1 $device*`; do
echo "unmounting device '$i'"
umount $i 2>/dev/null
done
mount | grep $device
}
# Check if the script was started as root or with sudo
user=`id -u`
[ "$user" != "0" ] && echo "++ Must be root/sudo ++" && exit
label="SD"
# Process command line...
while [ $# -gt 0 ]; do
case $1 in
--help | -h)
usage $0
;;
--device) shift; device=$1; shift; ;;
--label) shift; label=$1; shift; ;;
--version) version $0;;
*) copy="$copy $1"; shift; ;;
esac
done
test -z $device && usage $0
if [ ! -z $sdkdir ] && [ ! -d $sdkdir ]; then
echo "ERROR: $sdkdir does not exist"
exit 1;
fi
if [ ! -b $device ]; then
echo "ERROR: $device is not a block device file"
exit 1;
fi
check_if_main_drive
#check_if_big_size
#echo "************************************************************"
#echo "* THIS WILL DELETE ALL THE DATA ON $device *"
#echo "* *"
#echo "* WARNING! Make sure your computer does not go *"
#echo "* in to idle mode while this script is *"
#echo "* running. The script will complete, *"
#echo "* but your SD card may be corrupted. *"
#echo "* *"
#echo "* Press <ENTER> to confirm.... *"
#echo "************************************************************"
#read junk
#udevadm control -s
unmount_all_partitions
execute "dd if=/dev/zero of=$device bs=1024 count=1024"
sync
cat << END | fdisk $device
n
p
1
t
b
w
END
sleep 1
# handle various device names.
PARTITION1=${device}1
if [ ! -b ${PARTITION1} ]; then
PARTITION1=${device}p1
fi
# make partitions.
echo "Formatting ${device} ..."
if [ -b ${PARTITION1} ]; then
mkfs.fat -F 32 -s 128 -n ${label} ${PARTITION1}
else
echo "Cant find boot partition in /dev"
exit 1
fi
echo "completed!"
exit 0