===== Installation =====
This page describes how to install a current Linux distribution on an Alpha system with the [[software:firmware:srm|SRM console]], using [[software:boot_loaders:aboot|aboot]] 2.0 to boot it. The distribution's own installation guide covers everything that is not specific to Alpha; this page covers what is: the firmware, the disklabel, and the boot loader. Systems that have only the ARC or AlphaBIOS firmware are covered [[#arc-only_systems|at the end]].
In outline:
- Check that the system is supported, and update its firmware.
- Set up a serial console.
- Boot the installation CD from SRM.
- Partition the disk with a BSD disklabel.
- Install the system, then write aboot to the disk and create ''/etc/aboot.conf''.
- Set the SRM variables to boot the new system.
Debian's installer partitions the disk and installs aboot itself, so the [[#partitioning|Partitioning]] and [[#installing_aboot|Installing aboot]] sections apply to Gentoo, which is installed by hand, and to other manual installations. Debian's aboot installer only accepts an ext2 partition for the kernel and ''aboot.conf'', and stops with "No ext2 partitions found" if the disk has none, so the partitioning in the installer must include an ext2 file system, normally ''/boot''. [(>[[https://deb.debian.org/debian-ports/pool-alpha/main/a/aboot-installer/|aboot-installer 0.0.36~alpha]], Debian Ports)]
==== Before starting ====
=== Supported systems ===
Current kernels need an EV56 (21164A) or later processor. Check the CPU with the SRM ''show config'' command; a system with an EV4, EV45, or EV5 processor can run nothing newer than Linux 6.9, and no current distribution. See [[:status#processor_baseline|Current Status]] and the current kernel column of the [[hardware:systems|Systems]] and [[hardware:motherboards|Motherboards]] tables. Multiprocessor systems must boot from SRM, and every 21264 system has it.
=== Firmware ===
Update the SRM console to the last version released for the system before installing. Older versions cannot boot from some SCSI controllers or initialize some video cards, and some are too old for Linux at all. The last version for each system is listed under [[software:firmware:srm#final_versions|Final versions]], and where to find the images and how to install them under [[software:firmware#obtaining_and_updating_firmware|Firmware: Obtaining and updating firmware]]. ''show version'' at the prompt displays the current version.
If the system starts ARC or AlphaBIOS rather than SRM, switch it to SRM first, as described in [[software:firmware:arc#switching_to_srm|Switching to SRM]].
=== Distribution kernels ===
The DS15, DS25, ES45, GS80, GS160, GS320, ES47, ES80, and GS1280 run only kernels built without ''CONFIG_ALPHA_LEGACY_START_ADDRESS''; see [[documentation:kernel#kernel_start_address|Kernel: Kernel start address]]. Debian's installer and installed system use its ''alpha-generic'' kernel, which is built without the option and described as supporting the Wildfire, Titan, and Marvel systems. [(>[[https://salsa.debian.org/kernel-team/linux/-/blob/debian/7.2/forky/debian/config/alpha/defines.toml|debian/config/alpha/defines.toml]], Debian linux 7.2.7-1)] [(>[[https://salsa.debian.org/kernel-team/linux/-/blob/debian/7.2/forky/debian/config/alpha/config|debian/config/alpha/config]], Debian linux 7.2.7-1)] Gentoo's ''gentoo-kernel'' package uses Debian's configuration, [(>[[https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-kernel/gentoo-kernel/gentoo-kernel-6.18.52.ebuild|gentoo-kernel-6.18.52.ebuild]], gentoo.git)] and Gentoo's minimal install CD carries two kernels: ''gentoo'', built with the option, and ''gentoo_nolsa'', built without it. [(>[[https://gitweb.gentoo.org/proj/releng.git/tree/releases/specs-qemu/alpha/installcd-stage2-minimal.spec|releases/specs-qemu/alpha/installcd-stage2-minimal.spec]], releng.git)] The CD boots ''gentoo'' by default, which leaves these platforms out and prints ''LEGACY_START'' among the "Major Options" in its first messages. [(>[[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/alpha/kernel/setup.c?h=v7.3-rc1|arch/alpha/kernel/setup.c]], Linux 7.3)] On these systems, ''gentoo_nolsa'' is booted instead, as entry 1 of the CD's ''aboot.conf'', or entry 3 for a serial console on COM1: for example ''boot dqa0 -flags 1'', with the CD drive's device name in place of ''dqa0''. [(>[[https://distfiles.gentoo.org/releases/alpha/autobuilds/20260426T153103Z/|install-alpha-minimal-20260426T153103Z.iso]], distfiles.gentoo.org, 26 Apr 2026)]
=== Install media ===
Three distributions publish current Alpha install media:
^ Distribution ^ Media ^ Where ^
| Gentoo | Minimal install CD, and stage3 tarballs for OpenRC and systemd | [[https://distfiles.gentoo.org/releases/alpha/autobuilds/|distfiles.gentoo.org/releases/alpha/autobuilds]] |
| Debian Ports | Netinst CD snapshots, and netboot images | [[https://cdimage.debian.org/cdimage/ports/snapshots/|cdimage.debian.org/cdimage/ports/snapshots]] |
| T2 SDE | Install ISOs, built for EV56 | [[https://dl.t2sde.org/binary/|dl.t2sde.org/binary]] |
Gentoo's minimal CD boots to a shell, from which the system is installed by hand from a stage3 tarball, following the [[https://wiki.gentoo.org/wiki/Handbook:Alpha|Gentoo Handbook for Alpha]]. Debian's netinst CDs boot the Debian installer, which partitions the disk and installs aboot itself. Debian's Alpha porters recommend the CD snapshots over the separate netboot images, which see less testing. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/2021-March.mbox#L366|"Re: Bug#986009: installation-reports: document qemu workarounds and bug in newer d-i image"]], John Paul Adrian Glaubitz, debian-alpha, 27 Mar 2021)] T2 SDE's ISOs boot its own installer.
The image is written to a CD-R. SRM does not boot from USB storage, so a CD drive, or a network boot, is needed. Current SRM versions boot from SCSI and IDE (ATAPI) CD drives. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-November.mbox#L23168|"Re: Bootable CD ?"]], Martin Ostermann, axp-list, 9 Nov 1998)] A system without a working CD drive can boot the installer over the network; see [[software:boot_loaders:aboot#network_booting|aboot: Network booting]].
==== Serial console ====
A serial console is strongly recommended for the installation. Many video cards work only partly with the SRM console, and without a serial console, a kernel that fails to boot usually fails silently. It needs ''set console serial'' in SRM, and ''console=ttyS0'' in the kernel arguments, both when booting the installer and in ''/etc/aboot.conf'' for the installed system. The ES47, ES80, and GS1280 need ''console=srm'' instead of ''console=ttyS0''; see [[hardware:systems:marvel|Marvel]]. See [[documentation:srm#serial_console|Using the SRM Console: Serial console]] for the settings, cables, and the RMC.
==== Booting the installer ====
Find the CD drive's SRM name with ''show device''. SCSI drives are named ''dka//n//'', where //n// is 100 times the SCSI ID, and IDE drives ''dqa//n//''; see [[software:firmware:srm#device_names|Device names]]. The examples below use ''dka500'', a SCSI CD-ROM drive at ID 5.
The install CDs carry aboot and an ''aboot.conf''. Boot the first entry, or start aboot's prompt to see the others:
>>> boot dka500 -flags 0
>>> boot dka500 -flags i
aboot> l
Kernel arguments can follow the entry number, for example to add the serial console:
>>> boot dka500 -flags "0 console=ttyS0"
==== Partitioning ====
SRM finds aboot through a boot block in the disk's first sector, where a PC partition table would also be. The boot disk must therefore have a BSD disklabel, not an MBR or GPT partition table. [(>[[https://github.com/alphalinux/aboot/blob/master/doc/faq/SRM-HOWTO.sgml|SRM Firmware Howto]], v0.8.1, 14 Feb 2004)] Other disks in the system can use any partition table.
''fdisk'' from util-linux cannot create BSD disklabels, so use ''parted''. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/gentoo-alpha-mbox/2024-April.mbox#L85|"Re: [gentoo-alpha] fdisk on mini-installer iso"]], Matt Turner, gentoo-alpha, 8 Apr 2024)] Leave free space at the start of the disk for aboot; starting the first partition at 1 MiB leaves plenty. A typical layout, with a separate ''/boot'':
parted /dev/sda mktable bsd
parted /dev/sda mkpart ext2 1MiB 513MiB
parted /dev/sda mkpart linux-swap 513MiB 4609MiB
parted /dev/sda mkpart ext2 4609MiB 100%
parted /dev/sda print
A BSD disklabel holds at most eight partitions, ''a'' to ''h'', which aboot and SRM number 1 to 8. Linux names them ''/dev/sda1'' and so on, in the same order. By convention partition ''c'' covers the whole disk; a disklabel created by ''parted'' has none, but a disk labeled by another tool may, and ''swriteboot'' then needs ''-f3'' to write the boot block although partition ''c'' overlaps it. [(>[[https://github.com/alphalinux/aboot/blob/master/doc/faq/SRM-HOWTO.sgml|SRM Firmware Howto]], v0.8.1, 14 Feb 2004)]
aboot 2.0 reads ''/boot'' from ext2, ext3, ext4, or XFS. It rejects ext4 file systems with some newer features, and cannot load a kernel file split into more than four extents; see [[software:boot_loaders:aboot#file_systems|aboot: File systems]]. A small ext2 ''/boot'' avoids both limits. Not every distribution installs aboot 2.0. Gentoo packages 2.0, [(>[[https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-boot/aboot|sys-boot/aboot]], gentoo.git)] although its install CD boots with version 1.0_pre20040408; [(>[[https://distfiles.gentoo.org/releases/alpha/autobuilds/20260426T153103Z/|install-alpha-minimal-20260426T153103Z.iso]], distfiles.gentoo.org, 26 Apr 2026)] Debian installs a snapshot from February 2020, 1.0~pre20200212, [(>[[https://packages.debian.org/source/sid/aboot|aboot]], packages.debian.org)] and T2 one from August 2021. [(>[[https://svn.exactcode.de/t2/trunk/package/boot/aboot/aboot.desc|aboot.desc]], T2 SDE)] [(>[[https://github.com/alphalinux/aboot/commit/dde7f7b|"netabootwrap: Include stdlib.h for exit()"]], alphalinux/aboot, 1 Aug 2021)] Both predate aboot's XFS support and the extension of its ext4 support in 2025, [(>[[https://github.com/alphalinux/aboot/commit/6658725|"Add support for XFS to aboot"]], alphalinux/aboot)] [(>[[https://github.com/alphalinux/aboot/commit/707f7af|"ext4: add initial ext4 support with 64-bit group descriptors and multi-extent reads"]], alphalinux/aboot)] so with them ''/boot'' belongs on ext2. Recycled disks with an old PC partition table can confuse installers; erasing the old signatures first, with ''wipefs -a /dev/sda'', avoids this. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2003-January.mbox#L11200|"Re: swriteboot ?"]], Michal Jaegermann, axp-list, 23 Jan 2003)]
==== Installing aboot ====
After the system is installed, and still in the installer or chroot, write aboot to the start of the disk with ''swriteboot''. The target is the whole disk, not a partition, and ''-c'' names the partition that holds ''/etc/aboot.conf'', here partition 1, the ''/boot'' file system: [(>[[https://github.com/alphalinux/aboot/blob/master/sdisklabel/swriteboot.c|sdisklabel/swriteboot.c]], aboot 2.0)]
swriteboot -c1 /dev/sda /boot/bootlx
Distributions install ''bootlx'' as part of their aboot package; Debian's installer runs ''swriteboot'' itself. If ''swriteboot'' reports "bootcode overlaps with partition", the first partition starts too early, or the disk has a partition ''c'' covering the whole disk; see [[software:boot_loaders:aboot#swriteboot|aboot: swriteboot]].
Then create ''aboot.conf''. aboot reads it from the root of the configured partition, so with a separate ''/boot'' it is ''/boot/etc/aboot.conf'', and kernel paths are relative to ''/boot'': [(>[[https://github.com/alphalinux/aboot/blob/master/doc/man/aboot.conf.sgml|aboot.conf(5)]], aboot 2.0)]
0:1/vmlinuz root=/dev/sda3 console=ttyS0
1:1/vmlinuz root=/dev/sda3 console=ttyS0 single
2:1/vmlinuz.old root=/dev/sda3 console=ttyS0
3:1/vmlinuz initrd=/initrd.img root=/dev/sda3 console=ttyS0
Each line is an entry number, a colon, the partition and path of the kernel, and the kernel arguments. aboot has no default entry of its own; the default is chosen with ''boot_osflags'' below. Distributions differ in how they name kernels and initrds, so check ''/boot'' for the actual names, and use an ''initrd='' argument if the distribution uses one. If ''/boot'' is not a separate partition, the file is ''/etc/aboot.conf'' on the root file system, kernel paths are e.g. ''3/boot/vmlinuz'', and ''swriteboot'' takes ''-c3''.
==== Booting the installed system ====
Test the new system by booting it by hand from the SRM prompt, where ''dka0'' is the disk that aboot was written to:
>>> boot dka0 -flags 0
Once it works, set it to boot automatically: [(>[[https://github.com/alphalinux/aboot/blob/master/README.md|README.md]], aboot 2.0)]
>>> set bootdef_dev dka0
>>> set boot_file ""
>>> set boot_osflags 0
>>> set auto_action boot
''boot_osflags'' names the ''aboot.conf'' entry; ''boot_file'' is left empty because aboot.conf supplies the kernel. ''bootdef_dev'' can list more than one device, separated by commas, and SRM tries them in order. [(>{{wiki:hardware:systems:alphaserver_es40:alphaserver_es40_user_interface_guide.pdf?linkonly|AlphaServer ES40 and AlphaStation ES40 User Interface Guide}}, February 2000, p. 2-50)] Pressing C-c during startup returns to the SRM prompt, and ''set auto_action halt'' stops automatic booting.
If the system returns to the SRM prompt instead of booting, see the checklist under [[documentation:srm#booting_linux|Using the SRM Console: Booting Linux]], and the [[software:boot_loaders:aboot#known_issues|known issues]] of aboot.
==== After installation ====
aboot has no configuration step of its own to rerun: it reads ''aboot.conf'' and the kernel from the file system at every boot. A kernel update therefore needs no action if the ''aboot.conf'' entries name files, or symbolic links, that the distribution's kernel package updates. If they name versioned files instead, such as ''vmlinuz-6.12.0'', the entries must be edited after each update. Keeping an entry for the previous kernel gives a fallback that can be booted from the SRM prompt by its number. A kernel built by hand is installed as described under [[documentation:kernel#native_builds|Kernel: Native builds]].
==== Installing from a disk image ====
A system can also be installed under [[documentation:qemu|QEMU]] and the disk image written to a real disk afterwards, which is useful for a system without a working CD drive. Debian's installer writes a BSD disklabel and aboot under QEMU as on real hardware; see [[documentation:qemu#booting_an_installer|QEMU: Booting an installer]]. The image is converted to a raw image and copied to the disk, attached to another computer, with ''dd'':
qemu-img convert -O raw alpha.qcow2 alpha.img
dd if=alpha.img of=/dev/sdX bs=4M conv=fsync
The disk in the Alpha may have a different name from the one under QEMU, and the ''root='' arguments in ''aboot.conf'' and the entries in ''/etc/fstab'' have to match it. The kernel installed under QEMU must also support the real system's disk controller and network card, which a distribution's generic kernel does.
==== ARC-only systems ====
A few systems have only the [[software:firmware:arc|ARC, AlphaBIOS, or ARCSBIOS]] firmware, whose PALcode is designed for Windows NT and cannot run Linux. They boot Linux with [[software:boot_loaders:milo|MILO]], which provides its own PALcode, instead of aboot. Among systems that current kernels still support, these are the Alpha XL 366 and 433 ([[hardware:systems:alcor|XLT]]), the [[hardware:motherboards:pc164ux|AlphaPC 164UX]] (Ruffian), and the [[hardware:motherboards:pc164rx|AlphaPC 164RX]]. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2004-September.mbox#L5923|"Alpha Core ISO Images"]], Jay Estabrook, axp-list, 29 Sep 2004)]
Released versions of MILO cannot load kernels from Linux 2.6.23 onward. A fix was made in 2026, but no current kernel has yet been reported booting on these systems through MILO. [(>[[https://github.com/alphalinux/milo/commit/7a6701b734208c4fd36bb628996b32f811f6542a|"boot: skip non-PT_LOAD segments when loading kernel image"]], Matt Turner, MILO, 31 May 2026)] No current distribution ships MILO. The disk needs a PC (MBR) partition table with a small FAT partition for MILO and its loader, so it cannot also be booted from SRM; see [[software:boot_loaders:milo#from_arc_or_alphabios|MILO: From ARC or AlphaBIOS]].
Most other systems sold with ARC or AlphaBIOS, among them the [[hardware:motherboards:pc164lx|AlphaPC 164LX]], [[hardware:motherboards:pc164sx|AlphaPC 164SX]], [[hardware:systems:miata|Personal Workstation]], and [[hardware:systems:alcor|AlphaStation 500 and 600]], can run SRM, and should be switched to it; see [[software:firmware:arc#switching_to_srm|Switching to SRM]]. There is no usable MILO for the 21264 systems, [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-November.mbox#L43450|"Re: XP1000 & MILO & SCSI"]], Rich Payne, axp-list, 24 Nov 2000)] all of which have an SRM console.
==== See also ====
* [[documentation:srm|Using the SRM Console]]
* [[software:boot_loaders:aboot|aboot]], for everything about the boot loader
* [[documentation:qemu|QEMU]], to try a distribution before installing it on hardware
* [[documentation:kernel|Kernel]]
{{tag>documentation installation}}