about summary refs log tree commit diff
diff options
context:
space:
mode:
authorChristian Neukirchen <chneukirchen@gmail.com>2016-05-27 18:17:47 +0200
committerChristian Neukirchen <chneukirchen@gmail.com>2016-05-27 18:17:47 +0200
commit467c4d23f114d9f87cbce11004698aa18ff8cc32 (patch)
tree40384bd093d5029dfa4f8aad624125e9144d7ca0
parent31d73d067d7f4834ff73a70a540b9a882bf6cc26 (diff)
parentde4c52a4a6ea274ea84e30a876a8ac5430355634 (diff)
downloadhrmpf-467c4d23f114d9f87cbce11004698aa18ff8cc32.tar.gz
hrmpf-467c4d23f114d9f87cbce11004698aa18ff8cc32.tar.xz
hrmpf-467c4d23f114d9f87cbce11004698aa18ff8cc32.zip
Merge branch 'master' of https://github.com/voidlinux/void-mklive
* 'master' of https://github.com/voidlinux/void-mklive:
  installer.sh.in: add ISO-639 and ISO-3166 tables (#71)
  mkimage.sh.in: add odroid-c2.
  mkrootfs.sh.in: add odroid-c2.
  Add *.iso to .gitignore (#69)
  mkimage: get rid of parted completely (missed this in previous).
  dracut/adduser.sh: remove double whitespace from sudoers.
  mkrootfs: ignore rmdir error output.
  mkimage: ci20 uboot does not need /boot/vmlinux.img; looks for uImage.
  mkimage: match any platform (glibc and musl).
  mkimage: get rid of parted; use sfdisk(8).
  mkimage: ci20 just needs a single partition and expects the kernel in /vmlinux.img.
  mkimage: added ci20 platform support (MIPS CI20 Creator).
  mkrootfs: added ci20 platform support (MIPS CI20 Creator).
-rw-r--r--.gitignore1
-rw-r--r--dracut/adduser.sh2
-rw-r--r--installer.sh.in211
-rw-r--r--mkimage.sh.in44
-rw-r--r--mkrootfs.sh.in18
5 files changed, 252 insertions, 24 deletions
diff --git a/.gitignore b/.gitignore
index 20af4c3..7d5c9a8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 *.sh
 *.img
 *.xz
+*.iso
 xbps-cachedir*
diff --git a/dracut/adduser.sh b/dracut/adduser.sh
index f06a4ea..e59fca1 100644
--- a/dracut/adduser.sh
+++ b/dracut/adduser.sh
@@ -32,7 +32,7 @@ chroot ${NEWROOT} sh -c "echo "$USERNAME:voidlinux" | chpasswd -c SHA512"
 
 # Enable sudo permission by default.
 if [ -f ${NEWROOT}/etc/sudoers ]; then
-    echo "${USERNAME}  ALL=(ALL) NOPASSWD: ALL" >> ${NEWROOT}/etc/sudoers
+    echo "${USERNAME} ALL=(ALL) NOPASSWD: ALL" >> ${NEWROOT}/etc/sudoers
 fi
 
 if [ -d ${NEWROOT}/etc/polkit-1 ]; then
diff --git a/installer.sh.in b/installer.sh.in
index ce2ba00..c1e4407 100644
--- a/installer.sh.in
+++ b/installer.sh.in
@@ -117,6 +117,202 @@ get_option() {
     echo $(grep -E "^${1}.*" $CONF_FILE|sed -e "s|${1}||")
 }
 
+# ISO-639 language names for locales
+iso639_language() {
+    case "$1" in
+    aa)  echo "Afar" ;;
+    af)  echo "Afrikaans" ;;
+    an)  echo "Aragonese" ;;
+    ar)  echo "Arabic" ;;
+    ast) echo "Asturian" ;;
+    be)  echo "Belgian" ;;
+    bg)  echo "Bulgarian" ;;
+    bhb) echo "Bhili" ;;
+    br)  echo "Breton" ;;
+    bs)  echo "Bosnian" ;;
+    ca)  echo "Catalan" ;;
+    cs)  echo "Czech" ;;
+    cy)  echo "Welsh" ;;
+    da)  echo "Danish" ;;
+    de)  echo "German" ;;
+    el)  echo "Greek" ;;
+    en)  echo "English" ;;
+    es)  echo "Spanish" ;;
+    et)  echo "Estonian" ;;
+    eu)  echo "Basque" ;;
+    fi)  echo "Finnish" ;;
+    fo)  echo "Faroese" ;;
+    fr)  echo "French" ;;
+    ga)  echo "Irish" ;;
+    gd)  echo "Scottish Gaelic" ;;
+    gl)  echo "Galician" ;;
+    gv)  echo "Manx" ;;
+    he)  echo "Hebrew" ;;
+    hr)  echo "Croatian" ;;
+    hsb) echo "Upper Sorbian" ;;
+    hu)  echo "Hungarian" ;;
+    id)  echo "Indonesian" ;;
+    is)  echo "Icelandic" ;;
+    it)  echo "Italian" ;;
+    iw)  echo "Hebrew" ;;
+    ja)  echo "Japanese" ;;
+    ka)  echo "Georgian" ;;
+    kk)  echo "Kazakh" ;;
+    kl)  echo "Kalaallisut" ;;
+    ko)  echo "Korean" ;;
+    ku)  echo "Kurdish" ;;
+    kw)  echo "Cornish" ;;
+    lg)  echo "Ganda" ;;
+    lt)  echo "Lithuanian" ;;
+    lv)  echo "Latvian" ;;
+    mg)  echo "Malagasy" ;;
+    mi)  echo "Maori" ;;
+    mk)  echo "Macedonian" ;;
+    ms)  echo "Malay" ;;
+    mt)  echo "Maltese" ;;
+    nb)  echo "Norwegian Bokmål" ;;
+    nl)  echo "Dutch" ;;
+    nn)  echo "Norwegian Nynorsk" ;;
+    oc)  echo "Occitan" ;;
+    om)  echo "Oromo" ;;
+    pl)  echo "Polish" ;;
+    pt)  echo "Portugese" ;;
+    ro)  echo "Romanian" ;;
+    ru)  echo "Russian" ;;
+    sk)  echo "Slovak" ;;
+    sl)  echo "Slovenian" ;;
+    so)  echo "Somali" ;;
+    sq)  echo "Albanian" ;;
+    st)  echo "Southern Sotho" ;;
+    sv)  echo "Swedish" ;;
+    tcy) echo "Tulu" ;;
+    tg)  echo "Tajik" ;;
+    th)  echo "Thai" ;;
+    tl)  echo "Tagalog" ;;
+    tr)  echo "Turkish" ;;
+    uk)  echo "Ukrainian" ;;
+    uz)  echo "Uzbek" ;;
+    wa)  echo "Walloon" ;;
+    xh)  echo "Xhosa" ;;
+    yi)  echo "Yiddish" ;;
+    zh)  echo "Chinese" ;;
+    zu)  echo "Zulu" ;;
+    *)   echo "$1" ;;
+    esac
+}
+
+# ISO-3166 country codes for locales
+iso3166_country() {
+    case "$1" in
+    AD) echo "Andorra" ;;
+    AE) echo "United Arab Emirates" ;;
+    AL) echo "Albania" ;;
+    AR) echo "Argentina" ;;
+    AT) echo "Austria" ;;
+    AU) echo "Australia" ;;
+    BA) echo "Bonsia and Herzegovina" ;;
+    BE) echo "Belgium" ;;
+    BG) echo "Bulgaria" ;;
+    BH) echo "Bahrain" ;;
+    BO) echo "Bolivia" ;;
+    BR) echo "Brazil" ;;
+    BW) echo "Botswana" ;;
+    BY) echo "Belarus" ;;
+    CA) echo "Canada" ;;
+    CH) echo "Switzerland" ;;
+    CL) echo "Chile" ;;
+    CN) echo "China" ;;
+    CO) echo "Colombia" ;;
+    CR) echo "Costa Rica" ;;
+    CY) echo "Cyprus" ;;
+    CZ) echo "Czech Republic" ;;
+    DE) echo "Germany" ;;
+    DJ) echo "Djibouti" ;;
+    DK) echo "Denmark" ;;
+    DO) echo "Dominican Republic" ;;
+    DZ) echo "Algeria" ;;
+    EC) echo "Ecuador" ;;
+    EE) echo "Estonia" ;;
+    EG) echo "Egypt" ;;
+    ES) echo "Spain" ;;
+    FI) echo "Finland" ;;
+    FO) echo "Faroe Islands" ;;
+    FR) echo "France" ;;
+    GB) echo "Great Britain" ;;
+    GE) echo "Georgia" ;;
+    GL) echo "Greenland" ;;
+    GR) echo "Greece" ;;
+    GT) echo "Guatemala" ;;
+    HK) echo "Hong Kong" ;;
+    HN) echo "Honduras" ;;
+    HR) echo "Croatia" ;;
+    HU) echo "Hungary" ;;
+    ID) echo "Indonesia" ;;
+    IE) echo "Ireland" ;;
+    IL) echo "Israel" ;;
+    IN) echo "India" ;;
+    IQ) echo "Iraq" ;;
+    IS) echo "Iceland" ;;
+    IT) echo "Italy" ;;
+    JO) echo "Jordan" ;;
+    JP) echo "Japan" ;;
+    KE) echo "Kenya" ;;
+    KR) echo "Korea, Republic of" ;;
+    KW) echo "Kuwait" ;;
+    KZ) echo "Kazakhstan" ;;
+    LB) echo "Lebanon" ;;
+    LT) echo "Lithuania" ;;
+    LU) echo "Luxembourg" ;;
+    LV) echo "Latvia" ;;
+    LY) echo "Libya" ;;
+    MA) echo "Morocco" ;;
+    MG) echo "Madagascar" ;;
+    MK) echo "Macedonia" ;;
+    MT) echo "Malta" ;;
+    MX) echo "Mexico" ;;
+    MY) echo "Malaysia" ;;
+    NI) echo "Nicaragua" ;;
+    NL) echo "Netherlands" ;;
+    NO) echo "Norway" ;;
+    NZ) echo "New Zealand" ;;
+    OM) echo "Oman" ;;
+    PA) echo "Panama" ;;
+    PE) echo "Peru" ;;
+    PH) echo "Philippines" ;;
+    PL) echo "Poland" ;;
+    PR) echo "Puerto Rico" ;;
+    PT) echo "Portugal" ;;
+    PY) echo "Paraguay" ;;
+    QA) echo "Qatar" ;;
+    RO) echo "Romania" ;;
+    RU) echo "Russian Federation" ;;
+    SA) echo "Saudi Arabia" ;;
+    SD) echo "Sudan" ;;
+    SE) echo "Sweden" ;;
+    SG) echo "Singapore" ;;
+    SI) echo "Slovenia" ;;
+    SK) echo "Slovakia" ;;
+    SO) echo "Somalia" ;;
+    SV) echo "El Salvador" ;;
+    SY) echo "Syria" ;;
+    TH) echo "Thailand" ;;
+    TJ) echo "Tajikistan" ;;
+    TN) echo "Tunisia" ;;
+    TR) echo "Turkey" ;;
+    TW) echo "Taiwan" ;;
+    UA) echo "Ukraine" ;;
+    UG) echo "Uganda" ;;
+    US) echo "United States of America" ;;
+    UY) echo "Uruguay" ;;
+    UZ) echo "Uzbekistan" ;;
+    VE) echo "Venezuela" ;;
+    YE) echo "Yemen" ;;
+    ZA) echo "South Africa" ;;
+    ZW) echo "Zimbabwe" ;;
+    *)  echo "$1" ;;
+    esac
+}
+
 show_disks() {
     local dev size sectorsize gbytes
 
@@ -319,13 +515,20 @@ set_keymap() {
 
 menu_locale() {
     local _locales="$(grep -E '\.UTF-8' /etc/default/libc-locales|awk '{print $1}'|sed -e 's/^#//')"
-    local _LOCALES=
+    local LOCALES ISO639 ISO3166
+    local TMPFILE=$(mktemp -t vinstall-XXXXXXXX || exit 1)
 
+    echo "Scanning locales..."
     for f in ${_locales}; do
-        _LOCALES="${_LOCALES} ${f} -"
+        eval $(echo $f | awk 'BEGIN { FS="." } \
+            { FS="_"; split($1, a); printf "ISO639=%s ISO3166=%s\n", a[1], a[2] }')
+        echo "$f|$(iso639_language $ISO639) ($(iso3166_country $ISO3166))|" >> $TMPFILE
     done
+    # Sort by ISO-639 language names
+    LOCALES=$(sort -t '|' -k 2 < $TMPFILE | xargs | sed -e's/| /|/g')
+    rm -f $TMPFILE
     while true; do
-        DIALOG --title " Select your locale " --menu "$MENULABEL" 14 70 14 ${_LOCALES}
+        (IFS="|"; DIALOG --title " Select your locale " --menu "$MENULABEL" 18 70 18 ${LOCALES})
         if [ $? -eq 0 ]; then
             set_option LOCALE "$(cat $ANSWER)"
             LOCALE_DONE=1
@@ -1129,7 +1332,7 @@ menu() {
         "Timezone") menu_timezone && [ -n "$TIMEZONE_DONE" ] && DEFITEM="RootPassword";;
         "RootPassword") menu_rootpassword && [ -n "$ROOTPASSWORD_DONE" ] && DEFITEM="UserAccount";;
         "UserAccount") menu_useraccount && [ -n "$USERNAME_DONE" ] && [ -n "$USERPASSWORD_DONE" ] \
-		&& DEFITEM="BootLoader";;
+               && DEFITEM="BootLoader";;
         "BootLoader") menu_bootloader && [ -n "$BOOTLOADER_DONE" ] && DEFITEM="Partition";;
         "Partition") menu_partitions && [ -n "$PARTITIONS_DONE" ] && DEFITEM="Filesystems";;
         "Filesystems") menu_filesystems && [ -n "$FILESYSTEMS_DONE" ] && DEFITEM="Install";;
