[arch-dev-public] Arch64 micro-build machine

Thomas Bächler thomas at archlinux.org
Tue Nov 13 04:05:09 EST 2007


Aaron Griffin schrieb:
>> @ all : if you find some x86_64 pkgs of mine not updated/build for
>> i686, this is the reason - feel free to build them if you have the
>> resources. thanx
> 
> Well is this is a problem at this moment, I can look into this. In
> fact, I might be able to setup a 32bit chroot on the same machine,
> which would make everything easier.

In fact, it is a simple matter of
pacman -r /mnt/arch32 -c /mnt/arch32/pacman.conf -S base base-devel
(with the right pacman.conf)
pacman -S dchroot
vi /etc/dchroot.conf

I have tons of scripts for that stuff, like scripts for bind-mounting
/home and such.

BTW, you should add a SRCDEST directory globally if you have not already
done so.

Some script snippets from me:

Bash prompt:
USERCOL=
HOSTCOL=
EXTRAPROMPT=

RSTCOL='\[\033[0m\]'
NCOL='\[\033[0;37;40m\]'

case $UID in
  0) USERCOL='\[\033[0;31;40m\]' ;;
  *) USERCOL='\[\033[0;32;40m\]' ;;
esac

HOSTCOL='\[\033[1;33;40m\]'
EXTRAPROMPT="[$(cat /etc/archlinux-root)]"
case ${EXTRAPROMPT} in
  [i686*)
    [ "$(uname -m)" != "i686" ] &&
EXTRAPROMPT="\[\033[1;31;40m\]${EXTRAPROMPT}${NCOL}"
    ;;
  [x86_64*)
    [ "$(uname -m)" != "x86_64" ] &&
EXTRAPROMPT="\[\033[1;31;40m\]${EXTRAPROMPT}${NCOL}"
  ;;
esac

export
PS1="${NCOL}${EXTRAPROMPT}[\t][${USERCOL}\u${NCOL}@${HOSTCOL}\h${NCOL}
\W]${RSTCOL}\\$ "
unset USERCOL HOSTCOL RSTCOL NCOL EXTRAPROMPT

The middle part is interesting, where it makes the [i686] red if one
forgets to run "linux32" with dchroot. To make life easier, I use the
"arch32" script:
#!/bin/sh

if [ -n "$*" ]; then
  CMD="$*"
  exec linux32 dchroot -c arch32 "$CMD"
else
  exec linux32 dchroot -c arch32
fi
(This fixes some weirdness in the way dchroot works with passing a command).

linux32 is part of the util-linux-ng package. Now, for bind-mounting
(don't do it via fstab, it will break):

for p in tmp dev dev/pts dev/shm proc proc/bus/usb sys home; do
  mount --bind /$p /mnt/arch32/$p
done
mount --bind -o ro / /mnt/arch32/mnt/arch64

Do something similar for umount. The bindmount that leads back from
arch32 to arch64 is useful to symlink resolv.conf and mtab, so I don't
have to adjust resolv.conf in arch32 every time I switch networks. I
also symlink some files from profile.d.

I hope this makes it easier for you.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 252 bytes
Desc: OpenPGP digital signature
URL: <http://archlinux.org/pipermail/arch-dev-public/attachments/20071113/fb89ae00/attachment.pgp>


More information about the arch-dev-public mailing list