diff --git a/bin/build-set.in b/bin/build-set.in index 2c49e74..5864ce5 100644 --- a/bin/build-set.in +++ b/bin/build-set.in @@ -36,7 +36,7 @@ display_settings(){ msg2 "pkg_dir: ${pkg_dir}" msg2 "pacman_conf: ${pacman_conf}" msg2 "makepkg_conf: ${makepkg_conf}" - msg2 "pm_conf: ${pm_conf}" + msg2 "mirrors_conf: ${mirrors_conf}" msg "BLACKLIST:" msg2 "blacklist_trigger: ${blacklist_trigger[*]}" @@ -154,9 +154,9 @@ pkg_dir="${pkg_dir}/${branch}/${arch}" load_pacman_conf "@pkgdatadir@/pacman-${pacman_conf_arch}.conf" makepkg_conf="@pkgdatadir@/makepkg-${arch}.conf" -pm_conf="@pkgdatadir@/pacman-mirrors-${branch}.conf" +mirrors_conf="@pkgdatadir@/pacman-mirrors-${branch}.conf" -mkchroot_args+=(-C ${pacman_conf} -M ${makepkg_conf} -S ${pm_conf}) +mkchroot_args+=(-C ${pacman_conf} -M ${makepkg_conf} -S ${mirrors_conf}) mkchrootpkg_args+=(-r ${chrootdir}) diff --git a/bin/buildiso.in b/bin/buildiso.in index 71e61de..57be2ff 100755 --- a/bin/buildiso.in +++ b/bin/buildiso.in @@ -191,8 +191,9 @@ fi load_pacman_conf "${pacman_conf}" load_pacman_conf "@pkgdatadir@/pacman-${pacman_conf_arch}.conf" +mirrors_conf="@pkgdatadir@/pacman-mirrors-${branch}.conf" -create_args+=(-v -a ${arch} -D ${install_dir} -C ${pacman_conf}) +create_args+=(-v -a ${arch} -D ${install_dir} -C ${pacman_conf} -M ${mirrors_conf}) iso_args+=(-a ${arch} -D ${install_dir} -L ${iso_label} -c ${compression}) @@ -200,6 +201,7 @@ iso_file="${target_dir}/${img_name}-${desktop}-${iso_version}-${arch}.iso" iso_profile=${PWD##*/} + check_root "$0" "${orig_argv[@]}" get_pkglist diff --git a/bin/mkchroot.in b/bin/mkchroot.in index c1b88f2..264fa39 100644 --- a/bin/mkchroot.in +++ b/bin/mkchroot.in @@ -58,9 +58,10 @@ fi umask 0022 -[[ -e $working_dir ]] && die "Working directory '%s' already exists" "$working_dir" +#[[ -e $working_dir ]] && die "Working directory '%s' already exists" "$working_dir" -mkdir -p "$working_dir" +#mkdir -p "$working_dir" +[[ ! -d $working_dir ]] && mkdir -p "$working_dir" lock 9 "${working_dir}.lock" "Locking chroot" diff --git a/bin/mkiso.in b/bin/mkiso.in index d994c40..be29101 100755 --- a/bin/mkiso.in +++ b/bin/mkiso.in @@ -51,8 +51,7 @@ usage () echo " Default $IMAGE_FOLDER" echo " -d Create default user directory /home/manjaro" echo " -v Enable verbose output" - echo " -b Set branch" - echo " Default ${BRANCH}" + echo " -M Pass pacman-morrors.conf" echo " -h This message" echo " commands:" echo " create " @@ -65,7 +64,7 @@ usage () orig_argv=("$@") -while getopts 'p:C:L:P:A:a:c:b:D:i:dfvhx' arg; do +while getopts 'p:C:L:P:A:a:c:M:D:i:dfvhx' arg; do case "${arg}" in p) PKGLIST="${PKGLIST} ${OPTARG}" ;; C) PACCONFIG="${OPTARG}" ;; @@ -80,7 +79,7 @@ while getopts 'p:C:L:P:A:a:c:b:D:i:dfvhx' arg; do f) FORCE=true ;; x) HIGHCOMP=" -b 256K -Xbcj x86" ;; v) QUIET=false ;; - b) BRANCH="${OPTARG}" ;; + M) MIRRORS="${OPTARG}" ;; h|?) usage 0 ;; *) echo "invalid argument '${arg}'"; usage 1 ;; esac @@ -121,68 +120,40 @@ fi msg "${APPNAME} : Configuration Settings" msg2 "working directory: ${work_dir}" msg2 "image name: ${imgname}" +msg2 "pacman_mirrors: ${MIRRORS}" -# usage: _pacman ... -# _pacman () -# { -# local ret -# mkdir -p "${work_dir}/${IMAGE_FOLDER}/var/lib/pacman" -# if "${QUIET}"; then -# # eventually replace it with mkchroot to get better mout handling -# setarch ${ARCH} basestrap -GMcd "${work_dir}/${IMAGE_FOLDER}" --config "$PACCONFIG" $* &> /dev/null -# # make the chroot compatible to use chroot-run -# echo "$version" > "${work_dir}/${IMAGE_FOLDER}/.manjaro-tools" -# ret=$? -# else -# # eventually replace it with mkchroot to get better mout handling -# setarch ${ARCH} basestrap -GMcd "${work_dir}/${IMAGE_FOLDER}" --config "$PACCONFIG" $* -# # make the chroot compatible to use chroot-run -# echo "$version" > "${work_dir}/${IMAGE_FOLDER}/.manjaro-tools" -# ret=$? -# fi -# -# if [ -e "${work_dir}/root-image/etc/locale.gen" ]; then -# cp ${work_dir}/root-image/etc/locale.gen ${work_dir}/root-image/etc/locale.gen.bak -# fi -# -# # Cleanup -# find "${work_dir}" -name *.pacnew -name *.pacsave -name *.pacorig -delete -# -# if [ $ret -ne 0 ]; then -# exit 1 -# fi -# } -# -# _mkchroot () -# { -# local ret makepkg_conf="/usr/share/manjaro-tools/makepkg-${ARCH}.conf" \ -# pm_conf="/usr/share/manjaro-tools/pacman-mirrors-${BRANCH}.conf" -# #mkdir -p "${work_dir}/${IMAGE_FOLDER}/var/lib/pacman" -# if "${QUIET}"; then -# setarch "${ARCH}" \ -# mkchroot -C ${PACCONFIG} \ -# -M ${makepkg_conf} -S ${pm_conf} \ -# "${work_dir}/${IMAGE_FOLDER}" $* &> /dev/null -# ret=$? -# else -# setarch "${ARCH}" \ -# mkchroot -C ${PACCONFIG} \ -# -M ${makepkg_conf} -S ${pm_conf} \ -# "${work_dir}/${IMAGE_FOLDER}" $* -# ret=$? -# fi -# -# if [ -e "${work_dir}/root-image/etc/locale.gen" ]; then -# cp ${work_dir}/root-image/etc/locale.gen ${work_dir}/root-image/etc/locale.gen.bak -# fi -# -# # Cleanup -# find "${work_dir}" -name *.pacnew -name *.pacsave -name *.pacorig -delete -# -# if [ $ret -ne 0 ]; then -# exit 1 -# fi -# } +clean_up(){ + # Cleanup + find "${work_dir}" -name *.pacnew -name *.pacsave -name *.pacorig -delete + + + + msg2 "Cleaning up what we can" + if [ -d "${work_dir}/${IMAGE_FOLDER}/boot/" ]; then + # remove the initcpio images that were generated for the host system + find "${work_dir}/${IMAGE_FOLDER}/boot" -name '*.img' -delete + fi + + if ${CREATE_DEFAULT}; then + if [ -d "${work_dir}/${IMAGE_FOLDER}/home/" ]; then + msg2 "Creating default home directory" + install -d -o1000 -g100 -m0755 "${work_dir}/${IMAGE_FOLDER}/home/${username}" + fi + fi + + # Delete pacman database sync cache files (*.tar.gz) + find "${work_dir}/${IMAGE_FOLDER}/var/lib/pacman" -maxdepth 1 -type f -delete >/dev/null + # Delete pacman database sync cache + find "${work_dir}/${IMAGE_FOLDER}/var/lib/pacman/sync" -delete >/dev/null + # Delete pacman package cache + find "${work_dir}/${IMAGE_FOLDER}/var/cache/pacman/pkg" -type f -delete >/dev/null + # Delete all log files, keeps empty dirs. + find "${work_dir}/${IMAGE_FOLDER}/var/log" -type f -delete >/dev/null + # Delete all temporary files and dirs + find "${work_dir}/${IMAGE_FOLDER}/var/tmp" -mindepth 1 -delete >/dev/null + # Delete all temporary files and dirs + find "${work_dir}/${IMAGE_FOLDER}/tmp" -mindepth 1 -delete >/dev/null +} command_create () { msg "Creating working directory: ${work_dir}" @@ -191,57 +162,27 @@ command_create () { if [ ! -z "${PKGLIST}" ]; then msg2 "Installing packages to '${work_dir}/${IMAGE_FOLDER}/'" - local ret makepkg_conf="@pkgdatadir@/makepkg-${ARCH}.conf" \ - pm_conf="@pkgdatadir@/pacman-mirrors-${BRANCH}.conf" + local ret #mkdir -p "${work_dir}/${IMAGE_FOLDER}/var/lib/pacman" if "${QUIET}"; then setarch "${ARCH}" \ mkchroot -C ${PACCONFIG} \ - -M ${makepkg_conf} -S ${pm_conf} \ + -S ${MIRRORS} \ "${work_dir}/${IMAGE_FOLDER}" ${PKGLIST} &> /dev/null ret=$? else setarch "${ARCH}" \ mkchroot -C ${PACCONFIG} \ - -M ${makepkg_conf} -S ${pm_conf} \ + -S ${MIRRORS} \ "${work_dir}/${IMAGE_FOLDER}" ${PKGLIST} ret=$? fi - + + clean_up + if [ -e "${work_dir}/root-image/etc/locale.gen" ]; then cp ${work_dir}/root-image/etc/locale.gen ${work_dir}/root-image/etc/locale.gen.bak fi - - # Cleanup - find "${work_dir}" -name *.pacnew -name *.pacsave -name *.pacorig -delete - - - - msg2 "Cleaning up what we can" - if [ -d "${work_dir}/${IMAGE_FOLDER}/boot/" ]; then - # remove the initcpio images that were generated for the host system - find "${work_dir}/${IMAGE_FOLDER}/boot" -name '*.img' -delete - fi - - if ${CREATE_DEFAULT}; then - if [ -d "${work_dir}/${IMAGE_FOLDER}/home/" ]; then - msg2 "Creating default home directory" - install -d -o1000 -g100 -m0755 "${work_dir}/${IMAGE_FOLDER}/home/${username}" - fi - fi - - # Delete pacman database sync cache files (*.tar.gz) - find "${work_dir}/${IMAGE_FOLDER}/var/lib/pacman" -maxdepth 1 -type f -delete >/dev/null - # Delete pacman database sync cache - find "${work_dir}/${IMAGE_FOLDER}/var/lib/pacman/sync" -delete >/dev/null - # Delete pacman package cache - find "${work_dir}/${IMAGE_FOLDER}/var/cache/pacman/pkg" -type f -delete >/dev/null - # Delete all log files, keeps empty dirs. - find "${work_dir}/${IMAGE_FOLDER}/var/log" -type f -delete >/dev/null - # Delete all temporary files and dirs - find "${work_dir}/${IMAGE_FOLDER}/var/tmp" -mindepth 1 -delete >/dev/null - # Delete all temporary files and dirs - find "${work_dir}/${IMAGE_FOLDER}/tmp" -mindepth 1 -delete >/dev/null fi } diff --git a/conf/manjaro-tools.conf b/conf/manjaro-tools.conf index 63e05c3..cfa88fe 100644 --- a/conf/manjaro-tools.conf +++ b/conf/manjaro-tools.conf @@ -61,9 +61,6 @@ # unset defaults to given value # img_name=manjaro -# unset defaults to given value -# username="manjaro" - # unset defaults to given value # install_dir=manjaro @@ -73,6 +70,16 @@ # unset defaults to given value # compression=xz -# unset defaults to given value, currently unused +########### livecd setup ############# + +# unset defaults to given value # hostname="manjaro" +# unset defaults to given value +# username="manjaro" + +# unset defaults to given value +# password="manjaro" + +# unset defaults to given values +# addgroups="video,audio,power,disk,storage,optical,network,lp,scanner" diff --git a/lib/util-iso.sh b/lib/util-iso.sh index a3d53db..6c615a3 100644 --- a/lib/util-iso.sh +++ b/lib/util-iso.sh @@ -255,6 +255,38 @@ set_dm(){ fi } +set_accountservice(){ + #echo "Icon=/var/lib/AccountsService/icons/${username}.png" >> $1/var/lib/AccountsService/users/${username} + + if [ -d "$1/var/lib/AccountsService/users" ] ; then + echo "[User]" > $1/var/lib/AccountsService/users/${username} + if [ -e "/usr/bin/startxfce4" ] ; then + echo "XSession=xfce" >> $1/var/lib/AccountsService/users/${username} + fi + if [ -e "/usr/bin/cinnamon-session" ] ; then + echo "XSession=cinnamon" >> $1/var/lib/AccountsService/users/${username} + fi + if [ -e "/usr/bin/mate-session" ] ; then + echo "XSession=mate" >> $1/var/lib/AccountsService/users/${username} + fi + if [ -e "/usr/bin/enlightenment_start" ] ; then + echo "XSession=enlightenment" >> $1/var/lib/AccountsService/users/${username} + fi + if [ -e "/usr/bin/openbox-session" ] ; then + echo "XSession=openbox" >> $1/var/lib/AccountsService/users/${username} + fi + if [ -e "/usr/bin/startlxde" ] ; then + echo "XSession=LXDE" >> $1/var/lib/AccountsService/users/${username} + fi + if [ -e "/usr/bin/lxqt-session" ] ; then + echo "XSession=LXQt" >> $1/var/lib/AccountsService/users/${username} + fi + echo "Icon=/var/lib/AccountsService/icons/${username}.png" >> $1/var/lib/AccountsService/users/${username} + fi + + +} + # Prepare /EFI make_efi() { if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then @@ -400,6 +432,10 @@ make_iso() { msg "Done" } +gen_pw(){ + echo $(perl -e 'print crypt($ARGV[0], "password")' ${password}) +} + # Base installation (root-image) make_root_image() { if [[ ! -e ${work_dir}/build.${FUNCNAME} ]]; then @@ -408,6 +444,20 @@ make_root_image() { mkiso ${create_args[*]} -p "${packages}" -i "root-image" create "${work_dir}" pacman -Qr "${work_dir}/root-image" > "${work_dir}/root-image/root-image-pkgs.txt" + + # set hostname + if [[ -f ${work_dir}/root-image/usr/bin/openrc ]];then + local _hostname='hostname="'${hostname}'"' + sed -i -e "s|^.*hostname=.*|${_hostname}|" ${work_dir}/root-image/etc/conf.d/hostname + else + echo ${hostname} > ${work_dir}/root-image/etc/hostname + fi + + # set up user and password + local pass=$(gen_pw) + msg2 "Creating user ${username} and crypt password ${password}: ${pass} ..." + chroot-run ${work_dir}/root-image useradd -m -g users -G ${addgroups} -p ${pass} ${username} + cp ${work_dir}/root-image/etc/locale.gen.bak ${work_dir}/root-image/etc/locale.gen if [ -e ${work_dir}/root-image/boot/grub/grub.cfg ] ; then @@ -434,25 +484,14 @@ make_root_image() { fi cp -LPr overlay/* ${work_dir}/root-image + set_accountservice "${work_dir}/root-image" + # Clean up GnuPG keys rm -rf "${work_dir}/root-image/etc/pacman.d/gnupg" - # set hostname - if [[ -f ${work_dir}/root-image/usr/bin/openrc ]];then - local _hostname='hostname="'${hostname}'"' - sed -i -e "s|^.*hostname=.*|${_hostname}|" ${work_dir}/root-image/etc/conf.d/hostname - else - echo ${hostname} > ${work_dir}/root-image/etc/hostname - fi - - msg2 "Creating user ${username} ..." - local addgroups="video,audio,power,disk,storage,optical,network,lp,scanner" - local pass=$(perl -e 'print crypt($ARGV[0], "password")' $username) - chroot-run ${work_dir}/root-image useradd -m -g users -G $addgroups -p $pass ${username} - # Change to given branch in options.conf - sed -i -e "s/stable/$branch/" ${work_dir}/root-image/etc/pacman.d/mirrorlist - sed -i -e "s/stable/$branch/" ${work_dir}/root-image/etc/pacman-mirrors.conf + #sed -i -e "s/stable/$branch/" ${work_dir}/root-image/etc/pacman.d/mirrorlist + #sed -i -e "s/stable/$branch/" ${work_dir}/root-image/etc/pacman-mirrors.conf : > ${work_dir}/build.${FUNCNAME} msg "Done" @@ -518,6 +557,9 @@ make_de_image() { pacman -Qr "${work_dir}/${desktop}-image" > "${work_dir}/${desktop}-image/${desktop}-image-pkgs.txt" cp "${work_dir}/${desktop}-image/${desktop}-image-pkgs.txt" ${target_dir}/${img_name}-${desktop}-${iso_version}-${arch}-pkgs.txt + # set DM + set_dm "${work_dir}/${desktop}-image" + if [ -e ${desktop}-overlay ] ; then cp -LPr ${desktop}-overlay/* ${work_dir}/${desktop}-image fi @@ -535,9 +577,6 @@ make_de_image() { sed -i -e "s/^.*Theme=.*/Theme=$plymouth_theme/" ${work_dir}/${desktop}-image/etc/plymouth/plymouthd.conf fi - # set DM - set_dm "${work_dir}/${desktop}-image" - umount -l ${work_dir}/${desktop}-image rm -R ${work_dir}/${desktop}-image/.wh* diff --git a/lib/util.sh b/lib/util.sh index 37d6590..66c5d9b 100644 --- a/lib/util.sh +++ b/lib/util.sh @@ -318,6 +318,18 @@ load_config(){ compression=xz fi + if [[ -n ${password} ]];then + password=${password} + else + password="manjaro" + fi + + if [[ -n ${addgroups} ]];then + addgroups=${addgroups} + else + addgroups="video,audio,power,disk,storage,optical,network,lp,scanner" + fi + return 0 } diff --git a/livecd/livecd b/livecd/livecd index dcbaea1..69b97b7 100755 --- a/livecd/livecd +++ b/livecd/livecd @@ -73,47 +73,9 @@ fi echo "configure user" >> /tmp/livecd.log -# do_makeuser -#addgroups="video,audio,power,disk,storage,optical,network,lp,scanner" -#useradd -m -p "" -g users -G $addgroups ${username} -#sed -i "s#${username}.*#${username}:\$1\$uYIrxnwJ\$a5wTa84YxxYmD.sKX/Lll1:14942:0:99999:7:::#" /etc/shadow -echo "Icon=/var/lib/AccountsService/icons/${username}.png" >> /var/lib/AccountsService/users/${username} - # do_configsforroot cp -a /etc/skel/. /root/ -echo "configure display managers" >> /tmp/livecd.log - -#set_dm - -echo "configure AccountsService" >> /tmp/livecd.log - -if [ -d "/var/lib/AccountsService/users" ] ; then - echo "[User]" > /var/lib/AccountsService/users/manjaro - if [ -e "/usr/bin/startxfce4" ] ; then - echo "XSession=xfce" >> /var/lib/AccountsService/users/manjaro - fi - if [ -e "/usr/bin/cinnamon-session" ] ; then - echo "XSession=cinnamon" >> /var/lib/AccountsService/users/manjaro - fi - if [ -e "/usr/bin/mate-session" ] ; then - echo "XSession=mate" >> /var/lib/AccountsService/users/manjaro - fi - if [ -e "/usr/bin/enlightenment_start" ] ; then - echo "XSession=enlightenment" >> /var/lib/AccountsService/users/manjaro - fi - if [ -e "/usr/bin/openbox-session" ] ; then - echo "XSession=openbox" >> /var/lib/AccountsService/users/manjaro - fi - if [ -e "/usr/bin/startlxde" ] ; then - echo "XSession=LXDE" >> /var/lib/AccountsService/users/manjaro - fi - if [ -e "/usr/bin/lxqt-session" ] ; then - echo "XSession=LXQt" >> /var/lib/AccountsService/users/manjaro - fi - echo "Icon=/var/lib/AccountsService/icons/manjaro.png" >> /var/lib/AccountsService/users/manjaro -fi - echo "configure sudoers" >> /tmp/livecd.log # do_fix_perms