LinuxCommandLibrary

i386

Execute 32-bit programs on 64-bit systems

TLDR

View documentation for the original command

$ tldr setarch
copy

SYNOPSIS

N/A (not an executable command; used as architecture specifier, e.g., dpkg --add-architecture i386)

DESCRIPTION

i386 is not a standalone Linux command or executable. Instead, it denotes the Intel 80386 (a.k.a. IA-32) processor architecture, the foundational 32-bit x86 instruction set introduced in 1985. In Linux ecosystems, particularly Debian-based distributions like Ubuntu, i386 serves as a key architecture triplet for package management.

Modern 64-bit (amd64/x86_64) systems use multiarch support to run or install i386 packages alongside native ones. For example, enabling 32-bit support involves dpkg --add-architecture i386 followed by apt update. This allows legacy 32-bit applications, Wine, Steam games, or cross-compilation to function on 64-bit hosts without full emulation.

Historically, early Linux kernels and distributions targeted i386 as the default platform. Today, uname -m on 32-bit systems may output i386 or i686 (enhanced i386). Tools like QEMU offer emulation via qemu-i386, but i386 alone is not invoked directly.

Attempting i386 in a shell yields 'command not found'. It's referenced in contexts like compiler flags (-m32), Docker images (--platform linux/386), or file headers via file or objdump. Understanding i386 is crucial for compatibility, forensics, and reverse engineering on x86 systems.

CAVEATS

Not runnable as a command; 'command not found' error. Primarily for package managers and build tools. 32-bit support deprecated on some distros (e.g., Ubuntu 20.04+ requires manual enablement). Security risks with unmaintained 32-bit libs.

DETECTION

Check architecture: uname -m or dpkg --print-architecture. View binaries: file /bin/ls shows 'ELF 32-bit LSB executable, Intel 80386'.

EMULATION

Run i386 binaries on amd64: Install libc6:i386. Use qemu-i386-static for chroot/cross-arch.

HISTORY

Intel 80386 launched 1985, first 32-bit x86 CPU. Linux kernel 0.01 (1991) targeted i386. Became de facto standard for PCs until amd64 (2003). Multiarch in Debian (2009+) revived i386 on 64-bit. Declining use post-2010s due to 64-bit dominance.

SEE ALSO

dpkg(1), apt(8), setarch(1), linux32(1), qemu-i386(1), uname(1)

Copied to clipboard