diff --git a/mkimage.sh.in b/mkimage.sh.in
index 26007dd..ed6b6e4 100644
--- a/mkimage.sh.in
+++ b/mkimage.sh.in
@@ -1,6 +1,6 @@
 #!/bin/sh
 #-
-# Copyright (c) 2013-2015 Juan Romero Pardines.
+# Copyright (c) 2013-2016 Juan Romero Pardines.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -56,11 +56,11 @@ Usage: $PROGNAME [options] <rootfs-tarball>
 The <rootfs-tarball> argument expects a tarball generated by void-mkrootfs.
 The platform is guessed automatically by its name.
 
-Accepted sizes suffixes: K, M, G, T, E.
+Accepted sizes suffixes: KiB, MiB, GiB, TiB, EiB.
 
 OPTIONS
  -b <fstype>    Set /boot filesystem type (defaults to FAT)
- -B <bsize>     Set /boot filesystem size (defaults to 64MB)
+ -B <bsize>     Set /boot filesystem size (defaults to 64MiB)
  -r <fstype>    Set / filesystem type (defaults to EXT4)
  -s <totalsize> Set total image size (defaults to 2GB)
  -o <output>    Set image filename (guessed automatically)
@@ -104,7 +104,7 @@ fi
 
 : ${IMGSIZE:=2G}
 : ${BOOT_FSTYPE:=vfat}
