aboutsummaryrefslogtreecommitdiffstats
path: root/create_arm_img_urpmi.sh
diff options
context:
space:
mode:
authorDTux <contact@librepc.com>2018-06-06 09:15:11 +0000
committerDTux <contact@librepc.com>2018-06-06 09:15:11 +0000
commiteb662750e4ec74bf2df5bb1ab8ad9df5d6d5c345 (patch)
tree70e545b3fac55d56d13f4e998d27e7f1c603eefa /create_arm_img_urpmi.sh
parent726f7510d08872b2150cdd7640dd61cc3b164d5c (diff)
downloadmageia4arm-eb662750e4ec74bf2df5bb1ab8ad9df5d6d5c345.tar
mageia4arm-eb662750e4ec74bf2df5bb1ab8ad9df5d6d5c345.tar.gz
mageia4arm-eb662750e4ec74bf2df5bb1ab8ad9df5d6d5c345.tar.bz2
mageia4arm-eb662750e4ec74bf2df5bb1ab8ad9df5d6d5c345.tar.xz
mageia4arm-eb662750e4ec74bf2df5bb1ab8ad9df5d6d5c345.zip
Transférer les fichiers vers ''
Initial commit
Diffstat (limited to 'create_arm_img_urpmi.sh')
-rw-r--r--create_arm_img_urpmi.sh755
1 files changed, 755 insertions, 0 deletions
diff --git a/create_arm_img_urpmi.sh b/create_arm_img_urpmi.sh
new file mode 100644
index 0000000..a165165
--- /dev/null
+++ b/create_arm_img_urpmi.sh
@@ -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
+