do_finish() { echo ${BOARD} echo ${DISTRO}-${FLAVOUR} if [ ! -f distro/${DISTRO}/${FLAVOUR} ]; then echo XXX fi exit 0 } do_menu_target() { local n=1 local DEVICE_LIST="File 0" for disk in $(ls /dev/disk/by-id | grep -v '\-part*' | grep 'mmc\|usb'); do DEVICE_LIST="${DEVICE_LIST} ${disk} ${n}" n=$((n+1)) done CHOICE=$(dialog --clear --title "Devices" \ --menu "X" 16 70 10 \ ${DEVICE_LIST} \ 2>&1 >/dev/tty) ret=$? if [ ${ret} = 0 ]; then if [ -b /dev/disk/by-id/${CHOICE} ]; then # TARGET_DEVICE=$(readlink -f /dev/disk/by-id/${CHOICE}) TARGET_DEVICE="/dev/disk/by-id/${CHOICE}" else TARGET_DEVICE=${out_dir}/binary.img fi fi } do_menu_board() { CHOICE=$(dialog --clear --title "Target model" \ --menu "X" 15 70 10 \ "odroidc2" "Hardkernel ODROID-C2" \ "odroidxu4" "Hardkernel ODROID-XU4" \ "odroidn2" "Hardkernel ODROID-N2" \ "odroidn2l" "Hardkernel ODROID-N2L" \ "odroidn2plus" "Hardkernel ODROID-N2Plus" \ "odroidc4" "Hardkernel ODROID-C4" \ "odroidc5" "Hardkernel ODROID-C5" \ "odroidhc4" "Hardkernel ODROID-HC4" \ "odroidgo2" "Hardkernel ODROID-GO2" \ "odroidm1" "Hardkernel ODROID-M1" \ "odroidm1s" "Hardkernel ODROID-M1S" \ "odroidm2" "Hardkernel ODROID-M2" \ 2>&1 >/dev/tty) ret=$? if [ ${ret} = 0 ]; then BOARD=${CHOICE} case ${BOARD} in odroidc2) ARCH=arm64 ;; odroidxu4) ARCH=armhf ;; odroidn2 | odroidn2plus | odroidc4 | odroidc5 | odroidhc4 | odroidm1 | odroidm1s | odroidm2) ARCH=arm64 ;; odroidgo2) ARCH=arm64 ;; esac fi } do_menu_distro() { CHOICE=$(dialog --clear --title "Ubuntu/Debian distribution" \ --menu "X" 15 70 10 \ "focal" "Ubuntu Focal (20.04)" \ "jammy" "Ubuntu Jammy (22.04)" \ "noble" "Ubuntu Mantic (24.04)" \ "buster" "Debian Buster" \ "bullseye" "Debian Bullseye" \ "bookworm" "Debian Bookworm" \ 2>&1 >/dev/tty) ret=$? if [ ${ret} = 0 ]; then DISTRO=${CHOICE} fi } do_menu_flavour() { CHOICE=$(dialog --clear --title "Ubuntu flavour" \ --menu "X" 15 70 10 \ "server" "Server" \ "gnome-desktop" "GNOME" \ "kde-desktop" "KDE Plasma" \ "lxde-desktop" "LXDE" \ "mate-desktop" "MATE" \ "xfce-desktop" "XFCE" \ "weston" "Weston" \ 2>&1 >/dev/tty) ret=$? if [ ${ret} = 0 ]; then FLAVOUR=${CHOICE} fi } do_menu_default_user() { DEFAULT_USER=$(dialog --title "Default user account" --clear \ --inputbox "Enter the default account " 8 60 \ ${DEFAULT_USER} 2>&1 >/dev/tty) } do_menu_default_user_passwd() { DEFAULT_PASSWD=$(dialog --title "Default user password" --clear \ --inputbox "Enter the password of default account " 8 60 \ ${DEFAULT_PASSWD} 2>&1 >/dev/tty) } do_menu() { while true; do IMAGE_FILE=$(image_file ${DISTRO} ${FLAVOUR} ${BOARD}) CHOICE=$(dialog --clear --backtitle "ODROID-STAMPER" \ --title "Custom Ubuntu Recipe" \ --extra-button --extra-label "Done" \ --menu "Please customize the installation." 15 70 10 \ 0 "Target (${TARGET_DEVICE})" \ 1 "Board (${BOARD})" \ 2 "Distro (${DISTRO})" \ 3 "Flavour (${FLAVOUR})" \ 4 "Default user" \ 5 "Password of default user" \ 2>&1 >/dev/tty) ret=$? if [ ${ret} = 3 ]; then clear default_config ${DEFAULT_CONFIG} break elif [ ${ret} = 0 ]; then case ${CHOICE} in 0) do_menu_target "Target";; 1) do_menu_board "Board";; 2) do_menu_distro "Distro";; 3) do_menu_flavour "Flavour";; 4) do_menu_default_user;; 5) do_menu_default_user_passwd;; esac else clear exit 1 fi done } # vim: set ft=sh ts=4 sw=4 expandtab: