Transférer les fichiers vers ''
Initial commit
This commit is contained in:
parent
726f7510d0
commit
eb662750e4
755
create_arm_img_urpmi.sh
Normal file
755
create_arm_img_urpmi.sh
Normal file
@ -0,0 +1,755 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright (C) 2017-2018 Daniel Tartavel-jeannot <contact@librepc.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
function title()
|
||||
{
|
||||
echo -e "\e[1;32m$1\e[0m"
|
||||
}
|
||||
|
||||
function info()
|
||||
{
|
||||
echo -e "\e[36m$1\e[0m"
|
||||
}
|
||||
|
||||
function warning()
|
||||
{
|
||||
echo -e "\e[1;35m$1\e[0m"
|
||||
}
|
||||
|
||||
function error()
|
||||
{
|
||||
echo -e "\e[1;31m$1\e[0m"
|
||||
}
|
||||
|
||||
SOURCE_PATH="`/bin/dirname \"$(readlink -f \"$0\")\"`"
|
||||
INSTALL_PATH="$SOURCE_PATH/raspi"
|
||||
|
||||
CMDNAME=`/bin/basename -z "$0"`
|
||||
|
||||
#while read -r;do
|
||||
# for MAGEIA_VERSION in $REPLY
|
||||
# do
|
||||
# if [ $MAGEIA_VERSION <= 5 ];then
|
||||
# echo 'Mageia version >= 6 is needed'
|
||||
# exit
|
||||
# fi
|
||||
# break
|
||||
# done
|
||||
#done < /etc/version
|
||||
|
||||
|
||||
|
||||
function help()
|
||||
{
|
||||
echo "$CMDNAME [option] [size of image in Go]"
|
||||
echo "Options:"
|
||||
echo "--all create ready to burn image of Mageia $MAGEIA_VERSION"
|
||||
echo "--size size of image default: 7Go"
|
||||
echo "--create-chroot Create the chroot directory"
|
||||
echo "--addmedia add mirrors"
|
||||
echo "--update-mirror update urpmi database"
|
||||
echo "--install-basesystem install base system"
|
||||
echo "--chroot chroot to arm directory and launch packages installation"
|
||||
echo "--create-image Create the image of Mageia $MAGEIA_VERSION"
|
||||
echo "--build-path Path to the build directory of the image of Mageia $MAGEIA_VERSION"
|
||||
echo "--config Path to config file to use"
|
||||
echo "--rpi Create Raspberry 2 and 3 image"
|
||||
echo "--xu4 Create Odroid XU3 and XU4 image"
|
||||
echo "--bootfs filesystem of boot partition (ext4 or vfat) default: etx4"
|
||||
echo "\nFor image size, make sure it fit on physical support. (Default size is 7 Go)"
|
||||
}
|
||||
|
||||
|
||||
# cleaning
|
||||
function clean()
|
||||
{
|
||||
title "Cleaning"
|
||||
if ! [ -z `mountpoint -qd "$BUILD_PATH/dev"` ];then
|
||||
info "Unmounting $BUILD_PATH/dev"
|
||||
umount $BUILD_PATH/dev
|
||||
if ! [ $? -ne 0 ];then
|
||||
error "line $LINENO can't unmount $BUILD_PATH/dev : exiting"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if ! [ -z `mountpoint -qd "$BUILD_PATH/sys"` ];then
|
||||
info "Unmounting $BUILD_PATH/sys"
|
||||
umount $BUILD_PATH/sys
|
||||
if ! [ $? -ne 0 ];then
|
||||
error "line $LINENO can't unmount $BUILD_PATH/sys : exiting"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if ! [ -z `mountpoint -qd "$BUILD_PATH/proc"` ];then
|
||||
info "Unmounting $BUILD_PATH/proc"
|
||||
umount $BUILD_PATH/proc
|
||||
if ! [ $? -ne 0 ];then
|
||||
error "line $LINENO can't unmount $BUILD_PATH/proc : exiting"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ -d "$BUILD_PATH" ];then
|
||||
info "Removing $BUILD_PATH"
|
||||
/bin/rm -Rf $BUILD_PATH
|
||||
else
|
||||
warning "$BUILD_PATH does not exists"
|
||||
fi
|
||||
if [ -e "$IMAGE" ];then
|
||||
info "Removing "$IMAGE""
|
||||
/bin/rm -f $INSTALL_PATH/$IMAGE
|
||||
else
|
||||
warning "$IMAGE does not exists"
|
||||
fi
|
||||
if [ -d "$BOOT" ];then
|
||||
info "Removing $BOOT"
|
||||
/bin/rmdir $BOOT
|
||||
else
|
||||
warning "$BOOT does not exists"
|
||||
fi
|
||||
if [ -d "$ROOT" ];then
|
||||
info "Removing $ROOT"
|
||||
/bin/rmdir $ROOT
|
||||
else
|
||||
warning "$ROOT does not exists"
|
||||
fi
|
||||
exit 0
|
||||
}
|
||||
|
||||
# creation of install path and copy of qemu ( installing it if not yet installed )
|
||||
|
||||
|
||||
function createchroot()
|
||||
{
|
||||
if ! [ -f /bin/qemu-arm-static ]; then
|
||||
title "Qemu package not present : installing qemu packages"
|
||||
/sbin/urpmi --auto --no-recommends qemu-user-static
|
||||
if ! [ $? -eq 0 ];then
|
||||
error "line $LINENO can't install qemu-user-static : exiting"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
/bin/systemctl is-active systemd-binfmt.service
|
||||
if [ $? -ne 0 ]; then
|
||||
title "Starting systemd-binfmt.service"
|
||||
/bin/systemctl start systemd-binfmt.service
|
||||
if ! [ $? -ne 0 ];then
|
||||
error "line $LINENO can't start qemu-user-static : exiting"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
title "Creating $BUILD_PATH"
|
||||
/bin/mkdir -p $BUILD_PATH/usr/bin $BUILD_PATH/usr/lib/binfmt.d
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO can't create $BUILD_PATH : exiting"
|
||||
exit 1
|
||||
fi
|
||||
/bin/cp /bin/qemu-arm-static $BUILD_PATH/usr/bin/
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO can't copy /bin/qemu-user-static to $BUILD_PATH/usr/bin/ : exiting"
|
||||
exit 1
|
||||
fi
|
||||
/bin/cp /usr/lib/binfmt.d/qemu-arm-static.conf $BUILD_PATH/usr/lib/binfmt.d
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO can't copy /usr/lib/binfmt.d/qemu-arm-static.conf to $BUILD_PATH/usr/lib/binfmt.d : exiting"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function addmedia()
|
||||
{
|
||||
title "Creating media $MIRROR"
|
||||
/sbin/urpmi.addmedia --urpmi-root $BUILD_PATH --distrib "$MIRROR"
|
||||
err=$?
|
||||
if [ $err -ne 0 ];then
|
||||
error "line $LINENO error $err - can't add medias from $MIRROR : exiting"
|
||||
exit 1
|
||||
fi
|
||||
title "activating non-free and tainted"
|
||||
/sbin/urpmi.update --urpmi-root $BUILD_PATH --no-ignore Nonfree\ Release Nonfree\ Updates Tainted\ Release Tainted\ Updates
|
||||
err=$?
|
||||
if [ $err -ne 0 ];then
|
||||
error "line $LINENO error $err - can't activate medias : exiting"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function updatemirror()
|
||||
{
|
||||
title "updating mirror"
|
||||
/sbin/urpmi.update -a -ff --urpmi-root "$BUILD_PATH"
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO can't update mirrors : exiting"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function installbasesystem()
|
||||
{
|
||||
title "installing basesystem"
|
||||
/sbin/urpmi --urpmi-root "$BUILD_PATH" --ignorearch --no-verify-rpm --auto --split-level 200 --split-length 200 shadow-utils basesystem-minimal
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error installing shadow-utils or basesystem-minimal : exiting"
|
||||
exit 1
|
||||
fi
|
||||
#/sbin/urpmi --urpmi-root "$BUILD_PATH" --ignorearch --no-verify-rpm --auto --split-level 200 --split-length 200 basesystem-minimal
|
||||
#if [ $? -ne 0 ];then
|
||||
# error "line $LINENO error installing basesystem-minimal : exiting"
|
||||
# exit 1
|
||||
#fi
|
||||
/sbin/urpmi --urpmi-root "$BUILD_PATH" --ignorearch --no-verify-rpm --auto --split-level 200 --split-length 200 urpmi locales-fr systemd
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error installing urpmi or locales.fr : exiting"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function jumpchroot()
|
||||
{
|
||||
title "Preparing chrooting in $BUILD_PATH"
|
||||
info "mounting dev, sys, proc directories in chroot"
|
||||
/bin/mount -B /dev "$BUILD_PATH/dev"
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error mounting $BUILD_PATH/dev : exiting"
|
||||
exit 1
|
||||
fi
|
||||
/bin/mount -B /sys "$BUILD_PATH/sys"
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error mounting $BUILD_PATH/sys : exiting"
|
||||
exit 1
|
||||
fi
|
||||
/bin/mount -B /proc "$BUILD_PATH/proc"
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error mounting $BUILD_PATH/proc : exiting"
|
||||
exit 1
|
||||
fi
|
||||
info "Copying resolv.conf"
|
||||
/bin/cp -a /etc/resolv.conf "$BUILD_PATH/etc/"
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error copying $BUILD_PATH/etc : exiting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
info "making /etc/hostname"
|
||||
echo "$HOSTNAME" > "$BUILD_PATH"/etc/hostname
|
||||
|
||||
info "copying second stage script in $BUILD_PATH"
|
||||
echo "/bin/cp $SOURCE_PATH/second_stage_install.sh $BUILD_PATH/"
|
||||
cp "$SOURCE_PATH/second_stage_install.sh" "$BUILD_PATH/second_stage_install.sh"
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error copying $SOURCE_PATH/second_stage_install.sh : exiting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
info "copying kernel-odroid rpm in $BUILD_PATH"
|
||||
echo "/bin/cp $SOURCE_PATH/kernel-odroid-4.14.y-1.armv7hl.rpm $BUILD_PATH/"
|
||||
/usr/bin/cp "$SOURCE_PATH/kernel-odroid-4.14.y-1.armv7hl.rpm" "$BUILD_PATH/"
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error copying $SOURCE_PATH/kernel-odroid-4.14.y-1.armv7hl.rpm : exiting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
info "creation of user account"
|
||||
echo "/bin/passwd << EOF
|
||||
$ROOT_PWD
|
||||
$ROOT_PWD
|
||||
EOF
|
||||
/sbin/useradd "$ID_USER"
|
||||
/bin/passwd "$ID_USER" << EOF
|
||||
"$PASSWORD"
|
||||
"$PASSWORD"
|
||||
EOF" >>"$BUILD_PATH/second_stage_install.sh"
|
||||
|
||||
|
||||
|
||||
info "Copying skel in root directory"
|
||||
/bin/rsync -a /etc/skel/ "$BUILD_PATH/root/"
|
||||
|
||||
title "chrooting to $BUILD_PATH"
|
||||
/sbin/chroot --userspec root:root "$BUILD_PATH" /bin/bash -v -c '/second_stage_install.sh'
|
||||
if [ $? -ne 0 ];then
|
||||
warning "line $LINENO Warning : chrooting to $BUILD_PATH"
|
||||
fi
|
||||
|
||||
info "unmounting dev, sys, proc"
|
||||
/bin/umount "$BUILD_PATH/dev"
|
||||
if [ $? -ne 0 ];then
|
||||
warning "line $LINENO Warning : error unmounting $BUILD_PATH/dev, continuing anyway"
|
||||
fi
|
||||
/bin/umount "$BUILD_PATH/sys"
|
||||
if [ $? -ne 0 ];then
|
||||
warning "line $LINENO Warning : error unmounting $BUILD_PATH/sys, continuing anyway"
|
||||
fi
|
||||
/bin/umount "$BUILD_PATH/proc"
|
||||
if [ $? -ne 0 ];then
|
||||
warning "line $LINENO Warning : error unmounting $BUILD_PATH/proc, continuing anyway"
|
||||
fi
|
||||
}
|
||||
|
||||
function verify_disk_space()
|
||||
{
|
||||
info "Verifying if there is enough space on disk to make the image"
|
||||
DISK_SPACE=`/usr/bin/df -BG --output=avail $INSTALL_PATH | sed '1d;s/[^0-9]//g'`
|
||||
info "Free disk space: ${DISK_SPACE}G"
|
||||
if [ $DISK_SPACE -lt $IMAGE_SIZE ];then
|
||||
warning "image size is greater than disk space"
|
||||
info "correct the problem and relaunch the script with parameter --create-rpi-image"
|
||||
info "$0 --size $IMAGE_SIZE --create-rpi-image"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
function createxu3image()
|
||||
{
|
||||
title "Creating Odroid XU3-4 image"
|
||||
createimage
|
||||
if [ -z $BOOTFS ];then
|
||||
BOOTFS="ext4"
|
||||
fi
|
||||
formatpartitions $BOOTFS ext4
|
||||
copyingsystem
|
||||
}
|
||||
|
||||
|
||||
function createrpiimage()
|
||||
{
|
||||
title "Creating Pi image"
|
||||
|
||||
if ! [ -d $FIRMWARE_PATH/$FIRMWARE_DIR ];then # the firmware directory does not exists
|
||||
echo `ls *.zip| wc -l`
|
||||
if [ `ls *.zip| wc -l` -eq 0 ];then # the firmware archive does not exists
|
||||
warning "The raspberry pi firmware need to be downloaded"
|
||||
info "Downloading FIRMWARE_FILENAME"
|
||||
wget $FIRMWARE_DOWNLOAD_URL
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error downloading raspberry firmware at $FIRMWARE_DOWNLOAD_URL :exiting"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
info "extracting firmware"
|
||||
unzip -d "$FIRMWARE_PATH" *.zip
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error unzipping $FIRMWARE_PATH : exiting"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
title "Making raspberry pi image"
|
||||
|
||||
createimage
|
||||
if [ -z $BOOTFS ];then
|
||||
BOOTFS="vfat"
|
||||
fi
|
||||
formatpartitions $BOOTFS ext4
|
||||
copyingsystem
|
||||
}
|
||||
|
||||
createimage()
|
||||
{
|
||||
title " in $IMAGE"
|
||||
if [ -f "$INSTALL_PATH/$IMAGE" ];then
|
||||
warning "Deleting previous image"
|
||||
/bin/rm -f "$INSTALL_PATH/$IMAGE"
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error can't remove previous image at $INSTALL_PATH/$IMAGE : exiting"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
warning "please wait until end of image creation"
|
||||
/bin/dd if=/dev/zero of="$INSTALL_PATH/$IMAGE" bs=1MB count=$(( $IMAGE_SIZE * 1024 ))
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO can't make image at $INSTALL_PATH/$IMAGE : exiting"
|
||||
exit 1
|
||||
fi
|
||||
info "making partitions"
|
||||
DEVICE=`/sbin/losetup -f --show "$INSTALL_PATH/$IMAGE"`
|
||||
/sbin/fdisk $DEVICE << EOF
|
||||
n
|
||||
p
|
||||
1
|
||||
|
||||
+64M
|
||||
t
|
||||
c
|
||||
n
|
||||
p
|
||||
2
|
||||
|
||||
|
||||
w
|
||||
EOF
|
||||
|
||||
/sbin/losetup -d $DEVICE
|
||||
DEVICE=`/sbin/partx -va "$INSTALL_PATH/$IMAGE" | /bin/grep -m 1 -E -o '/dev/loop.?'`
|
||||
info "device $DEVICE"
|
||||
info "partitions list:"
|
||||
info `/sbin/partx -v "$INSTALL_PATH/$IMAGE"`
|
||||
BOOTP=${DEVICE}p1
|
||||
BOOT_UUID=`blkid -o value uuid $BOOTP | head -n 1`
|
||||
ROOTP=${DEVICE}p2
|
||||
ROOT_UUID=`blkid -o value uuid $ROOTP | head -n 1`
|
||||
|
||||
}
|
||||
|
||||
formatpartitions()
|
||||
{
|
||||
info "Formatting partitions"
|
||||
info "boot as $1"
|
||||
/sbin/mkfs.$1 $BOOTP
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error formating $BOOTP : exiting"
|
||||
/sbin/losetup -d $DEVICE
|
||||
exit 1
|
||||
fi
|
||||
info "root as $2"
|
||||
/sbin/mkfs.$2 $ROOTP
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error formating $ROOTP : exiting"
|
||||
/sbin/losetup -d $DEVICE
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
copyingsystem()
|
||||
{
|
||||
# getting UUID of root partition
|
||||
#ROOT_ID=`/sbin/blkid -s UUID -o value "${DEVICE}p2"`
|
||||
#info "blkid -s UUID -o value ${DEVICE}p2"
|
||||
#info "root partition ID: $ROOT_ID"
|
||||
info "mounting partitions, creating mountpoint if necessary"
|
||||
if ! [ -d "$BOOT" ];then
|
||||
/bin/mkdir "$BOOT"
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error making directory $BOOT : exiting"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if ! [ -d "$ROOT" ];then
|
||||
/bin/mkdir "$ROOT"
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error making directory $ROOT : exiting"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
/bin/mount "$BOOTP" "$BOOT"
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error mounting $BOOTP : exiting"
|
||||
exit 1
|
||||
fi
|
||||
/bin/mount "$ROOTP" "$ROOT"
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error mounting $ROOTP : exiting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
info "copying Mageia image to root parition"
|
||||
#/bin/rsync -a --exclude boot/ --exclude "qemu-arm-static*" "$BUILD_PATH/" "$ROOT/"
|
||||
/bin/rsync -a "$BUILD_PATH/boot/" "$BOOT/"
|
||||
|
||||
info "making /etc/fstab"
|
||||
echo "proc /proc proc defaults 0 0
|
||||
$BOOT_UUID /boot vfat defaults 0 0
|
||||
$ROOT_UUID / ext4 defaults 0 0" > "$BUILD_PATH"/etc/fstab
|
||||
|
||||
case $TARGET in
|
||||
rpi)
|
||||
info "copying raspberry firmware in /boot"
|
||||
/bin/rsync -rlptDH "$FIRMWARE_PATH/firmware-stable/boot/" "$BOOT"
|
||||
cp -a $FIRMWARE_PATH/firmware-stable/extra/uname_string* $BOOT
|
||||
|
||||
info "adding modules in /etc/modules"
|
||||
echo "vchiq
|
||||
snd_bcm2835
|
||||
vc4
|
||||
brcmfmac
|
||||
bcm2835-nrg" >> "$BUILD_PATH"/etc/modules
|
||||
|
||||
info "copying modprobe.conf"
|
||||
/bin/cp -a $SOURCE_PATH/modprobe.conf $BUILD_PATH/etc/
|
||||
chown root:root $BUILD_PATH/etc/modprobe.conf
|
||||
|
||||
info "making /boot/cmdline.txt"
|
||||
echo "dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" > "$BOOT/cmdline.txt"
|
||||
info "copying raspberry modules in /lib/modules"
|
||||
/bin/rsync -rlptDH "$FIRMWARE_PATH/firmware-stable/modules/" "$BUILD_PATH/lib/modules/"
|
||||
|
||||
info "copying raspberry optionals files in opt"
|
||||
/bin/rsync -rlptDH "$FIRMWARE_PATH/firmware-stable/opt/" "$BUILD_PATH/opt/"
|
||||
|
||||
info "copying wifi firmware file missing in Mageia"
|
||||
/bin/mkdir -p "$ROOT/usr/lib/firmware/brcm/"
|
||||
cp "$SOURCE_PATH/brcmfmac43430-sdio.txt" "$ROOT/usr/lib/firmware/brcm/"
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO error copying wifi firmware in $ROOTP/usr/lib/firmware/brcm/ : exiting"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
xu3-4)
|
||||
;;
|
||||
esac
|
||||
|
||||
/bin/umount "$BOOT" "$ROOT"
|
||||
if [ $? -eq 0 ];then
|
||||
/bin/rmdir "$BOOT" "$ROOT"
|
||||
else
|
||||
error "line $LINENO error unmounting $ROOT or $BOOT : exiting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
/sbin/partx -d "$DEVICE"
|
||||
if [ $? -ne 0 ];then
|
||||
error "line $LINENO warning : error unmounting $DEVICE "
|
||||
exit 1
|
||||
fi
|
||||
warning "You can now burn the image ( $IMAGE ) on SD card"
|
||||
}
|
||||
|
||||
if [ $# == 0 ];then
|
||||
help
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
# parsing commandline
|
||||
TEMP=`getopt -o h,a --long all,help,clean,create-chroot,addmedia,create-image,rpi,xu3-4,config:,chroot,bootfs:,install-basesystem,update-mirror,build-path:,size: -n $CMDNAME -- "$@"`
|
||||
if [ $? -ne 0 ] ; then error "line $LINENO Failed parsing options." >&2 ; exit 1 ; fi
|
||||
eval set -- "$TEMP"
|
||||
|
||||
echo "$TEMP"
|
||||
# Note the quotes around `$TEMP': they are essential!
|
||||
while true;
|
||||
do
|
||||
case "$1" in
|
||||
-h|--help)
|
||||
help
|
||||
exit 0
|
||||
;;
|
||||
-a|--all)
|
||||
OPT="all"
|
||||
shift 1
|
||||
;;
|
||||
--clean)
|
||||
if [ -z $OPT ];then
|
||||
OPT="clean"
|
||||
fi
|
||||
shift
|
||||
;;
|
||||
--size)
|
||||
IMAGE_SIZE=$2
|
||||
shift 2
|
||||
;;
|
||||
--build-path)
|
||||
INSTALL_PATH=$2
|
||||
shift 2
|
||||
;;
|
||||
--chroot)
|
||||
if [ -z $OPT ];then
|
||||
OPT="chroot"
|
||||
fi
|
||||
shift
|
||||
;;
|
||||
--create-chroot)
|
||||
if [ -z $OPT ];then
|
||||
OPT="createchroot"
|
||||
fi
|
||||
shift
|
||||
;;
|
||||
--addmedia)
|
||||
if [ -z $OPT ];then
|
||||
OPT="addmedia"
|
||||
fi
|
||||
shift
|
||||
;;
|
||||
--update-mirror)
|
||||
if [ -z $OPT ];then
|
||||
OPT="updatemirror"
|
||||
fi
|
||||
shift
|
||||
;;
|
||||
--install-basesystem)
|
||||
if [ -z $OPT ];then
|
||||
OPT="installbasesystem"
|
||||
fi
|
||||
shift
|
||||
;;
|
||||
--create-image)
|
||||
if [ -z $OPT ];then
|
||||
CREATEIMAGE=true
|
||||
OPT="createimage"
|
||||
fi
|
||||
shift
|
||||
;;
|
||||
--xu3-4)
|
||||
TARGET="xu3-4"
|
||||
shift
|
||||
;;
|
||||
--rpi)
|
||||
TARGET="rpi"
|
||||
shift
|
||||
;;
|
||||
--config)
|
||||
CONFIG_PATH=$2
|
||||
shift 2
|
||||
;;
|
||||
--bootfs)
|
||||
BOOTFS=$2
|
||||
shift 2
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
|
||||
info "Option: "$OPT
|
||||
|
||||
IMAGE="Mageia-${MAGEIA_VERSION}-$TARGET.img"
|
||||
BOOT="/mnt/boot"
|
||||
ROOT="/mnt/root"
|
||||
BUILD_PATH="$INSTALL_PATH/build"
|
||||
ARM_VERSION="armv7hl"
|
||||
|
||||
if [ -e "./$CONFIG_PATH" ];then
|
||||
info "using $CONFIG_PATH as config"
|
||||
. "./$CONFIG_PATH"
|
||||
else
|
||||
$CONFIG_PATH="$SOURCE_PATH/`basename $CONFIG_PATH`"
|
||||
if [ -e "$CONFIG_PATH" ];then
|
||||
. "$CONFIG_PATH"
|
||||
info "using $CONFIG_PATH as config"
|
||||
else
|
||||
warning "$CONFIG_PATH do not exists"
|
||||
if [ -e "$SOURCE_PATH/config.txt" ];then
|
||||
. "$SOURCE_PATH/config.txt"
|
||||
warning "Using $SOURCE_PATH/config.txt as config file"
|
||||
else
|
||||
warning "config file does not exist !! Default config will be used"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# assign TARGET ( rpi or xu3-4 )
|
||||
if [ $CREATEIMAGE ];then
|
||||
case $TARGET in
|
||||
xu3-4)
|
||||
CREATEIMG="createxu3image"
|
||||
break;;
|
||||
rpi)
|
||||
CREATEIMG="createrpiimage"
|
||||
FIRMWARE_PATH="$SOURCE_PATH/.."
|
||||
FIRMWARE_DOWNLOAD_URL="https://github.com/raspberrypi/firmware/archive/stable.zip"
|
||||
FIRMWARE_DIR="firmware-stable"
|
||||
break;;
|
||||
*)
|
||||
CREATEIMG="createxu3-4image"
|
||||
TARGET="xu3-4"
|
||||
break;;
|
||||
esac
|
||||
fi
|
||||
info "source path: $SOURCE_PATH"
|
||||
info "Install path: $INSTALL_PATH"
|
||||
info "Build path: $BUILD_PATH"
|
||||
info "Commande : $CMDNAME"
|
||||
info "Firmware path : $FIRMWARE_PATH"
|
||||
info "Firmware dir : $FIRMWARE_DIR"
|
||||
info "target : $TARGET"
|
||||
|
||||
if [[ "$IMAGE_SIZE" -lt 7 ]] || [[ "$IMAGE_SIZE" -gt 128 ]];then
|
||||
IMAGE_SIZE=7
|
||||
fi
|
||||
|
||||
if [ "$OPT" != "clean" ];then
|
||||
info "cd $INSTALL_PATH"
|
||||
if ! [ -e "$INSTALL_PATH" ];then
|
||||
/bin/mkdir -p "$INSTALL_PATH"
|
||||
if [ -z $? ];then
|
||||
error "line $LINENO can't make directory $INSTALL_PATH , exiting"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
cd "$INSTALL_PATH"
|
||||
if [ -z $? ];then
|
||||
error "line $LINENO can't change to directory $INSTALL_PATH , exiting"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z $OPT ];then
|
||||
OPT="--help"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
info "Image size is: $IMAGE_SIZE Go"
|
||||
|
||||
|
||||
case $OPT in
|
||||
clean)
|
||||
clean
|
||||
;;
|
||||
all)
|
||||
verify_disk_space
|
||||
if [ $? -eq 1 ];then
|
||||
warning "Not enough space on disk"
|
||||
if ! [ -e /usr/bin/dialog ];then
|
||||
warning "installing cdialog"
|
||||
urpmi --auto --force cdialog
|
||||
fi
|
||||
dialog --yesno "Not enough space on disk\nDo you want to continue anyway ?" 7 40
|
||||
if [ $? -eq 1 ];then
|
||||
exit 6
|
||||
fi
|
||||
fi
|
||||
createchroot
|
||||
addmedia
|
||||
updatemirror
|
||||
installbasesystem
|
||||
jumpchroot
|
||||
createimage
|
||||
;;
|
||||
createchroot)
|
||||
createchroot
|
||||
;;
|
||||
chroot)
|
||||
jumpchroot
|
||||
;;
|
||||
addmedia)
|
||||
addmedia
|
||||
;;
|
||||
updatemirror)
|
||||
updatemirror
|
||||
;;
|
||||
createimage)
|
||||
verify_disk_space
|
||||
if [ $? -eq 1 ];then
|
||||
warning "Not enough space on disk"
|
||||
exit 6
|
||||
fi
|
||||
$CREATEIMG
|
||||
;;
|
||||
installbasesystem)
|
||||
installbasesystem
|
||||
;;
|
||||
esac
|
||||
|
Reference in New Issue
Block a user