This document describes the steps to create a an Intel vPro Activator LiveCD and how to modify an existing LiveCD image.
If you just want to know what is a vPro Activator LiveCD or would just want to download it. Follow the link below:
The LiveCD is essentially a trimmed down Ubutnu 8.10 LiveCD image with a few modifications we performed to tailor it for the porpuse of vPro Bare-Metal configuration process. Follow the steps in the Ubuntu LiveCDCustomization Howto to modify the content of the Activator LiveCD.
Crteating a vPro Activator LiveCD from scratch
Creating a base Linux LiveCD image
Follow the steps in the Ubuntu LiveCD Customization From Scratch Howto to create the base Linux image. Since we are using the intrepid version (Ubuntu 8.10) use the following debootstrap command:
sudo debootstrap --arch i386 intrepid chroot
Here are some tips
1. image size reduction:
- Install the debian packages with the option:
apt-get --yes --no-install-recommends install <package name>
- Instead of the overall linux-generic package, you can install the linux-image-2.6.27-9-generic package
- Remove unncessary directories and files from the final image, avoid deletion from the working file system by using the "-e" option of mksquashfs to exclude directories and files. The dirs we've left out are:
/usr/share/doc /var/cache/apt/*.* /var/lib/apt/lists/*.*
2. Avoid loading the wlan driver to reduce boot time::
edit the file: /etc/modprobe.d/blacklist
add the line:
blacklist iwlagn iwlcore
Note: You can probably reduce boot time further by blacklisting additional unenecessary drivers such as pcmcia and bluetooth.
3. Enable boot on Microsoft Virtual PC: known issues are described in this Howto, in short you need to edit the file /etc/modprobe.d/blacklist-framebuffer
comment out (add "#") the following lines:
#blacklist vesafb #blacklist vga16b
Add the following line:
Customizing the image for Activator LiveCD
Modifying the root file system for vPro bare-metal LiveCD
perform the following operations once you've chroot to the image file system
1. Install additional packages:
apt-get –yes –-no-install-recomends install network-manager apt-get –yes –-no-install-recomends install bc
2. Install the HECI driver
Download latest HECI driver source from openamt.org (use latest SVN release from sourceforge), and build with the same kernel that is on the bootable image.. Alternativly copy the binary file from the original activator LiveCD, if you are using kernel 2.6.27-9
Override the ubuntu distro heci driver:
cp heci.ko to /lib/modules/2.6.27-9-generic/kernel/ubuntu/heci depmod
3. build the ZTCLocalAgent app from openamt.org and copy the binaries to image file system
mkdir /usr/local/share/ZTCLocalAgent cp ZTCLocalAgent ZTCLocalAgent.dat StatusStrings.dat /usr/local/share/ZTCLocalAgent chmod a+x /usr/local/share/ZTCLocalAgent/ZTCLocalAgent chmod a+r /usr/local/share/ZTCLocalAgent/*.*
4. copy the init script and hello binary (look for the file /etc/S99IntelAMT /usr/local/share/helloMessage/hello fro the activator LiveCD)
cp S99IntelAMT /etc/ mv /etc/rc.local /etc/rc.local.org ln –s /etc/S99intelAMT /etc/rc.local mkdir /usr/local/share/helloMessage cp hello /usr/local/share/helloMessage chmod a+x /etc/S99IntelAMT /usr/local/share/helloMessage/hello
Note: you can override the default provisioning server address information by modifying the S99IntelAMT script
5. Copy thw customized dmidecode util:
We use dmidecode to extract the system UUID which we then send in "hello" packets. However we've modified dmidecode so that UUID is parsed consistent with the way vPro and Windows parse UUID. For more info on the issue see the following mail-thread
cd /usr/local/share mkdir dmidecode-2.10 cp dmidecode dmidecode.2.10.tgz dmidecode-2.10/ chmod a+x dmidecode-2.10/dmidecode
6. Modifying the behavior of the Linux DHCP client:
The goal is to make a DHCP server offer identical ip address to both the Linux system and AMT, to this end we'll configure the DHCP client to send a client-identifier DHCP option specifying the HW MAC address of the LAN nic.
use the /etc/init/d/set-cl-id.sh script from the Activator LiveCD
cp set-cl-id/sh /etc/init.d/ cd /etc/rc2.d ln -s ../init.d/set-cl-id.sh ./S29ste-cl-id/.sh
Modify the dhcp client config file /etc/dhcp3/dhclient.conf
add the following line:
send dhcp-client-identifier <hwaddr>;
Note: it's possible to use dhclient.conf to modify other dhcp options sent by the LiveCD, refer to the dhclient man pages for more info.
7. Stop the LiveCD from fetching the time from ntp.ubuntu.org (and possibly modifying the system RTC)
comment out the following line in: /etc/default/ntpdate
8. Once done with the root file system modifications, create the squashed file system using mksquashfs command as described in the Ubuntu Howto
Customizing The boot loader for Activator LiveCD
1. Boot options:
the boot options are specified in the image/isolinux/isolinux.cfg, here's how it looks like:
DEFAULT live-diag LABEL live menu label ^Start Intel(r) Bare-Metal Activator kernel /casper/vmlinuz append boot=casper initrd=/casper/initrd.gz quiet nosmp acpi=off noprompt splash -- LABEL live-diag menu label ^Start Intel(r) Bare-Metal Activator with boot diagnostics kernel /casper/vmlinuz append boot=casper initrd=/casper/initrd.gz nosmp acpi=off noprompt splash -- DISPLAY isolinux.txt TIMEOUT 5 PROMPT 1
To reliably boot on wide variety of systems we use the “acpi=off” and the “nosmp” kernel variables.
The “noprompt” parameter is used by the /etc/init.d/casper shutdown script to determine whether to eject the CD-ROM and wait for user to hit “Enter” before shuting down the system. Since our primary media is USB this behavior doesn’t make sense. if you wish to boot from CD-ROM just remove this option
“quiet” indicates whether or not kernel boot messages are spewed to the console.
2. customizing boot text and graphics:
The text presented to the user during boot is defined in image/isolinux/isolinux.txt
THe bit-map is set in the image/isolinux/splash.rle
Refer to the Ubuntu Howto for information how to customize this files.
LiveCD doesn't send Hello Packets if the DHCP server is not configured to return "Router" option (DHCP option 3).
see more info in the bug report:
A. Set the Router option on the DHCP server