-: ${BOOT_FSSIZE:=64M}
+: ${BOOT_FSSIZE:=64MiB}
 : ${ROOT_FSTYPE:=ext4}
 
 if [ -z "$FILENAME" ]; then
@@ -113,11 +113,11 @@ fi
 
 # double check PLATFORM is supported...
 case "$PLATFORM" in
-    bananapi|beaglebone|cubieboard2|cubietruck|odroid-u2|rpi|rpi2|usbarmory|*-musl);;
+    bananapi|beaglebone|cubieboard2|cubietruck|odroid-c2|odroid-u2|rpi|rpi2|usbarmory|*-musl);;
     *) die "The $PLATFORM is not supported, exiting..."
 esac
 
-for f in parted partx losetup mount mkfs.${BOOT_FSTYPE} mkfs.${ROOT_FSTYPE}; do
+for f in sfdisk partx losetup mount mkfs.${BOOT_FSTYPE} mkfs.${ROOT_FSTYPE}; do
     if ! which ${f} >/dev/null; then
         die "Cannot find ${f}, exiting."
     fi
@@ -136,24 +136,27 @@ truncate -s "${IMGSIZE}" $FILENAME >/dev/null 2>&1
 ROOTFSDIR=$(mktemp -d)
 
 info_msg "Creating disk image partitions/filesystems ..."
