2015-06-07 17:54 UTC
  • Xyne



Lightweight 32-bit chroot intended for 64-bit systems.

Latest Version:



  • any


  • diffutils
  • pacman>=3.4.0
  • pacman-mirrorlist>=20100621


  • arch32

Optional Dependencies:

  • initscripts: for initscripts daemon support
  • xorg-xhost: for host xorg support

Arch Repositories:

  • [xyne-any]
  • [xyne-i686]
  • [xyne-x86_64]



Arch Forum ID:





arch32-light - a minimal 32-bit Arch Linux chroot


pacman32 <operation> [options] [packages]


arch32 <application> [options]


arch32-light installs a minimal (~150 MiB) 32-bit chroot to /opt/arch32. It is based on the wiki guide and the alternative lightweight install described there with some changes and additions:

  • chroot manager
    • handles bind mounts and file synchronization in the chroot
    • configurable via /etc/arch32d.conf
    • instance tracking to prevent nested remounting
  • convenience scripts
    • arch32 - changes into the chroot or runs applications in the chroot
    • arch32initialize - creates the chroot
    • pacman32 - manages packages in the chroot from the host
  • configuration files
    • /etc/arch32.conf
      • written in bash and source by the aforementioned scripts
      • ensures daemon is running before scripts continue
    • /etc/arch32d.conf
      • specifies chroot mountpoints
      • synchronizes files in the chroot with the host

Note that the chroot initalization only installs the bare minimum for a functional chroot. This does not include pacman. Use "pacman32" to install pacman along with whatever else you need:

pacman32 -S pacman

You can install the full "base" group but it includes many packages that are unnecessary for the chroot. As with regular Arch, it's left to the user to decide what is needed.


Initializes a new chroot so that the user can begin installing files with pacman32.
Chroot manager that supports mounting, unmounting and synchronizing files in the chroot. See arch32m help for supported actions. The configuration file is located at /etc/arch32d.conf.
Sources /etc/arch32.conf and then runs the "chroot" command. When run without any arguments it will launch a shell inside the chroot. If run with arguments, they will be treated as a command and run in the chroot.
Wrapper around the host's pacman that be used to install and manage packages in the chroot from the host system. This is necessary because the initial setup includes only the minimal packages required to run the chroot, i.e. it does not even include pacman.

The script's configuration file is located at "/etc/pacman32.conf" in the chroot, which is "/opt/arch32/etc/pacman32.conf" by default.


Once the package has been installed, run "arch32initialize" to create the pacman32 configuration file and get instructions to complete the installation.

After that, most users will want to install pacman and several other packages in the chroot with "pacman32 -S pacman [pkgs]". Many packages in the "base" group are unnecessary for the chroot and can be skipped to save space. Once pacman is installed in the chroot, packages can be managed from both the host via pacman32 and the chroot via pacman. If you wish to build packages in the chroot, install "base-devel".

This file is sourced by "pacman32" and "arch32" and should be used to configure the chroot prior to use. Normally this should include running "arch32d sync" to ensure that mountpoints are mounted and that the desired files are synchronized. See the comments in the file for more information.

This file must source /etc/arch32d.conf to set the ARCH32ROOT variable.

This is the daemon configuration file. It includes the ARCH32ROOT, ARCH32MOUNT and ARCH32SYNC variables. See the sections below and the comments in the file for more details.
This is the configuration file used by "pacman32". It is generated from /etc/pacman.conf during the installation and used to install the initial minimal system.


The "ARCH32MOUNT" array in /etc/arch32d.conf specifies which directories to mount in the chroot. The array should contain absolute paths to directories on the host. By default, these will be mounted at corresponding points within the chroot. For example, if ARCH32MOUNT contains "/tmp", it will be mounted to "/opt/arch32/tmp".

The order of the mountpoints in the array is important. That is the order in which they will be mounted and they will be unmounted in the reverse order.

It is possible to specify non-corresponding mountpoints within the chroot using a color (:). For example, to mount the host directory "/tmp/arch32" as "/tmp" in the chroot, add "/tmp/arch32:/tmp" to ARCH32MOUNT. This may be useful for mapping sub-directories of your home directory to the chroot's home directory.

Default: ARCH32MOUNT=('/proc' '/proc/bus/usb' '/dev' '/dev/pts' '/dev/shm' '/sys' '/tmp')

WARNING: Always exit the chroot and stop arch32d before changing ARCH32MOUNT or you may fail to unmount all directories in the chroot. This could result in the loss of data.


The "ARCH32SYNC" array in /etc/arch32d.conf specifies files that should be kept syncrhonized in the chroot. When the daemon is invoked with "sync", it will check each file in this array and it's corresponding file in the chroot and update that file if it has changed. Changes are only made in the chroot, never in the host.

The paths in this array must be absolute paths to files on the host.


To remove the chroot, stop the daemon, remove the package with pacman, then manually delete the chroot root directory. Make sure that all mountpoints in the chroot have been unmounted before the last step to prevent data loss.


arch32-light was adapted from the instructions in the Arch Linux wiki article "Install bundled 32-bit system in Arch64".



  • added PACMAN32BIN and PACMAN32ARGS variables to arch32.conf to configure pacman32 script


  • added service file
  • added chroot manager (arch32m): basically just a modified version of the old initscripts daemon


  • several daemon changes
    • improved mountpoint checking
    • added "umount" command
    • move verbose output to track mountpoint status
    • more efficient code in several places


  • no longer removes chroot when removing package


  • upgraded the daemon (arch32d)
    • handles file synchronizations via ARCH32SYNC array
    • uses separate configuration file (/etc/arch32d.conf)
    • added argument "check" to check if daemon is running
    • added argument "sync" to start the daemon if necessary then synchronize files
    • improved checks when mounting and unmounting
  • changed configuration files
    • added separate arch32d configuration file: /etc/arch32d.conf
    • moved ARCH32MOUNT array from /etc/rc.conf to /etc/arch32d.conf
    • moved file synchronization list from /etc/arch32.conf to ARCH32SYNC in /etc/arch32d.conf
    • improved daemon check in /etc/arch32.conf
      • invokes daemon with "sync" if the user is root
      • invokes daemon with "status" otherwise
  • added arch32initialize to initialize the chroot after installation
    • no longer "abuses" the post_install function :P
    • enables users to inspect the pacman32 configuration file before continuing
    • enables interactive initialization with pacman32 by removing "--noconfirm"
echo | sed 's/\./@/'
Blog News
XHTML 1.0 Strict CSS level 3 Atom 1.0