From 88fd7174eaefdce1fc92c95cba29f1daa327e5f4 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Fri, 11 Oct 2019 15:08:00 +0200 Subject: added support to set the ARCHITECTURE in mkimage-arch.sh adapted to changes upstream (base package requires some more minimal packages) --- README.md | 10 +++++++--- mkimage-arch.sh | 12 +++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 539c6ec..f28e196 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,17 @@ # docker -Cloned from https://github.com/moby/moby/tree/master/contrib +Cloned from https://github.com/moby/moby/tree/master/contrib/mkimage-arch.sh # usage +Choose an ARCHITECTURE in `mkimage-arch.sh` and set the corresponding +variable on top (for all practical purposes this should be 'pentium4'). + Run `mkimage-arch.sh` builds a docker image named `archlinux32` using `i686` architecture packages. Run `uname -m` in the shell started with `docker run -it archlinux32 /usr/bin/linux32 /bin/bash` indeed -shows `i686`. - +shows `i686` (Note: it shows `i686` for `i686` and `pentium4`, +also note that a docker chroot doesn't emulate CPU flags like SSE/SSE2 in +`/proc/cpuinfo`!). diff --git a/mkimage-arch.sh b/mkimage-arch.sh index be1d9ca..0afb4c1 100755 --- a/mkimage-arch.sh +++ b/mkimage-arch.sh @@ -4,6 +4,11 @@ # requires root set -e +# adapt to the flavour of Archlinux32 you need +#ARCHITECTURE=pentium4 +#ARCHITECTURE=i686 +ARCHITECTURE=i486 + hash pacstrap &>/dev/null || { echo "Could not find pacstrap. Run pacman -S arch-install-scripts" exit 1 @@ -24,7 +29,6 @@ chmod 755 $ROOTFS # packages to ignore for space savings PKGIGNORE=( dhcpcd - iproute2 jfsutils linux lvm2 @@ -34,11 +38,9 @@ PKGIGNORE=( nano netctl openresolv - pciutils pcmciautils reiserfsprogs s-nail - systemd-sysvcompat usbutils vi xfsprogs @@ -75,7 +77,7 @@ case "$arch" in exit 1 fi PACMAN_CONF=$(mktemp ${TMPDIR:-/var/tmp}/pacman-conf-archlinux-XXXXXXXXX) - sed "s/Architecture.*/Architecture = i686/" './mkimage-arch-pacman.conf' > "${PACMAN_CONF}" + sed "s/Architecture.*/Architecture = ${ARCHITECTURE}/" './mkimage-arch-pacman.conf' > "${PACMAN_CONF}" echo 'Server = http://archlinux32.andreasbaumann.cc/$arch/$repo' > mirrorlist32 sed -i "s|/etc/pacman.d/mirrorlist|mirrorlist32|g" "${PACMAN_CONF}" PACMAN_MIRRORLIST='Server = http://archlinux32.andreasbaumann.cc/$arch/$repo' @@ -112,7 +114,7 @@ arch-chroot $MOUNTPOINT /bin/sh -c "pacman-key --init; pacman-key --populate $AR arch-chroot $MOUNTPOINT /bin/sh -c "ln -fs /usr/share/zoneinfo/UTC /etc/localtime" echo 'en_US.UTF-8 UTF-8' > $MOUNTPOINT/etc/locale.gen arch-chroot $MOUNTPOINT locale-gen -sed -i "s/Architecture.*/Architecture = i686/" "$MOUNTPOINT/etc/pacman.conf" +sed -i "s/Architecture.*/Architecture = ${ARCHITECTURE}/" "$MOUNTPOINT/etc/pacman.conf" arch-chroot $MOUNTPOINT /bin/sh -c 'echo $PACMAN_MIRRORLIST > /etc/pacman.d/mirrorlist' # udev doesn't work in containers, rebuild /dev -- cgit v1.2.3