-parted $FILENAME mktable msdos
 if [ "$BOOT_FSTYPE" = "vfat" ]; then
     _btype="fat32"
     _args="-I -F16"
 fi
 case "$PLATFORM" in
-cubieboard2|cubietruck)
-    parted $FILENAME mkpart primary ext2 2048s ${ROOT_FSSIZE} 100%
-    parted $FILENAME toggle 1 boot
+cubieboard2|cubietruck|ci20*|odroid-c2*)
+    sfdisk ${FILENAME} <<_EOF
+label: dos
+2048,,L
+_EOF
     LOOPDEV=$(losetup --show --find --partscan $FILENAME)
     mkfs.${ROOT_FSTYPE} $disable_journal ${LOOPDEV}p1 >/dev/null 2>&1
     mount ${LOOPDEV}p1 $ROOTFSDIR
     ROOT_UUID=$(blkid -o value -s UUID ${LOOPDEV}p1)
     ;;
 *)
-    parted $FILENAME mkpart primary ${_btype} 2048s ${BOOT_FSSIZE}
-    parted $FILENAME mkpart primary ext2 ${BOOT_FSSIZE} 100%
-    parted $FILENAME toggle 1 boot
+    sfdisk ${FILENAME} <<_EOF
+label: dos
+2048,${BOOT_FSSIZE},b
+${BOOT_SIZE},+,L,*
+_EOF
     LOOPDEV=$(losetup --show --find --partscan $FILENAME)
     mkfs.${BOOT_FSTYPE} $_args ${LOOPDEV}p1 >/dev/null
     case "$ROOT_FSTYPE" in
