Few more nand-sata-install fixes

This commit is contained in:
ThomasKaiser 2017-09-05 08:42:23 -07:00
parent 4c84347490
commit 4fc19b3284

View File

@ -26,17 +26,18 @@ backtitle="Armbian for $BOARD_NAME install script, http://www.armbian.com"
title="NAND, eMMC, SATA and USB Armbian installer v${VERSION}"
# exception
if cat /proc/cpuinfo | grep -q 'sun4i'; then DEVICE_TYPE="a10"; else DEVICE_TYPE="a20"; fi
if grep -q 'sun4i' /proc/cpuinfo; then DEVICE_TYPE="a10"; else DEVICE_TYPE="a20"; fi
BOOTLOADER="${CWD}/${DEVICE_TYPE}/bootloader"
#recognize_root
root_partition=$(cat /proc/cmdline | sed -e 's/^.*root=//' -e 's/ .*$//')
root_partition_device=$(blkid | tr -d '":' | grep $( cat /proc/cmdline | sed -e 's/^.*root=//' -e 's/ .*$//') | awk '{print $1}'| rev | cut -c3- | rev)
root_uuid=$(sed -e 's/^.*root=//' -e 's/ .*$//' < /proc/cmdline)
root_partition=$(blkid | tr -d '":' | grep ${root_uuid} | awk '{print $1}')
root_partition_device="${root_partition::-2}"
# find targets: NAND, EMMC, SATA
[[ -b /dev/nand ]] && nandcheck=$(ls -d -1 /dev/nand* | grep -w 'nand' | awk '{print $NF}');
emmccheck=$(ls -d -1 /dev/mmcblk* | grep -w 'mmcblk[0-9]' | grep -v "$root_partition_device");
satacheck=$(cat /proc/partitions | grep 'sd' | awk '{print $NF}')
satacheck=$(grep 'sd' /proc/partitions | awk '{print $NF}')
# define makefs and mount options
declare -A mkopts mountopts
@ -54,18 +55,11 @@ mountopts[btrfs]='defaults,noatime,nodiratime,commit=600,compress=lzo 0 2'
create_armbian()
{
# create mount points, mount and clean
sync && mkdir -p /mnt/bootfs /mnt/rootfs
if [[ $eMMCFilesystemChoosen == "btrfs" && $FilesystemChoosen == "btrfs" ]]; then
[[ -n $1 ]] && mount ${1::-1}"1" /mnt/bootfs
[[ -n $2 ]] && mount -o compress-force=zlib $2 /mnt/rootfs
elif [[ $eMMCFilesystemChoosen == "btrfs" && $FilesystemChoosen != "btrfs" ]]; then
[[ -n $1 ]] && mount ${1::-1}"1" /mnt/bootfs
[[ -n $2 ]] && mount -o compress-force=zlib $2 /mnt/rootfs
else
[[ -n $2 ]] && mount $2 /mnt/rootfs
[[ -n $1 ]] && mount $1 /mnt/bootfs
fi
rm -rf /mnt/bootfs/* /mnt/rootfs/*
TempDir=$(mktemp -d /mnt/${0##*/}.XXXXXX || exit 1)
sync && mkdir -p ${TempDir}/bootfs ${TempDir}/rootfs
[[ -n $1 ]] && mount ${1::-1}"1" ${TempDir}/bootfs
[[ -n $2 ]] && ( mount -o compress-force=zlib $2 ${TempDir}/rootfs || mount $2 ${TempDir}/rootfs )
rm -rf ${TempDir}/bootfs/* ${TempDir}/rootfs/*
# sata root part
# UUID=xxx...
@ -77,73 +71,78 @@ create_armbian()
# calculate usage and see if it fits on destination
USAGE=$(df -BM | grep ^/dev | head -1 | awk '{print $3}' | tr -cd '[0-9]. \n')
DEST=$(df -BM | grep ^/dev | grep /mnt/rootfs | awk '{print $4}' | tr -cd '[0-9]. \n')
DEST=$(df -BM | grep ^/dev | grep ${TempDir}/rootfs | awk '{print $4}' | tr -cd '[0-9]. \n')
if [[ $USAGE -gt $DEST ]]; then
dialog --title "$title" --backtitle "$backtitle" --colors --infobox\
"\n\Z1Partition too small.\Zn Needed: $USAGE Mb Avaliable: $DEST Mb" 5 60
dialog --title "$title" --backtitle "$backtitle" --colors --infobox\
"\n\Z1Partition too small.\Zn Needed: $USAGE MB Avaliable: $DEST MB" 5 60
umountdevice "$1"; umountdevice "$2"
exit 1
fi
if [[ $1 == *nand* ]]; then
# creating nand boot. Copy precompiled uboot
rsync -aqc $BOOTLOADER/* /mnt/bootfs
rsync -aqc $BOOTLOADER/* ${TempDir}/bootfs
fi
# write stuff to log
[ -f $logfile ] && echo -e "\n\n\n" >> $logfile
LANG=C echo -e "$(date): Start ${0##*/}. Files open for write:" >> $logfile
lsof / | awk 'NR==1 || $4~/[0-9][uw]/' >> $logfile
echo -e "\nSD uuid: $sduuid" >> $logfile
echo "Satauid: $satauuid" >> $logfile
echo "Emmcuuid: $emmcuuid $eMMCFilesystemChoosen" >> $logfile
echo -e "\nOld UUID: ${root_uuid}" >> $logfile
echo "SD UUID: $sduuid" >> $logfile
echo "SATA UUID: $satauuid" >> $logfile
echo "eMMC UUID: $emmcuuid $eMMCFilesystemChoosen" >> $logfile
echo "Boot: \$1 $1 $eMMCFilesystemChoosen" >> $logfile
echo "Root: \$2 $2 $FilesystemChoosen" >> $logfile
echo "Usage: $USAGE" >> $logfile
echo "Dest: $DEST" >> $logfile
echo -e "Dest: $DEST\n\n/etc/fstab:" >> $logfile
cat /etc/fstab >> $logfile
echo -e "\n/etc/mtab:" >> $logfile
grep '^/dev/' /etc/mtab | egrep -v "log2ram|folder2ram" | sort >> $logfile
# stop running services
echo -e "\nFiles currently open for writing:" >> $logfile
lsof / | awk 'NR==1 || $4~/[0-9][uw]/' | grep -v "^COMMAND" >> $logfile
echo -e "\nTrying to stop running services to minimize open files:\c" >> $logfile
StopRunningServices "nfs-|smbd|nmbd|winbind|ftpd|netatalk|monit|cron|webmin|rrdcached" >> $logfile
StopRunningServices "log2ram|folder2ram|postgres|mariadb|mysql|postfix|mail|nginx|apache|snmpd" >> $logfile
echo -e "\n" >> $logfile
pkill dhclient 2>/dev/null
LANG=C echo -e "\n\nAgain checking for open files:" >> $logfile
lsof / | awk 'NR==1 || $4~/[0-9][uw]/' | grep -v "^COMMAND" >> $logfile
# count files is needed for progress bar
dialog --title "$title" --backtitle "$backtitle" --infobox "\n Counting files ... few seconds." 5 40
TODO=$(rsync -ahvrltDn --delete --stats --exclude-from=$EX_LIST / /mnt/rootfs | grep "Number of files:"|awk '{print $4}' | tr -d '.,')
TODO=$(rsync -ahvrltDn --delete --stats --exclude-from=$EX_LIST / ${TempDir}/rootfs | grep "Number of files:"|awk '{print $4}' | tr -d '.,')
# creating rootfs
rsync -avrltD --delete --exclude-from=$EX_LIST / /mnt/rootfs | nl | awk '{ printf "%.0f\n", 100*$1/"'"$TODO"'" }' \
| dialog --backtitle "$backtitle" --title "$title" --gauge "\n\n Creating rootfs on $2 ($USAGE Mb). \n\n \
rsync -avrltD --delete --exclude-from=$EX_LIST / ${TempDir}/rootfs | nl | awk '{ printf "%.0f\n", 100*$1/"'"$TODO"'" }' \
| dialog --backtitle "$backtitle" --title "$title" --gauge "\n\n Creating rootfs on $2 ($USAGE MB). \n\n \
This will take around $((USAGE/60)) minutes to finish. Please wait!\n\n" 11 80
# run rsync again to silently catch outstanding changes between / and /mnt/rootfs/
# run rsync again to silently catch outstanding changes between / and ${TempDir}/rootfs/
dialog --title "$title" --backtitle "$backtitle" --infobox "\n Cleaning up ... few seconds." 5 40
rsync -avrltD --delete --exclude-from=$EX_LIST / /mnt/rootfs >/dev/null 2>&1
rsync -avrltD --delete --exclude-from=$EX_LIST / ${TempDir}/rootfs >/dev/null 2>&1
# creating fstab from scratch
rm -f /mnt/rootfs/etc/fstab
mkdir -p /mnt/rootfs/etc /mnt/rootfs/media/mmcboot /mnt/rootfs/media/mmcroot
rm -f ${TempDir}/rootfs/etc/fstab
mkdir -p ${TempDir}/rootfs/etc ${TempDir}/rootfs/media/mmcboot ${TempDir}/rootfs/media/mmcroot
# Restore TMP and swap
echo "# <file system> <mount point> <type> <options> <dump> <pass>" > /mnt/rootfs/etc/fstab
echo "tmpfs /tmp tmpfs defaults,nosuid 0 0" >> /mnt/rootfs/etc/fstab
cat /etc/fstab | grep swap >> /mnt/rootfs/etc/fstab
echo "# <file system> <mount point> <type> <options> <dump> <pass>" > ${TempDir}/rootfs/etc/fstab
echo "tmpfs /tmp tmpfs defaults,nosuid 0 0" >> ${TempDir}/rootfs/etc/fstab
grep swap /etc/fstab >> ${TempDir}/rootfs/etc/fstab
# creating fstab, kernel and boot script for NAND partition
#
if [[ $1 == *nand* ]]; then
echo "Install to NAND" >> $logfile
echo -e "\nInstall to NAND" >> $logfile
REMOVESDTXT="and remove SD to boot from NAND"
#sed -i '/boot/d' /mnt/rootfs/etc/fstab
echo "$1 /boot vfat defaults 0 0" >> /mnt/rootfs/etc/fstab
echo "$2 / ext4 defaults,noatime,nodiratime,commit=600,errors=remount-ro 0 1" >> /mnt/rootfs/etc/fstab
echo "$1 /boot vfat defaults 0 0" >> ${TempDir}/rootfs/etc/fstab
echo "$2 / ext4 defaults,noatime,nodiratime,commit=600,errors=remount-ro 0 1" >> ${TempDir}/rootfs/etc/fstab
dialog --title "$title" --backtitle "$backtitle" --infobox "\nConverting kernel ... few seconds." 5 60
mkimage -A arm -O linux -T kernel -C none -a "0x40008000" -e "0x40008000" -n "Linux kernel" -d \
/boot/zImage /mnt/bootfs/uImage >/dev/null 2>&1
cp /boot/script.bin /mnt/bootfs/
/boot/zImage ${TempDir}/bootfs/uImage >/dev/null 2>&1
cp /boot/script.bin ${TempDir}/bootfs/
# Note: Not using UUID based boot for NAND
cat <<-EOF > /mnt/bootfs/uEnv.txt
cat <<-EOF > ${TempDir}/bootfs/uEnv.txt
console=ttyS0,115200
root=$2 rootwait
extraargs="console=tty1 hdmi.audio=EDID:0 disp.screen0_output_mode=EDID:0 consoleblank=0 loglevel=1"
@ -151,12 +150,12 @@ create_armbian()
sync
[[ $DEVICE_TYPE = a20 ]] && echo "machid=10bb" >> /mnt/bootfs/uEnv.txt
[[ $DEVICE_TYPE = a20 ]] && echo "machid=10bb" >> ${TempDir}/bootfs/uEnv.txt
# ugly hack becouse we don't have sources for A10 nand uboot
if [[ $ID == Cubieboard || $BOARD_NAME == Cubieboard || $ID == "Lime A10" || $BOARD_NAME == "Lime A10" ]]; then
cp /mnt/bootfs/uEnv.txt /mnt/rootfs/boot/uEnv.txt
cp /mnt/bootfs/script.bin /mnt/rootfs/boot/script.bin
cp /mnt/bootfs/uImage /mnt/rootfs/boot/uImage
cp ${TempDir}/bootfs/uEnv.txt ${TempDir}/rootfs/boot/uEnv.txt
cp ${TempDir}/bootfs/script.bin ${TempDir}/rootfs/boot/script.bin
cp ${TempDir}/bootfs/uImage ${TempDir}/rootfs/boot/uImage
fi
umountdevice "/dev/nand"
tune2fs -o journal_data_writeback /dev/nand2 >/dev/null 2>&1
@ -165,52 +164,52 @@ create_armbian()
fi
# Boot from eMMC, root = eMMMC or SATA / USB
# Boot from eMMC, root = eMMC or SATA / USB
#
if [[ $2 == ${emmccheck}p* || $1 == ${emmccheck}p* ]]; then
if [[ $2 == ${SDA_ROOT_PART} ]]; then
local targetuuid=$satauuid
local choosen_fs=$FilesystemChoosen
echo "Boot on eMMC, root on USB/SATA" >> $logfile
echo -e "\nBoot on eMMC, root on USB/SATA" >> $logfile
if [[ $eMMCFilesystemChoosen == "btrfs" ]]; then
echo "$emmcuuid /media/mmcroot $eMMCFilesystemChoosen ${mountopts[$eMMCFilesystemChoosen]}" >> /mnt/rootfs/etc/fstab
echo "$emmcuuid /media/mmcroot $eMMCFilesystemChoosen ${mountopts[$eMMCFilesystemChoosen]}" >> ${TempDir}/rootfs/etc/fstab
fi
else
local targetuuid=$emmcuuid
local choosen_fs=$eMMCFilesystemChoosen
echo "Full install to eMMC" >> $logfile
echo -e "\nFull install to eMMC" >> $logfile
fi
# fix that we can have one exlude file
cp -R /boot /mnt/bootfs
cp -R /boot ${TempDir}/bootfs
# old boot scripts
sed -e 's,root='"$root_partition"',root='"$targetuuid"',g' -i /mnt/bootfs/boot/boot.cmd
sed -e 's,root='"$root_uuid"',root='"$targetuuid"',g' -i ${TempDir}/bootfs/boot/boot.cmd
# new boot scripts
if [[ -f /mnt/bootfs/boot/armbianEnv.txt ]]; then
sed -e 's,rootdev=.*,rootdev='"$targetuuid"',g' -i /mnt/bootfs/boot/armbianEnv.txt
if [[ -f ${TempDir}/bootfs/boot/armbianEnv.txt ]]; then
sed -e 's,rootdev=.*,rootdev='"$targetuuid"',g' -i ${TempDir}/bootfs/boot/armbianEnv.txt
else
sed -e 's,setenv rootdev.*,setenv rootdev '"$targetuuid"',g' -i /mnt/bootfs/boot/boot.cmd
[[ -f /mnt/bootfs/boot/boot.ini ]] && sed -e 's,^setenv rootdev.*$,setenv rootdev "'"$targetuuid"'",' -i /mnt/bootfs/boot/boot.ini
[[ -f /mnt/rootfs/boot/boot.ini ]] && sed -e 's,^setenv rootdev.*$,setenv rootdev "'"$targetuuid"'",' -i /mnt/rootfs/boot/boot.ini
sed -e 's,setenv rootdev.*,setenv rootdev '"$targetuuid"',g' -i ${TempDir}/bootfs/boot/boot.cmd
[[ -f ${TempDir}/bootfs/boot/boot.ini ]] && sed -e 's,^setenv rootdev.*$,setenv rootdev "'"$targetuuid"'",' -i ${TempDir}/bootfs/boot/boot.ini
[[ -f ${TempDir}/rootfs/boot/boot.ini ]] && sed -e 's,^setenv rootdev.*$,setenv rootdev "'"$targetuuid"'",' -i ${TempDir}/rootfs/boot/boot.ini
fi
mkimage -C none -A arm -T script -d /mnt/bootfs/boot/boot.cmd /mnt/bootfs/boot/boot.scr >/dev/null 2>&1 || (echo "Error"; exit 0)
mkimage -C none -A arm -T script -d ${TempDir}/bootfs/boot/boot.cmd ${TempDir}/bootfs/boot/boot.scr >/dev/null 2>&1 || (echo "Error"; exit 0)
# fstab adj
if [[ "$1" != "$2" ]]; then
echo "$emmcbootuuid /media/mmcboot ext4 ${mountopts[ext4]}" >> /mnt/rootfs/etc/fstab
echo "/media/mmcboot/boot /boot none bind 0 0" >> /mnt/rootfs/etc/fstab
echo "$emmcbootuuid /media/mmcboot ext4 ${mountopts[ext4]}" >> ${TempDir}/rootfs/etc/fstab
echo "/media/mmcboot/boot /boot none bind 0 0" >> ${TempDir}/rootfs/etc/fstab
fi
if [[ $eMMCFilesystemChoosen == "btrfs" ]]; then
echo "$targetuuid / $choosen_fs ${mountopts[$choosen_fs]}" >> /mnt/rootfs/etc/fstab
echo "$targetuuid / $choosen_fs ${mountopts[$choosen_fs]}" >> ${TempDir}/rootfs/etc/fstab
# swap file not supported under btrfs, we made a partition
sed -e 's,/var/swap.*,'$emmcswapuuid' none swap sw 0 0,g' -i /mnt/rootfs/etc/fstab
sed -e 's,rootfstype=.*,rootfstype='$eMMCFilesystemChoosen',g' -i /mnt/bootfs/boot/armbianEnv.txt
sed -e 's,/var/swap.*,'$emmcswapuuid' none swap sw 0 0,g' -i ${TempDir}/rootfs/etc/fstab
sed -e 's,rootfstype=.*,rootfstype='$eMMCFilesystemChoosen',g' -i ${TempDir}/bootfs/boot/armbianEnv.txt
else
sed -e 's,rootfstype=.*,rootfstype='$choosen_fs',g' -i /mnt/bootfs/boot/armbianEnv.txt
echo "$targetuuid / $choosen_fs ${mountopts[$choosen_fs]}" >> /mnt/rootfs/etc/fstab
sed -e 's,rootfstype=.*,rootfstype='$choosen_fs',g' -i ${TempDir}/bootfs/boot/armbianEnv.txt
echo "$targetuuid / $choosen_fs ${mountopts[$choosen_fs]}" >> ${TempDir}/rootfs/etc/fstab
fi
if [[ $(type -t write_uboot_platform) != function ]]; then
@ -224,8 +223,8 @@ create_armbian()
# Boot from SD card, root = SATA / USB
#
if [[ $2 == ${SDA_ROOT_PART} && -z $1 ]]; then
echo "Install to USB/SATA boot from SD" >> $logfile
[[ -f /boot/boot.cmd ]] && sed -e 's,root='"$root_partition"',root='"$satauuid"',g' -i /boot/boot.cmd
echo -e "\nInstall to USB/SATA, boot from SD" >> $logfile
[[ -f /boot/boot.cmd ]] && sed -e 's,root='"$root_uuid"',root='"$satauuid"',g' -i /boot/boot.cmd
[[ -f /boot/boot.ini ]] && sed -e 's,^setenv rootdev.*$,setenv rootdev "'"$satauuid"'",' -i /boot/boot.ini
# new boot scripts
if [[ -f /boot/armbianEnv.txt ]]; then
@ -240,18 +239,18 @@ create_armbian()
sed -e 's,setenv rootfstype.*,setenv rootfstype='$FilesystemChoosen',g' -i /boot/boot.ini
fi
[[ -f /boot/boot.cmd ]] && mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr >/dev/null 2>&1 || (echo "Error"; exit 0)
mkdir -p /mnt/rootfs/media/mmc/boot
echo "$sduuid /media/mmcboot ext4 ${mountopts[ext4]}" >> /mnt/rootfs/etc/fstab
echo "/media/mmcboot/boot /boot none bind 0 0" >> /mnt/rootfs/etc/fstab
echo "$satauuid / $FilesystemChoosen ${mountopts[$FilesystemChoosen]}" >> /mnt/rootfs/etc/fstab
mkdir -p ${TempDir}/rootfs/media/mmc/boot
echo "$sduuid /media/mmcboot ext4 ${mountopts[ext4]}" >> ${TempDir}/rootfs/etc/fstab
echo "/media/mmcboot/boot /boot none bind 0 0" >> ${TempDir}/rootfs/etc/fstab
echo "$satauuid / $FilesystemChoosen ${mountopts[$FilesystemChoosen]}" >> ${TempDir}/rootfs/etc/fstab
# recreate swap file
dd if=/dev/zero of=/mnt/rootfs/var/swap bs=1M count=128
mkswap /mnt/rootfs/var/swap
fallocate -l 128M ${TempDir}/rootfs/var/swap || dd if=/dev/zero of=${TempDir}/rootfs/var/swap bs=1M count=128 status=noxfer
mkswap ${TempDir}/rootfs/var/swap
fi
LANG=C echo -e "\n$(date): Finished. Files open for write:" >> $logfile
lsof / | awk 'NR==1 || $4~/[0-9][uw]/' >> $logfile
cat $logfile >/mnt/rootfs${logfile}
LANG=C echo -e "\n$(date): Finished" >> $logfile
cat $logfile >${TempDir}/rootfs${logfile}
sync
umountdevice "/dev/sda"
} # create_armbian
@ -277,7 +276,7 @@ umountdevice()
formatnand()
{
[[ ! -e /dev/nand ]] && echo "NAND error" && exit 0
dialog --title "$title" --backtitle "$backtitle" --infobox "\nFormating ... up to one minute." 5 40
dialog --title "$title" --backtitle "$backtitle" --infobox "\nFormating ... up to one minute." 5 40
if [[ $DEVICE_TYPE = a20 ]]; then
(echo y;) | sunxi-nand-part -f a20 /dev/nand 65536 'bootloader 65536' 'linux 0' >> $logfile 2>&1
else
@ -295,7 +294,7 @@ formatemmc()
{
# choose and create fs
IFS=" "
BTRFS=$(cat /proc/filesystems | grep -o btrfs)
BTRFS=$(grep -o btrfs /proc/filesystems)
FilesystemTargets="1 ext4 2 ext3 3 ext2"
[[ -n $BTRFS && `uname -r | grep '^4.' ` ]] && FilesystemTargets=$FilesystemTargets" 4 $BTRFS"
FilesystemOptions=($FilesystemTargets)
@ -322,7 +321,7 @@ formatemmc()
fi
parted -s $1 -- mklabel msdos
dialog --title "$title" --backtitle "$backtitle" --infobox "\nFormating $1 to $eMMCFilesystemChoosen ... please wait." 5 60
dialog --title "$title" --backtitle "$backtitle" --infobox "\nFormating $1 to $eMMCFilesystemChoosen ... please wait." 5 60
# we can't boot from btrfs
if [[ $eMMCFilesystemChoosen == "btrfs" ]]; then
parted -s $1 -- mkpart primary $eMMCFilesystemChoosen 2048s 126975s
@ -354,7 +353,7 @@ formatsata()
{
# choose and create fs
IFS=" "
BTRFS=$(cat /proc/filesystems | grep -o btrfs)
BTRFS=$(grep -o btrfs /proc/filesystems)
FilesystemTargets="1 ext4 2 ext3 3 ext2"
[[ -n $BTRFS && `uname -r | grep '^4.' ` ]] && FilesystemTargets=$FilesystemTargets" 4 $BTRFS"
FilesystemOptions=($FilesystemTargets)
@ -365,7 +364,7 @@ formatsata()
[[ $? -ne 0 ]] && exit 1
FilesystemChoosen=${FilesystemOptions[(2*$FilesystemChoices)-1]}
dialog --title "$title" --backtitle "$backtitle" --infobox "\nFormating $1 to $FilesystemChoosen ... please wait." 5 60
dialog --title "$title" --backtitle "$backtitle" --infobox "\nFormating $1 to $FilesystemChoosen ... please wait." 5 60
mkfs.${FilesystemChoosen} ${mkopts[$FilesystemChoosen]} $1 >> $logfile 2>&1
}
@ -376,7 +375,7 @@ checksatatarget()
IFS=" "
SataTargets=$(awk '/sd/ {print "/dev/"$4}' </proc/partitions | grep -E '[0-9]{1,4}' | nl | xargs echo -n)
if [[ -z $SataTargets ]]; then
dialog --title "$title" --backtitle "$backtitle" --colors --msgbox \
dialog --title "$title" --backtitle "$backtitle" --colors --msgbox \
"\n\Z1There are no avaliable partitions. Please create them.\Zn" 7 60
fdisk /dev/$satacheck
fi
@ -412,12 +411,7 @@ main()
{
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# umount temporary mountpoints if mounted
grep -q /mnt/rootfs /etc/mtab && umount -frv /mnt/rootfs >> $logfile 2>&1
grep -q /mnt/bootfs /etc/mtab && umount -frv /mnt/bootfs >> $logfile 2>&1
# This tool must run under root
if [[ $EUID -ne 0 ]]; then
echo "This tool must run as root. Exiting ..." >&2
exit 1
@ -430,11 +424,14 @@ main()
:
;;
*)
dialog --title "$title" --backtitle "$backtitle" --colors --infobox "\n\Z1This tool must run from SD-card!\Zn" 5 42
dialog --title "$title" --backtitle "$backtitle" --colors --infobox "\n\Z1This tool must run from SD-card!\Zn" 5 42
exit 1
;;
esac
[ -f $logfile ] && echo -e "\n\n\n" >> $logfile
LANG=C echo -e "$(date): Start ${0##*/}.\n" >> $logfile
IFS="'"
options=()
if [[ -n $emmccheck ]]; then
@ -452,9 +449,9 @@ main()
[[ -n $satacheck ]] && options+=(3 "Boot from SD - system on SATA or USB")
[[ ( $LINUXFAMILY == odroidxu4 || $LINUXFAMILY == mvebu* ) && ( -b /dev/mmcblk0boot0 || -b /dev/mmcblk1boot0 ) ]] && options+=(4 "Update the bootloader on a special eMMC partition")
[[ $(type -t write_uboot_platform_mtd) == function && -b /dev/mtd0 && -f /usr/sbin/flashcp ]] && options+=(5 "Install the bootloader to SPI Flash")
[[ ${#options[@]} -eq 0 || "$root_partition" == "$emmcuuid" || "$root_partition" == "/dev/nand2" ]] && \
dialog --title "$title" --backtitle "$backtitle" --colors --no-collapse --msgbox "\n\Z1There are no targets. Please check your drives.\Zn" 7 54
cmd=(dialog --title "Choose an option:" --backtitle "$backtitle" --menu "\nCurrent root: $root_partition \n \n" 14 60 7)
[[ ${#options[@]} -eq 0 || "$root_uuid" == "$emmcuuid" || "$root_uuid" == "/dev/nand2" ]] && \
dialog --title "$title" --backtitle "$backtitle" --colors --no-collapse --msgbox "\n\Z1There are no targets. Please check your drives.\Zn" 7 54
cmd=(dialog --title "Choose an option:" --backtitle "$backtitle" --menu "\nCurrent root: $root_uuid \n \n" 14 60 7)
choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
[[ $? -ne 0 ]] && exit 1
@ -473,8 +470,8 @@ main()
formatnand
fi
create_armbian "$dest_boot" "$dest_root"
umount /mnt/rootfs
umount /mnt/bootfs
umount ${TempDir}/rootfs
umount ${TempDir}/bootfs
;;
2)
title="$ichip boot / SATA root install"
@ -491,8 +488,8 @@ main()
umountdevice "${SDA_ROOT_PART//[0-9]*/}"
formatsata "$SDA_ROOT_PART"
create_armbian "$dest_boot" "$SDA_ROOT_PART"
umount /mnt/rootfs
umount /mnt/bootfs
umount ${TempDir}/rootfs
umount ${TempDir}/bootfs
;;
3)
title="SD boot / SATA root install"
@ -522,7 +519,7 @@ main()
esac
done
dialog --title "$title" --backtitle "$backtitle" --yes-label "$command" --no-label "Exit" --yesno "\nAll done. $command $REMOVESDTXT" 7 60
dialog --title "$title" --backtitle "$backtitle" --yes-label "$command" --no-label "Exit" --yesno "\nAll done. $command $REMOVESDTXT" 7 60
[[ $? -eq 0 ]] && "$(echo ${command,,} | sed 's/ //')"
} # main