réagencement du processus, fonctionnalisation nouvelle.
La création de l'image est effectuée avant l'installation des logiciels. De nouvelles fonctions ont été divisées de fonctions existantes. Il y a un bout de code qui ne me plaît pas : info "making partitions" echo -e "${FDISK_SCRIPT}" | /sbin/fdisk ${DEVICE} # Activate loop device info "device to detach ${DEVICE}" /sbin/losetup -d "${DEVICE}" DEVICE=$(/sbin/partx -va "${INSTALL_PATH}/${IMAGE}" | /bin/grep -m 1 -E -o '/dev/loop.?') info "New attached device ${DEVICE}" info "partitions list:" info "$(/sbin/partx -v "${INSTALL_PATH}/${IMAGE}")" if [ 1 -eq ${SEPARATE_BOOT_PARTITION} ]; then BOOTP="${DEVICE}p1" ROOTP="${DEVICE}p2" else ROOTP="${DEVICE}p1" fi
This commit is contained in:
parent
013c1e174f
commit
3122435982
@ -309,17 +309,101 @@ function createImageWrap()
|
|||||||
BOOTFS="ext4"
|
BOOTFS="ext4"
|
||||||
fi
|
fi
|
||||||
formatpartitions ${BOOTFS} ext4
|
formatpartitions ${BOOTFS} ext4
|
||||||
copyingsystem
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function 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 ${ERR_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 ${ERR_1}
|
||||||
|
fi
|
||||||
|
|
||||||
|
loopingImage
|
||||||
|
|
||||||
|
bunrningBootloader
|
||||||
|
if [ ${?} -ne 0 ]; then
|
||||||
|
error "line ${LINENO} error in the process ${CONFIG_PATH}/specialFunctions.sh ."
|
||||||
|
exit ${ERR_1}
|
||||||
|
fi
|
||||||
|
|
||||||
|
info "making partitions"
|
||||||
|
echo -e "${FDISK_SCRIPT}" | /sbin/fdisk ${DEVICE}
|
||||||
|
|
||||||
|
# Activate loop device
|
||||||
|
info "device to detach ${DEVICE}"
|
||||||
|
/sbin/losetup -d "${DEVICE}"
|
||||||
|
DEVICE=$(/sbin/partx -va "${INSTALL_PATH}/${IMAGE}" | /bin/grep -m 1 -E -o '/dev/loop.?')
|
||||||
|
info "New attached device ${DEVICE}"
|
||||||
|
info "partitions list:"
|
||||||
|
info "$(/sbin/partx -v "${INSTALL_PATH}/${IMAGE}")"
|
||||||
|
if [ 1 -eq ${SEPARATE_BOOT_PARTITION} ]; then
|
||||||
|
BOOTP="${DEVICE}p1"
|
||||||
|
ROOTP="${DEVICE}p2"
|
||||||
|
else
|
||||||
|
ROOTP="${DEVICE}p1"
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function loopingImage()
|
||||||
|
{
|
||||||
|
title "Looping image ..."
|
||||||
|
|
||||||
|
# Mettre en place et contrôler des périphériques boucle.
|
||||||
|
# -f, --find trouver le premier périphérique inutilisé
|
||||||
|
# --show afficher le nom du périphérique après configuration (avec -f)
|
||||||
|
DEVICE=$(/sbin/losetup -f --show "${INSTALL_PATH}/${IMAGE}")
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function formatpartitions()
|
||||||
|
{
|
||||||
|
info "Formatting partitions"
|
||||||
|
if [ 1 -eq ${SEPARATE_BOOT_PARTITION} ]; then
|
||||||
|
info "Boot : ${BOOTP} as ${1}"
|
||||||
|
"/sbin/mkfs.${1}" "${BOOTP}"
|
||||||
|
if [ ${?} -ne 0 ]; then
|
||||||
|
error "line ${LINENO} error formating ${BOOTP} : exiting"
|
||||||
|
/sbin/losetup -d "${DEVICE}"
|
||||||
|
exit ${ERR_1}
|
||||||
|
fi
|
||||||
|
BOOT_UUID=$(blkid -s UUID -o value UUID "${BOOTP}")
|
||||||
|
info "Boot UUID: ${BOOT_UUID}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
info "Root : ${ROOTP} as ${2}"
|
||||||
|
"/sbin/mkfs.${2}" "${ROOTP}"
|
||||||
|
if [ ${?} -ne 0 ]; then
|
||||||
|
error "line ${LINENO} error formating ${ROOTP} : exiting"
|
||||||
|
/sbin/losetup -d "${DEVICE}"
|
||||||
|
exit ${ERR_1}
|
||||||
|
fi
|
||||||
|
ROOT_UUID=$(blkid -s UUID -o value UUID "${ROOTP}")
|
||||||
|
info "Root UUID: ${ROOT_UUID}"
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function copyingsystem()
|
function copyingsystem()
|
||||||
{
|
{
|
||||||
mountImage
|
|
||||||
|
|
||||||
mkfstab
|
|
||||||
|
|
||||||
info "Generate extlinux if extlinux.conf exists."
|
info "Generate extlinux if extlinux.conf exists."
|
||||||
if [ -e "${CONFIG_PATH}/extlinux.conf" ]; then
|
if [ -e "${CONFIG_PATH}/extlinux.conf" ]; then
|
||||||
info "\tFound extlinux.conf"
|
info "\tFound extlinux.conf"
|
||||||
@ -361,38 +445,13 @@ function copyingsystem()
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
copyingcommon
|
copyingcommon
|
||||||
# Syncing devices before unmounting
|
|
||||||
/usr/bin/sync
|
|
||||||
|
|
||||||
if [ 1 -eq ${SEPARATE_BOOT_PARTITION} ]; then
|
|
||||||
/usr/bin/umount "${BOOT}"
|
|
||||||
if [ ${?} -eq 0 ]; then
|
|
||||||
/bin/rmdir "${BOOT}"
|
|
||||||
else
|
|
||||||
error "line ${LINENO} error unmounting ${BOOT}: exiting"
|
|
||||||
exit ${ERR_1}
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
/usr/bin/umount "${ROOT}"
|
|
||||||
if [ ${?} -eq 0 ]; then
|
|
||||||
/bin/rmdir "${ROOT}"
|
|
||||||
else
|
|
||||||
error "line ${LINENO} error unmounting ${ROOT}: exiting"
|
|
||||||
exit ${ERR_1}
|
|
||||||
fi
|
|
||||||
|
|
||||||
/usr/sbin/partx -d "${DEVICE}"
|
|
||||||
if [ ${?} -ne 0 ]; then
|
|
||||||
error "line ${LINENO} warning : error unmounting ${DEVICE} "
|
|
||||||
exit ${ERR_1}
|
|
||||||
fi
|
|
||||||
|
|
||||||
warning "You can now burn the image ( ${INSTALL_PATH}/${IMAGE} ) on SD card"
|
warning "You can now burn the image ( ${INSTALL_PATH}/${IMAGE} ) on SD card"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function mountImage(){
|
function mountPartitions(){
|
||||||
info "mounting partitions, making mountpoint if necessary"
|
info "mounting partitions, making mountpoint if necessary"
|
||||||
|
|
||||||
if [ 1 -eq ${SEPARATE_BOOT_PARTITION} ]; then
|
if [ 1 -eq ${SEPARATE_BOOT_PARTITION} ]; then
|
||||||
@ -425,6 +484,72 @@ function mountImage(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function unmountingPartitions()
|
||||||
|
{
|
||||||
|
title "Unmounting partitions..."
|
||||||
|
|
||||||
|
# Syncing devices before unmounting
|
||||||
|
/usr/bin/sync
|
||||||
|
|
||||||
|
if [ 1 -eq ${SEPARATE_BOOT_PARTITION} ]; then
|
||||||
|
/usr/bin/umount "${BOOT}"
|
||||||
|
if [ ${?} -eq 0 ]; then
|
||||||
|
/bin/rmdir "${BOOT}"
|
||||||
|
else
|
||||||
|
error "line ${LINENO} error unmounting ${BOOT}: exiting"
|
||||||
|
exit ${ERR_1}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
/usr/bin/umount "${ROOT}"
|
||||||
|
if [ ${?} -eq 0 ]; then
|
||||||
|
/bin/rmdir "${ROOT}"
|
||||||
|
else
|
||||||
|
error "line ${LINENO} error unmounting ${ROOT}: exiting"
|
||||||
|
# exit ${ERR_1}
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function unloopingImage(){
|
||||||
|
title "Unlooping image..."
|
||||||
|
# Syncing devices before unmounting
|
||||||
|
/usr/bin/sync
|
||||||
|
|
||||||
|
if [ 1 -eq ${SEPARATE_BOOT_PARTITION} ]; then
|
||||||
|
/usr/sbin/partx -d "${BOOTP}"
|
||||||
|
if [ ${?} -ne 0 ]; then
|
||||||
|
error "line ${LINENO} warning : error unmounting ${BOOTP} "
|
||||||
|
# exit ${ERR_1}
|
||||||
|
fi
|
||||||
|
/usr/sbin/partx -d "${ROOTP}"
|
||||||
|
if [ ${?} -ne 0 ]; then
|
||||||
|
error "line ${LINENO} warning : error unmounting ${ROOTP} "
|
||||||
|
# exit ${ERR_1}
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
/usr/sbin/partx -d "${ROOTP}"
|
||||||
|
if [ ${?} -ne 0 ]; then
|
||||||
|
error "line ${LINENO} warning : error unmounting ${ROOTP} "
|
||||||
|
# exit ${ERR_1}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# [root@jabztop mageia4arm (master)]# losetup -l -O NAME,BACK-FILE -n
|
||||||
|
# /dev/loop0 /home/jibz/workspaces/mageia4arm/build/Mageia-7-bananaPro1.img (deleted)
|
||||||
|
info "Looped devices to unmount : $(losetup -l -O NAME,BACK-FILE -n | grep "${IMAGE}" | cut -d ' ' -f 1 ) "
|
||||||
|
|
||||||
|
for LOOP in $(losetup -l -O NAME,BACK-FILE -n | grep "${IMAGE}" | cut -d ' ' -f 1 ) ; do
|
||||||
|
info "removing ${LOOP}"
|
||||||
|
losetup -d "${LOOP}"
|
||||||
|
done
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# Copying files common to all systems
|
# Copying files common to all systems
|
||||||
function copyingcommon()
|
function copyingcommon()
|
||||||
{
|
{
|
||||||
@ -436,35 +561,6 @@ function copyingcommon()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function formatpartitions()
|
|
||||||
{
|
|
||||||
info "Formatting partitions"
|
|
||||||
if [ 1 -eq ${SEPARATE_BOOT_PARTITION} ]; then
|
|
||||||
info "Boot : ${BOOTP} as ${1}"
|
|
||||||
"/sbin/mkfs.${1}" "${BOOTP}"
|
|
||||||
if [ ${?} -ne 0 ]; then
|
|
||||||
error "line ${LINENO} error formating ${BOOTP} : exiting"
|
|
||||||
/sbin/losetup -d "${DEVICE}"
|
|
||||||
exit ${ERR_1}
|
|
||||||
fi
|
|
||||||
BOOT_UUID=$(blkid -s UUID -o value UUID "${BOOTP}")
|
|
||||||
info "Boot UUID: ${BOOT_UUID}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
info "Root : ${ROOTP} as ${2}"
|
|
||||||
"/sbin/mkfs.${2}" "${ROOTP}"
|
|
||||||
if [ ${?} -ne 0 ]; then
|
|
||||||
error "line ${LINENO} error formating ${ROOTP} : exiting"
|
|
||||||
/sbin/losetup -d "${DEVICE}"
|
|
||||||
exit ${ERR_1}
|
|
||||||
fi
|
|
||||||
ROOT_UUID=$(blkid -s UUID -o value UUID "${ROOTP}")
|
|
||||||
info "Root UUID: ${ROOT_UUID}"
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function mkfstab()
|
function mkfstab()
|
||||||
{
|
{
|
||||||
title "making /etc/fstab"
|
title "making /etc/fstab"
|
||||||
@ -480,101 +576,13 @@ function mkfstab()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function 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 ${ERR_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 ${ERR_1}
|
|
||||||
fi
|
|
||||||
DEVICE=$(/sbin/losetup -f --show "${INSTALL_PATH}/${IMAGE}")
|
|
||||||
|
|
||||||
bunrningBootloader
|
|
||||||
if [ ${?} -ne 0 ]; then
|
|
||||||
error "line ${LINENO} error in the process ${CONFIG_PATH}/specialFunctions.sh ."
|
|
||||||
exit ${ERR_1}
|
|
||||||
fi
|
|
||||||
|
|
||||||
info "making partitions"
|
|
||||||
echo -e "${FDISK_SCRIPT}" | /sbin/fdisk ${DEVICE}
|
|
||||||
|
|
||||||
# Activate loop device
|
|
||||||
info "device to detach ${DEVICE}"
|
|
||||||
/sbin/losetup -d "${DEVICE}"
|
|
||||||
DEVICE=$(/sbin/partx -va "${INSTALL_PATH}/${IMAGE}" | /bin/grep -m 1 -E -o '/dev/loop.?')
|
|
||||||
info "New attached device ${DEVICE}"
|
|
||||||
info "partitions list:"
|
|
||||||
info "$(/sbin/partx -v "${INSTALL_PATH}/${IMAGE}")"
|
|
||||||
if [ 1 -eq ${SEPARATE_BOOT_PARTITION} ]; then
|
|
||||||
BOOTP="${DEVICE}p1"
|
|
||||||
ROOTP="${DEVICE}p2"
|
|
||||||
else
|
|
||||||
ROOTP="${DEVICE}p1"
|
|
||||||
fi
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function unmounting()
|
|
||||||
{
|
|
||||||
title "Unmounting..."
|
|
||||||
|
|
||||||
# Unmounting /dev /proc /sys in chroot
|
|
||||||
if ! [ -z "$(mountpoint -qd "${BUILD_PATH}/dev")" ]; then # mountpoint - see if a directory or file is a mountpoint ; -d Show the major/minor numbers of the device that is mounted on the given directory.
|
|
||||||
info "Unmounting ${BUILD_PATH}/dev"
|
|
||||||
umount "${BUILD_PATH}/dev"
|
|
||||||
if ! [ ${?} -ne 0 ]; then
|
|
||||||
error "line ${LINENO} can't unmount ${BUILD_PATH}/dev : exiting"
|
|
||||||
#exit ${ERR_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 ${ERR_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 ${ERR_1}
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# [root@jabztop mageia4arm (master)]# losetup -l -O NAME,BACK-FILE -n
|
|
||||||
# /dev/loop0 /home/jibz/workspaces/mageia4arm/build/Mageia-7-bananaPro1.img (deleted)
|
|
||||||
info "Looped devices to unmount : $(losetup -l -O NAME,BACK-FILE -n | grep "${IMAGE}" | cut -d ' ' -f 1 ) "
|
|
||||||
|
|
||||||
for LOOP in $(losetup -l -O NAME,BACK-FILE -n | grep "${IMAGE}" | cut -d ' ' -f 1 ) ; do
|
|
||||||
info "removing ${LOOP}"
|
|
||||||
losetup -d "${LOOP}"
|
|
||||||
done
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# cleaning build space
|
# cleaning build space
|
||||||
function clean()
|
function clean()
|
||||||
{
|
{
|
||||||
title "Cleaning"
|
title "Cleaning"
|
||||||
|
|
||||||
unmounting
|
unmountingPartitions
|
||||||
|
unloopingImage
|
||||||
|
|
||||||
# Removing old Build directory
|
# Removing old Build directory
|
||||||
if [ -d "${BUILD_PATH}" ]; then
|
if [ -d "${BUILD_PATH}" ]; then
|
||||||
@ -898,15 +906,18 @@ case ${OPT} in
|
|||||||
exit ${ERR_NO_SPACE}
|
exit ${ERR_NO_SPACE}
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
createchroot
|
createImageWrap #Create the empty .img
|
||||||
|
createchroot #Check qemu and activate it
|
||||||
addmedia
|
addmedia
|
||||||
updatemirror
|
updatemirror
|
||||||
installbasesystem
|
installbasesystem #Generate the rootfs, rootfiles, ...
|
||||||
mkfstab
|
mkfstab
|
||||||
preparechroot
|
preparechroot
|
||||||
jumpchroot
|
jumpchroot
|
||||||
createImageWrap
|
mountPartitions
|
||||||
unmounting
|
copyingsystem
|
||||||
|
unmountingPartitions
|
||||||
|
unloopingImage
|
||||||
;;
|
;;
|
||||||
"createchroot")
|
"createchroot")
|
||||||
createchroot
|
createchroot
|
||||||
|
Reference in New Issue
Block a user