@@ -188,18 +191,27 @@ if [ -n "$BOOT_UUID" ]; then
 fi
 
 case "$PLATFORM" in
-bananapi|cubieboard2|cubietruck)
+bananapi*|cubieboard2*|cubietruck*)
     dd if=${ROOTFSDIR}/boot/u-boot-sunxi-with-spl.bin of=${LOOPDEV} bs=1024 seek=8 >/dev/null 2>&1
     ;;
-odroid-u2)
+odroid-c2*)
+    dd if=${ROOTFSDIR}/boot/bl1.bin.hardkernel of=${LOOPDEV} bs=1 count=442 >/dev/null 2>&1
+    dd if=${ROOTFSDIR}/boot/bl1.bin.hardkernel of=${LOOPDEV} bs=512 skip=1 seek=1 >/dev/null 2>&1
+    dd if=${ROOTFSDIR}/boot/u-boot.bin of=${LOOPDEV} bs=512 seek=97 >/dev/null 2>&1
+    ;;
+odroid-u2*)
     dd if=${ROOTFSDIR}/boot/E4412_S.bl1.HardKernel.bin of=${LOOPDEV} seek=1 >/dev/null 2>&1
     dd if=${ROOTFSDIR}/boot/bl2.signed.bin of=${LOOPDEV} seek=31 >/dev/null 2>&1
     dd if=${ROOTFSDIR}/boot/u-boot.bin of=${LOOPDEV} seek=63 >/dev/null 2>&1
     dd if=${ROOTFSDIR}/boot/E4412_S.tzsw.signed.bin of=${LOOPDEV} seek=2111 >/dev/null 2>&1
     ;;
-usbarmory)
+usbarmory*)
     dd if=${ROOTFSDIR}/boot/u-boot.imx of=${LOOPDEV} bs=512 seek=2 conv=fsync >/dev/null 2>&1
     ;;
