Linux Notes: Itanium

  1. The information presented here is intended for educational use by qualified computer technologists.
  2. The information presented here is provided free of charge, as-is, with no warranty of any kind.
Edit: 2020-09-09

The Platform Name Game: x86, x86-64, x64, ia64 (what does it all mean?)

  • So you want to play with Linux but don't have a spare Itanium or Alpha Server to mess around with?
  • Download an all-in-one DVD for your PC then just boot it up to check it out.
    • It will come up entirely in memory so will not mess up your hard drives
    • Note: many people install Oracle VM VirtualBox then install one, or more, Linux distributions as a VM instance
  • The target-platform name-game used my most Linux distros
    • x86
      • amd86 is used for any x86 chips from any company supporting 64-bit extensions
        • gets the prefix amd because AMD was the first company to introduce 64-bit extensions to x86
      • i686 is used for any x86 chips from any company (starting after Pentium) not supporting 64-bit extensions (a.k.a. 32-bit only)
        • gets the prefix i because Intel was the first company to introduce 686
      • i586 is used for any Pentium-class x86 chips
        • some distros put Pentium-class chips in their i686 packages
      • i486 is used for any x86 chips before Pentium
      • x32 means pure 32-bit on x86
      • x64 means pure 64-bit on x86-64
    • Itanium (this is Intel's other 64-bit CPU)
      • i64 and ia64 both mean Itanium which will only work on an Itanium or Itanium2 platform

Getting Linux for an HP rx2660

  • I recently (2016.08.xx) acquired an HP rx2660 server running a pair of Itanium2 CPUs. I wanted to use this machine to test a modern version of MariaDB (an alternate fork of MySQL) which meant getting a free version of Unix or Linux. At this time, most Linux distros had dropped support of most mainframe and minicomputer hardware (including Itanium) which left me with only with a few choices according to https://distrowatch.com/search.php?architecture=ia64
     
  • caveat 1: many Linux distros still offer versions of IA64 from their archives but I'm not sure if you get get a modern version of any application (like MariaDB) working with old kernels. But apparently this happens all the time with Gentoo where the applications are only built from source code. In fact, everything in Gentoo is built from source code.
     
  • caveat 2: most HP systems this side of y2k have replaced traditional console devices with an iLO (integrated lights out) port. The iLO supports two connection methods:
    • a 100 Mb/s Ethernet port (which I will not discuss here)
    •  a db9 connector which usually employs one of these serial terminals:

Linux IA64 distributions list by most recently published update

Gentoo Linux @ Wikipedia

  • https://gentoo.org
  • https://wiki.gentoo.org/wiki/FAQ
  • https://wiki.gentoo.org/wiki/Handbook:Main_Page
  • this distro still releases biweekly software for Itanium although the kernel has not been updated for some time
  • note: 95% of your dialog will occur on the VGA monitor so you will not need a serial terminal
    • but I would still recommend connecting one; you might see some interesting status or error messages
    • in one instance I made a typo defining the root partition in elilo.conf so was prompted for it on the serial port during boot (Linux would have waited forever)
  • One reason why Gentoo has not found it necessary to drop less popular CPUs (eg. s390, SPARC, IA64, MIPS, Alpha, etc.) is that they publish Gentoo in two pieces:
    1. CPU-specific minimal installation CD-ROM which very rarely changes
    2. Something they call stage3 tarballs which change frequently (weekly-monthly) but are machine generated
    then you use the a PHP-based tool named Portage to acquire source code then which you will use to build CPU-specific binaries
  • Be sure to read my I64-specific gotchas here
  • comments:
    1. HP appears to have written some of the source code found under "/mnt/gentoo/linux/arch/ia64" because I observed references to employees at HP (name@hp.com) and HP Labs (name@hpl.hp.com). They probably did not contribute directly to Gentoo. It is more probable that they contributed to Open Source Development Labs where it propagated into other distributions like Gentoo
    2. If you aren't lucky enough to locate an installation DVD for I64-Gentoo, you will need to go CD/Tarball route. This will result in a hugely frustrating effort but you will learn a lot about Linux
  • quote from the book "Practical Raspberry Pi": Gentoo Linux (originally known as Enoch Linux) was created by Daniel Robbins and a small group of developers around 1999. His goal was simple: to create a Linux distribution with no precompiled binaries and tuned to the hardware that it's running on. This goal struck a huge roadblock when developers behind Enoch found out that the Gnu Compiler Collection (GCC) had issues building itself from the source correctly. The Enoch development team found solutions to resolve the issues. Not only did this allow the GCC to build correctly, but those contributions optimized the GCC's ability to compile binary files. At this point Enoch was renamed Gentoo. The name, Gentoo, was selected because a gentoo is the fastest swimming penguin. Gentoo at this point lacked a crucial item. It had no package management system. For a period of time Daniel Robbins halted Gentoo and switched to FreeBSD as his operating system. It was at this time that he was inspired by FreeBSD's package management system. From this Gentoo gained its own package management system call portage. The fact that Gentoo is free of binary components and has a package tree that consists of just source code makes it an ideal operating system to port to other architectures. There are very few machines that are not supported by Gentoo; ... Read more here or buy the book which also gives overviews of: Android OS, Plan 9, etc.

Debian Linux @ Wikipedia

FreeBSD @ Wikipedia

SuSE @ Wikipedia

  • https://www.suse.com/
  • this German company started in 1992 (one year after Linux Torvalds released the first version of Linux)
  • The name SuSE is a German acronym for Software- und System-Entwicklung (Software and Systems Development)
  • http://download.suse.com then drop "IA64" into the keyword box before clicking search
    yields: SLES-11-SP4-DVD-ia64-GM-DVD1.iso (published: 2015-07-14)
  • note: 99% of your work will happen on the iLO serial port so you need a PC-based terminal emulator (a real VT terminal will not work because the graphical installation menu employs a lot of non-standard ANSI graphics + ANSI colors which most VT terminals would never understand)
  • quote from this press release: Micro Focus and HPE also announced as part of the transaction the intent to enter into a commercial partnership naming SUSE as HPE�s preferred Linux partner (does this mean that HPE will begin contributing code to Linux?)
  • who owns this company?
    • Novel purchased SuSE in 2003
    • Attachmate purchased Novel in 2011
    • Micro Focus merged with Attachmate in 2014 to become Micro Focus International
    • HPE (the enterprise side of HP) announced on 2016-09-xx a "spin-merge" with Micro Focus International, where Micro Focus would acquire HPE's "non-core" software, and HPE shareholders would own 50.1 percent of the merged company, which would retain its current name. So, HPE does not own SuSE but HPE shareholders will via their Micro Focus shares after the spin-merge (er, split) completes in 2017. (now I wonder how many shares HPE has bought back)

CentOS @wikipedia

OS Ease of Install (Easiest First)

  OS Type install
over
ilO?
auto
install
success?
install
time
notes
1 OpenVMS binary 100% 100% < 1 hour
  • while OpenVMS is not a version of Linux or Unix,
    it still occupies the top spot for ease of installation
2 SuSE binary 100% 100% 1-2 hours
  • a pc-based terminal emulator is required; a real VT monitor will not work
  • elilo setup was done for me including the boot manager entry (cool)
3 CentOS binary 100% 100% 1-2 hours
  • elilo setup was done for me including the boot manager entry (cool)
  • this is a very old offering from 2008 so did not offer a version of MariaDB
4 Debian binary 100% 95% 2-3 hours
  • installation failed in the final phase (elilo setup); I had to to it manually
5 FreeBSD binary 100% 90% 2-3 hours
  • appeared to install in under 30 minutes. But then I discovered ...
  • that the installer never bothered to create a boot partition.
  • you need to do a manual partitioning using gpart (very unfriendly)
  • you will need to format the partitions with newfs
  • no elilo-like tools exist so you will be setting up the boot partition manually
  • http://www.wonkity.com/~wblock/docs/html/disksetup.html
9 Gentoo source build 5% n/a > 7 hours
  • after the initial boot, the run-time environment quickly shifts to the VGA monitor
  • installation instructions were spotty so I learned a lot the hard way
  • not recommended for anyone other than experts and/or hackers
  • provided the greatest amount of fun and frustration
  • When I finally got this working I was reminded of a line from the movie This Island Earth where the alien says: "you have assembled an interocitor; a feat which few men are capable"

Gentoo comments, caveats, and gotchas

  • it is possible to copy Gentoo from your CD or DVD to your hard disk but do not do this or you will not learn a thing (remember, this is not a binary distro). What you learn here will help you later on when you run into problems in a production environment.
  • the DVD does not make it any easier to do an install so download the CD then follow those instructions
  • if you decide to start with the DVD, first open a console window then type "sudo -i". From this point on use the CD-based installation instructions 
  • So why do they produce a DVD image?
    • to demonstrate what a final installation could look like
    • to provide tools (like a Firefox browser) to solve installation problems from the machine you are working on
    • to provide an environment where it is possible to do a line-by-line cut-n-paste from the installation documentation to the command line interpreter
    • to provide example settings (be sure to inspect "/mnt/cdrom/etc/portage/make.conf")
  • There is no easy way around it. A full install requires you to follow dozens of instructions spread across 11 sections of their installation guide

gotchas

  1. Type very carefully. This command "tar --help" passes one switch to tar while this command "tar -help" passes four switches (h, e, l, p) and will just ignore anything it does not understand
  2. Lots of UNIX sites published their own Gentoo installation guides but you would be wise to ignore everything published before 2014 because that year Gentoo went through major changes
  3. Using "parted" to partition your disks
    • The IA64 handbook instructs you to make a boot partition 32 MB in size which is way too small
      • you will run into problems if you later decide to use "genkernel" which enables initramfs which combine to be ~ 34 MB
    • start parted with the optimal switch as in "parted -a optimal /dev/sda"
    • the first command should be "unit mib"
    • the first partition should start at one, not zero, then run for 128 megabytes (minimum)
    • then choose values that are multiples of 32, 64, 128, or 256 (eg. mkpart 1 65)
  4. The Gentoo handbooks I tried (x86, amd64, ia64) in 2016 all work properly but are not 100% accurate
    • for example, the "export" command after "chroot" changes the prompt but the documentation still show the prompt as "root" (huh?)
  5. If you do not execute the "swapon /dev/sda2" command, tar will fail when it unpacks the stage3 tarball
  6. Do not modify file "make.conf" in the IA64 version. Just inserting "-march=native" will cause numerous errors
    details:
    1. I checked out gcc on other Gentoo distros including i486, i586 and i686 but none of them ever mention (in the help) using "-march=native" although writing a simple hello-world.c program then compiling with "-march=native" seems to work. But the output appeared to be the same as not using the switch at all
    2. The Gentoo installation manual seems to infer that switches "-march" and "-mtune" are synonyms but they are not. The first switch selects the CPU architecture (eg. i586) while the second switch selects a specific optimization within the specified architecture (eg. pentiumiii)
    3. The IA64 version of gcc in 2016 does not support the "-march" switch because this compiler can only generate Itanium code. Viewing verbose help indicates that switch "-mtune" can have only two values: "itanium1" or "itanium2" with the compiler defaulting to "itanium2".
      • if you are seeing a lot of build errors then try using switch "-mtune=itanium1"
      • HP appears to have stopped working on Linux source code (at least from what I can see in the comments area of the IA64 kernel). I can only assume that they worried that free Linux would hurt sales of their own proprietary UNIX product called HP-UX
  7. Many people skip chapter #3 (setting up the network) because it auto-configures via dhcp during the CD or DVD boot. However, you still must copy "/etc/resolv.conf" to the Gentoo hard drive before you execute "chroot". Why? After you execute "chroot" you will be isolated from the previous environment. Failure to do this will cause file retrieval failures when you execute "emerge-webrsync"
  8. The IA64 Handbook is missing this command in chapter #4
        mkfs.vfat /dev/sda1
    which is required before copying your boot loader in chapter #10. Do not forget to mount this volume before executing "elilo --efiboot" (or consider setting up the boot partition manually; that's what I did on Gentoo as well as Debian
  9. After you issue chroot I suggest you issue the passwd command for root. Failure to do this now will cause problems during your first boot in chapter #11
  10. On your first kernel build you would be wise to do an automatic build via command "genkernel all". This will produce a kernel similar to the one associated with the CD ROM (will auto-detect hardware but boot a little slower). Once everything works properly you could try "make menuconfig" on a subsequent build.
    • for some reason I don't yet understand, the linux image filename must be vmlinuz
  11. The file elilo.efi found on the Gentoo hard-drive is corrupt so copy the file used by the CD or DVD
    • when run by the management processor on the iLo, the program always throws this message: "3 0 0x0002C8 0x0000000000000000 EFI ASSERT error"
    • I don't yet know when this file was built from sources but here's the rub: every file with an ".efi" extension represents an x86 program which must only be run by the x86-based Management Processor associated with the iLO port; but gotcha-6c above indicates that the gcc compiler on this system cannot generate anything other than "ia64" code so if elilo.efi was built with ia64 instructions then no wonder it fails
    • another potential problem: the boot manager needs to read files from a FAT16-formatted boot partition so must be built with that capability
    • testing elilo.efi
      • applying Occam's Razor to the problem:
        • from the EFI utility you should create an empty directory under EFI called hack then copy elilo.efi to it
        • now instruct the management processor to execute this file
          • you should see a complaint about missing file: "/EFI/hack/elilo.conf" then the boot manager should drop into interactive mode prompting you to manually enter an image
          • if you do not see the complaint then booting is not getting this far
            • some have placed trace messages in the boot manager (elilo.efi) but this skill is beyond most developers
  12. Here are the contents of elilo.conf on the boot partition (worked on 2016-0-xx)
    default=gentoo1
    prompt
    timeout=50
    message=/EFI/boot/neil.msg
    
    image=/EFI/boot/vmlinuz
      label=gentoo1
      description="choice1"
      root=/dev/sda3
      initrd=/EFI/boot/initramdisk
      append="initrd=initramdisk root=/dev/sda3"
      read-only
    
    image=/EFI/boot/vmlinuz.old
      label=gentoo2
      description="choice2"
      root=/dev/sda3
      append="root=/dev/sda3"
      read-only
  13. and here are the contents of neil.msg on the boot partition (just a simple text file)
      menu:
        gentoo1  (gentoo with ram disk)
        gentoo2  (standalone)

Debian comments, caveats, and gotchas

  • this is a binary distro so will self-install with almost no problems.
  • however, this the install of Debian-7.11.0 (in 2016-09-xx) stopped at the elilo phase with an error. The only way around this was to mount the boot partition then manually set up the EFI environment 

What's up with elilo on Linux distros?

Overview
  • lilo (linux loader) is the command used to install the Linux boot loader
  •  elilo is the command used to install the EFI variation of lilo (EFI is used with systems employing EFI or UEFI rather than BIOS)
  • caveat: lots of Linux installation manuals offer "lilo examples" as "elilo examples" but this may be an oversimplification. For example, elilo offers a "-format" switch which makes one think that the EFI boot partition should not be mounted (like fdisk and parted, I assumed elilo could work with unmounted partitions).
    • Gentoo
      • All the elilo examples from chapter-10 of the Gentoo installation fail until you mount the EFI boot partition (the manual never tells you to do this).
    • Debian
      • The Debian-7.11.0 installation DVD always fails at this step which makes me think that they have not mounted this partition as well
2016
  • remember that you are copying files to a FAT16 volume so you should consider reducing file names to 8 characters or less
    • I'm not sure if this is necessary if you build your OS with UTF-8 as the primary character set
    • It is mandatory if you built your OS with ASCII as the primary character set
  • manual steps
    # assuming your shortened binary files are in /boot and your EFI boot partition is #1
    #
    mkfs.vfat /dev/sda1				(optional; could blow away other files)
    mkdir /mnt/demo123
    mount /dev/sda1 /mnt/demo123
    cd /
    cp /boot/* /mnt/demo123/*
    find . -name efiboot.efi
    cp /usr/lib/elilo/efiboot.efi /mnt/demo123/*
    #==========================================================
    #
    # now use an editor (nano or vi) to manually create an efi config
    # in the boot partition; DO NOT COPY /etc/elili.conf which contains
    # some information only used by the elilo utility (which we are not
    # going to run here)
    #
    # nano /mnt/demo123
    #	< then insert something like the following >
    #	timeout=50
    #	default=Gentoo
    #	prompt
    #
    #	image=/vmlinuz
    #		label=Gentoo1
    #		root=/dev/sda3
    #		read-only
    #
    #	image=/vmlinuz
    #		label=Gentoo2
    #		root=/dev/sda3
    #		read-only
    #		initrd=/initramfs
    #		append = "initrd=initramfs root=/dev/sda3 console=ttyS0,9600"
    #		read-only

 Back to Home
Neil Rieck
Waterloo, Ontario, Canada.