Short answers to the questions most often asked about Linux on Alpha, with links to the pages that answer them in full. Terms are explained in the Glossary.
Only if it has an EV56 (21164A) or later processor. Linux 6.10 removed support for the EV4, EV45, and EV5 generations, so systems such as the Multia, AlphaStation 200 and 400, and the EB164 can run nothing newer than Linux 6.9, and no current distribution. Systems sold with an EV5 that also accept an EV56, such as the AlphaStation 500 and 600, work once the processor is upgraded. 1) See Current Status, and the current kernel column of the Systems table.
For Linux, the SRM console, wherever the system has it. The ARC and AlphaBIOS firmware were written for Windows NT, and boot Linux only through MILO, which no distribution has shipped for many years. SRM boots Linux with aboot, the boot loader that current distributions install, and it is the only firmware that can boot Linux on multiprocessor systems. Every 21264 system has it. 2)
For a current distribution, a system with an EV56 (21164A) or later processor and an SRM console. The single-processor 21264 systems, the AlphaServer DS10 and DS15 and the AlphaStation XP1000, are the most practical; the multiprocessor servers are faster but power-hungry. See Systems: Choosing a system today.
Yes, with an SMP kernel booted from SRM. MILO does not support multiprocessor systems. 3) See Current Status: Hardware.
ATI Radeon cards with the kernel's radeon modesetting driver are the only graphics cards known to work with current X.Org on Alpha. 4) The firmware must also be able to initialize the card; see Other Hardware: Graphics.
Debian Ports has packages for Xfce, MATE, LXQt, and LXDE and for the NetSurf, Dillo, and Epiphany browsers, but there is no Firefox or Chromium for Alpha. 5) See Current Status: Desktop use.
The console settings and the clock are kept in memory backed by a battery on the motherboard, and after twenty or more years that battery is usually dead. Replace it. 6) See Systems: Common problems.
set console serial and init at the SRM prompt, and console=ttyS0 on the kernel command line. Both are needed. The ES47, ES80, and GS1280 need console=srm instead of console=ttyS0. See Using the SRM Console.
Yes, with QEMU, which emulates an ES40-class system and runs current Debian and Gentoo. See QEMU.
Update the SRM firmware, set up a serial console, partition the disk with a BSD disklabel, and boot the distribution's install CD from SRM. Installation describes each step, and Distributions lists the current distributions and their install media.
SRM needs a BSD disklabel, and fdisk from util-linux cannot create one. Use parted with mktable bsd. 7) See Installation: Partitioning.
Debian's kernel is built for them: it is built without CONFIG_ALPHA_LEGACY_START_ADDRESS, as the Titan, Wildfire, and Marvel systems require, and its installer uses the same kernel. 8) Gentoo's minimal install CD boots a kernel built with the option by default, but also carries gentoo_nolsa, built without it, which is booted with -flags 1, or -flags 3 for a serial console. Gentoo's gentoo-kernel package is built without the option. A kernel built from the kernel's own defconfig also has the option on. See Installation: Distribution kernels and Kernel: Kernel start address.
aboot tries to load the kernel uncompressed and then compressed, and prints this if both fail, whatever the actual cause. Usually the path or partition number is wrong. 9) Boot with -flags i and use aboot's d command to list the partition's contents. See aboot: Known issues.
The kernel was configured for a different system. Use a generic kernel, or configure it for this system; see Kernel: Configuring for a system.
Messages such as
dbus-daemon(366): unaligned trap at 0000020000080bf0: 00000000f6857c0e 28 18
mean that the program read or wrote a 2, 4, or 8 byte value at an address that was not a multiple of its size. Alpha cannot do that in hardware, so the kernel traps the access, performs it in software, and logs the message. 10) The program keeps running and gets the right result, but each such access is far slower than an aligned one. The message gives the program name and PID, the address of the faulting instruction, the data address, the opcode, and the register.
The cause is almost always a bug in the program, typically a pointer cast from a char buffer to a wider type, and the same code is undefined behavior on every architecture. It should be reported to the program's developers. How to find the instruction and fix the code is described in Unaligned Access.
The program performed floating-point arithmetic that produced or used a NaN, an infinity, or a denormal, and was not compiled with -mieee. Alpha handles these cases only with help from the compiler, which -mieee requests, and without it the processor raises SIGFPE. Debian and Gentoo build with -mieee by default, 11) 12) but upstream GCC does not, 13) so software built with another compiler or with explicit flags may lack it. See Floating Point.
Alpha code addresses global data through the global pointer with a 16-bit displacement, which limits some tables to 64 KiB. The error appears when one of them overflows: 14)
-fpic, which on Alpha implies -msmall-data. Compile with -fPIC instead, which implies -mlarge-data. 15)-msmall-data, drop the option.See Toolchains for the details.
The program was built for a newer processor than the one running it: for example, code built with -mcpu=ev67 on a 21164A, which lacks the FIX and CIX instructions. Rebuild with a lower -mcpu; see Toolchains: Selecting a processor. The amask instruction shows which extensions the processor implements.
Alpha's C library is libc.so.6.1. Code that hard-codes libc.so.6, for example in a dlopen() call or in a language's foreign function interface, fails on Alpha. See Why Alpha Has libc.so.6.1.
8 KiB, and the kernel has no other option. 16) Code that assumes 4096-byte pages fails on Alpha; the page size should be read with sysconf(_SC_PAGESIZE). See Linux ABI Differences: Page size.
long double is the 128-bit IEEE quadruple format on Alpha, and every operation on it is a library call. See Linux ABI Differences.
No Clang, and no rustc, because LLVM has no Alpha back end. Alpha support is being worked on in rustc_codegen_gcc, a GCC back end for rustc. 17) gccgo builds Go code, but its library is that of Go 1.18, so software that needs a newer Go release does not build with it. 18) See Current Status.
On the linux-alpha mailing list, in #alpha on Libera.Chat, in the alphalinux organization's GitHub Discussions, or on a distribution's own Alpha list. See Community. Report bugs to the affected project; see Bugs.