Compiling SmartOS for AMD processors
There’s a few community-provided patches for SmartOS that enable KVM on AMD processors amongst other things, and given the HP Microserver has an AMD processor, that’s quite useful for turning it into a better lab server. The main list of so called “eait” builds was hiccuping when I tried to download the latest, and all I could find was a 20140812T062241Z image here.
The source code for the eait builds is maintained at https://github.com/arekinath/smartos-live, and you can see the patches applied on top of the normal SmartOS master by going to https://github.com/arekinath/smartos-live/compare/joyent:master...eait.
So here’s how to use SmartOS to compile a more up to date AMD-friendly Smartos!
Grab the latest multiarch SmartOS image (which has to be used, or the compile will fail.) The latest at the time of writing was
4aec529c-55f9-11e3-868e-a37707fcbe86, so that’s what I’ll use.imgadm import 4aec529c-55f9-11e3-868e-a37707fcbe86Spin up a zone for us to build in (the Building SmartOS on SmartOS page has extra info about this):
echo '{ "alias": "platform-builder", "brand": "joyent", "dataset_uuid": "4aec529c-55f9-11e3-868e-a37707fcbe86", "max_physical_memory": 32768, "quota": 0, "tmpfs": 8192, "fs_allowed": "ufs,pcfs,tmpfs", "maintain_resolvers": true, "resolvers": [ "8.8.8.8", "8.8.4.4" ], "nics": [ { "nic_tag": "admin", "ip": "dhcp", "primary": true } ], "internal_metadata": { "root_pw": "password", "admin_pw": "password" } }' | vmadm createLogin to the created zone:
zlogin <uuid from `vmadm create` output>Update the image to the latest packages, etc:
pkgin -y update && pkgin -y full-upgradeInstall a few images we’ll need to compile & package SmartOS:
pkgin install scmgit cdrtools pbzip2Grab the source code of the fork containing the patches we want, from arekinath/smartos-live
git clone https://github.com/arekinath/smartos-live cd smartos-liveOptional: Edit
src/Makefile.defsand changePARALLEL = -j$(MAX_JOBS)toPARALLEL = -j8to do less at once. (Microserver only has a dual core CPU!)Copy the configure definition into the right place and start configuration:
cp {sample.,}configure.smartos ./configure(You’ll probably get asked to accept the java license during configuration, so keep half an eye on it)
Once configure has completed (which doesn’t take too long, 15 minutes or so), start building:
gmake world && gmake liveOnce the build is successfully finished, time to package an iso & usb image:
export LC_ALL=C tools/build_iso tools/build_usb
Hey presto, you’ve a freshly built AMD-friendly SmartOS build to flash to a USB key / put on your netboot server and boot your Microserver from!
References