+ci20*)
+    dd if=${ROOTFSDIR}/boot/u-boot-spl.bin of=${LOOPDEV} obs=512 seek=1 >/dev/null 2>&1
+    dd if=${ROOTFSDIR}/boot/u-boot.img of=${LOOPDEV} obs=1K seek=14 >/dev/null 2>&1
+    ;;
 esac
 
 mountpoint -q ${ROOTFSDIR}/boot && umount ${ROOTFSDIR}/boot
diff --git a/mkrootfs.sh.in b/mkrootfs.sh.in
index 583044c..9425d0b 100644
--- a/mkrootfs.sh.in
+++ b/mkrootfs.sh.in
@@ -47,7 +47,7 @@ Usage: $PROGNAME [options] <platform>
 
 Supported platforms: i686, i686-musl, x86_64, x86_64-musl,
                      dockstar, bananapi, beaglebone, cubieboard2, cubietruck,
-                     odroid-u2, rpi, rpi2 (armv7), usbarmory
+                     odroid-c2, odroid-u2, rpi, rpi2 (armv7), usbarmory, ci20
 
 Options
     -b <syspkg> Set an alternative base-system package (defaults to base-system)
@@ -97,12 +97,18 @@ register_binfmt() {
     case "${_ARCH}" in
         armv*)
             echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-static:' > /proc/sys/fs/binfmt_misc/register
-            cp -f $(which qemu-arm-static) $rootfs/usr/bin || die "failed to copy qemu-arm-static to the rootfs"
+            ;;
+        aarch*)
+            echo ':qemu-arm64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-aarch64-static:' > /proc/sys/fs/binfmt_misc/register
+            ;;
+        mipsel*)
+            echo ':mipsel:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-mipsel-static:' > /proc/sys/fs/binfmt_misc/register
             ;;
         *)
             die "Unknown target architecture!"
             ;;
     esac
+    cp -f $(which $QEMU_BIN) $rootfs/usr/bin || die "failed to copy $QEMU_BIN to the rootfs"
 }
 
 #
@@ -131,6 +137,10 @@ case "$PLATFORM" in
     dockstar) _TARGET_ARCH="armv5tel"; _ARCH="armv5tel";;
     rpi-musl) _TARGET_ARCH="armv6l-musl"; _ARCH="armv6l";;
     rpi) _TARGET_ARCH="armv6l"; _ARCH="armv6l";;
+    ci20-musl) _TARGET_ARCH="mipselhf-musl"; _ARCH="mipsel-musl";;
+    ci20) _TARGET_ARCH="mipselhf"; _ARCH="mipsel";;
+    odroid-c2-musl) _TARGET_ARCH="aarch64-musl"; _ARCH="aarch64";;
+    odroid-c2) _TARGET_ARCH="aarch64"; _ARCH="aarch64";;
     *-musl) _TARGET_ARCH="armv7l-musl"; _ARCH="armv7l";;
     *) _TARGET_ARCH="armv7l"; _ARCH="armv7l";;
 esac
@@ -157,6 +167,8 @@ case "$PLATFORM" in
     rpi2*) SUBPLATFORM=rpi; QEMU_BIN=qemu-arm-static;;
     rpi*) SUBPLATFORM=${PLATFORM%-*}; QEMU_BIN=qemu-arm-static;;
     usbarmory*) SUBPLATFORM=${PLATFORM%-*}; QEMU_BIN=qemu-arm-static;;
+    ci20*) SUBPLATFORM=${PLATFORM%-*}; QEMU_BIN=qemu-mipsel-static;;
+    odroid-c2*) SUBPLATFORM=${PLATFORM%-*}; QEMU_BIN=qemu-aarch64-static;;
     i686*) QEMU_BIN=qemu-i386-static;;
     x86_64*) QEMU_BIN=qemu-x86_64-static;;
     *) die "$PROGNAME: invalid platform!";;
@@ -221,7 +233,7 @@ if [ -n "${_ARCH}" ]; then
             register_binfmt
             run_cmd "xbps-reconfigure -r $rootfs base-files"
             run_cmd "chroot $rootfs env -i xbps-reconfigure -f base-files"
-            rmdir $rootfs/usr/lib32
+            rmdir $rootfs/usr/lib32 2>/dev/null
             rm -f $rootfs/lib32 $rootfs/lib64 $rootfs/usr/lib64
             ;;
     esac