arch32-light

2022-07-15 12:40 UTC
  • Xyne

Metadata

Description: Lightweight 32-bit chroot intended for 64-bit systems.
Latest Version: 2015
Source Code: src/
Architecture:
  • any
Dependencies:
  • diffutils
  • pacman-mirrorlist>=20100621
  • pacman>=3.4.0
Conflicts:
  • arch32
Optional Dependencies:
  • initscripts: for initscripts daemon support
  • xorg-xhost: for host xorg support
Arch Repositories:
  • [xyne-any]
  • [xyne-i686]
  • [xyne-x86_64]
AUR Page: arch32-light
Arch Forum Thread: 97629
Tags:

ARCH32-LIGHT(1)

Name

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

Synopsis

pacman32 <operation> [options] [packages]

arch32

arch32 <application> [options]

Description

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.

Scripts

arch32initialize
Initializes a new chroot so that the user can begin installing files with pacman32.
arch32m
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.
arch32
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.
pacman32
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.

Configuration

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”.

/etc/arch32.conf
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.

/etc/arch32d.conf
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.
$ARCH32ROOT/etc/pacman32.conf
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.

ARCH32MOUNT

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.

ARCH32SYNC

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.

Removal

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.

Acknowledgement

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

CHANGELOG

2013-03-01

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

2012-11-25

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

2012-01-17

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

2010-09-22

  • no longer removes chroot when removing package

2010-08-18

  • 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”
Contact
echo xyne.archlinux.org | sed 's/\./@/'
Validation
XHTML 1.0 Strict CSS level 3 Atom 1.0