Live-Build

Differences between revisions 12 and 14 (spanning 2 versions)
Revision 12 as of 2017-03-24 19:00:28
Size: 8484
Editor: debmc
Comment:
Revision 14 as of 2017-03-24 23:38:09
Size: 8702
Editor: debmc
Comment:
Deletions are marked like this. Additions are marked like this.
Line 10: Line 10:
ppc64el images are built on a ppc64el host '''ppc64el''' images are built on a '''ppc64el''' host
Line 15: Line 15:
There are two patches needed to build and install ppc64el ISO's, IMG's and Netboot tarball's.

As of March 23, 2017, you will need to clone and build grub2 on the build machine to include a patch for the ieee1275 chrp grub install
There are two patches needed to build and install '''ppc64el''' '''ISO's''', '''IMG's''' and '''Netboot Tar Ball's'''.

As of '''March 23, 2017''', you will need to clone and build '''grub2''' on the build machine to include a patch for the ieee1275 chrp grub install
Line 62: Line 62:
This tutorial is based on a pre-configured setup for ppc64el. This tutorial is based on a pre-configured setup for '''ppc64el'''.
Line 83: Line 83:
The sample configuration builds an ISO, if you want to build an IMG or Netboot Tar Ball The sample configuration builds an '''ISO''', if you want to build an '''IMG''' or '''Netboot Tar Ball'''
Line 97: Line 97:
If you built an IMG or Netboot tar ball look for '''live-image-ppc64el.img''' or '''live-image-ppc64el.netboot.tar''' If you built an '''IMG''' or '''Netboot Tar Ball''' look for '''live-image-ppc64el.img''' or '''live-image-ppc64el.netboot.tar'''
Line 158: Line 158:
To try this out on a VM, make a .IMG file to hold the installed OS you will create by using the kernel and initrd from the netboot tar file: To try this out on a '''VM''', make a '''.IMG''' file to hold the installed '''OS''' you will create by using the '''kernel''' and '''initrd''' from the netboot tar file:
Line 168: Line 168:
The '''initrd.gz''' embeds a completely automated '''preseed.cfg''' which asks NO questions and will install to the disk device detected.

If you do NOT wish to have this complete automation, you will need to re-build WITHOUT the '''preseed.cfg'''.

See the Advanced Customization section for how to remove the '''preseed.cfg'''.
The '''initrd.gz''' embeds a completely automated '''preseed.cfg''' which asks '''NO''' questions and will install to the disk device detected.

If you do '''NOT''' wish to have this complete automation, you will need to re-build '''WITHOUT''' the '''preseed.cfg'''.

See the '''Advanced Customization''' section for how to remove the '''preseed.cfg'''.
Line 180: Line 180:
'''config/common''' -> LB_APT_HTTP_PROXY="http://proxy:3128" <=== Replace with your proxy server and port name '''config/common''' -> LB_APT_HTTP_PROXY="`http://proxy:3128`" <=== Replace with your proxy server and port name
Line 185: Line 185:
To remove the preseed.cfg to allow the install to ask all the guided questions, remove the '''preseed.cfg''' and re-build the IMG, ISO or Netboot tar ball. To remove the '''preseed.cfg''' to allow the install to ask all the guided questions, remove the '''preseed.cfg''' and re-build the '''IMG''', '''ISO''' or '''Netboot Tar Ball'''.
Line 192: Line 192:
You can either remove this custom kernel .deb file completely or replace with your custom built kernel to modify the kernel used for the Live Images.
 
'''config/packages.chroot/linux-image-4.8.0-41-generic_4.8.0-41.44_ppc64el.deb''' <== If you build your own kernel, be sure to use "generic" in the name so the kernel is automatically picked up when the grub.cfg file is pre-built (LB_LINUX_FLAVOURS).
You can either remove this custom kernel '''.deb''' file completely or replace with your custom built kernel to modify the kernel used for the Live Images.
 
'''config/packages.chroot/linux-image-4.8.0-41-generic_4.8.0-41.44_ppc64el.deb''' <== If you build your own kernel, be sure to use '''generic''' in the name so the kernel is automatically picked up when the '''grub.cfg''' file is pre-built ('''LB_LINUX_FLAVOURS''').
Line 199: Line 199:
You can either remove this custom kernel .deb file completely or replace with your custom built kernel to modify the kernel used for the Installer Images. You can either remove this custom kernel '''.deb''' file completely or replace with your custom built kernel to modify the kernel used for the Installer Images.
Line 203: Line 203:
'''config/includes.installer/debs/linux-image-4.8.0-41-generic_4.8.0-41.44_ppc64el.deb''' <== If you build your own kernel, be sure to use "generic" in the name so the kernel is automatically picked up when the grub.cfg file is pre-built (LB_LINUX_FLAVOURS). '''config/includes.installer/debs/linux-image-4.8.0-41-generic_4.8.0-41.44_ppc64el.deb''' <== If you build your own kernel, be sure to use '''generic''' in the name so the kernel is automatically picked up when the '''grub.cfg''' file is pre-built ('''LB_LINUX_FLAVOURS''').
Line 213: Line 213:
}}}
Line 216: Line 215:

}}}
Line 230: Line 231:
}}}

Recommendation is to NOT modify unless you test the scenarios well.

Recommendation is to NOT modify unless you test the scenarios well.   }}}
Line 245: Line 247:
Line 253: Line 254:
Create or edit the file with packages you want installed, sample d-i below: Create or edit the file with packages you want installed, sample '''d-i''' below:

Live-Build Steps for building a custom ISO, IMG or Netboot tarball with a custom kernel

Live-Build is a Debian based infrastructure -> Debian Live-Build Manual

Build Host Requirements

ppc64el images are built on a ppc64el host

Setting up Live-Build with Patches

There are two patches needed to build and install ppc64el ISO's, IMG's and Netboot Tar Ball's.

As of March 23, 2017, you will need to clone and build grub2 on the build machine to include a patch for the ieee1275 chrp grub install

How To Build and Install Grub2

Install pre-req's

myuser@ppc64el:~ $ sudo apt-get install debootstrap debhelper kpartx gdisk devscripts dh-systemd live-build isolinux

Clone the live-build tree

myuser@ppc64el:~ $ git clone git://anonscm.debian.org/git/debian-live/live-build.git
myuser@ppc64el:~ $ cd live-build

Apply the Patches

myuser@ppc64el:~/live-build $ git am 0001-live-build-binary_hdd-enablement-for-ppc64el.patch
myuser@ppc64el:~/live-build $ git am 0001-live-build-installer-enablement-for-ppc64el.patch

0001-live-build-binary_hdd-enablement-for-ppc64el.patch

0001-live-build-installer-enablement-for-ppc64el.patch

Build Live-Build

myuser@ppc64el:~/live-build $ sudo dpkg-buildpackage -b -uc -us
myuser@ppc64el:~/live-build $ sudo make install
myuser@ppc64el:~/live-build $ lb -v
1:20161216 <- This should reflect the current level of the git tree

Sample Live-Build Configuration

This tutorial is based on a pre-configured setup for ppc64el.

Download the tar file

Mar-2017-fwts-installer-live-v5-ppc64el-config.tar.gz

Setup and Build

myuser@ppc64el:~ $ sudo mkdir lb-setup  <- lb-setup directory can be named anything you want

myuser@ppc64el:~ $ sudo cp Mar-2017-fwts-installer-live-v5-ppc64el-config.tar.gz ~/lb-setup

myuser@ppc64el:~ $ cd lb-setup

myuser@ppc64el:~/lb-setup $ sudo tar -xvf Mar-2017-fwts-installer-live-v5-ppc64el-config.tar.gz

The sample configuration builds an ISO, if you want to build an IMG or Netboot Tar Ball

myuser@ppc64el:~/lb-setup $ sudo vi config/build <=== Change "Type: iso-hybrid" or "Type: hdd" or "Type: netboot"

myuser@ppc64el:~/lb-setup $ sudo lb clean --all

myuser@ppc64el:~/lb-setup $ sudo lb build 2>&1 | tee /home/myuser/build.log

myuser@ppc64el:~/lb-setup $ ls -al live-image-ppc64el.iso  <- This is the output file based on the Type you chose to build.

If you built an IMG or Netboot Tar Ball look for live-image-ppc64el.img or live-image-ppc64el.netboot.tar

Running the ISO

Install pre-req's

myuser@ppc64el:~/lb-setup $ sudo apt-get install qemu-kvm qemu-utils

Run the Live Image and Optional Install

myuser@ppc64el:~/lb-setup $ sudo kvm -cdrom live-image-ppc64el.iso -m 2G -nographic -nodefaults -serial stdio

Running the IMG

Install pre-req's

myuser@ppc64el:~/lb-setup $ sudo apt-get install qemu-kvm qemu-utils

Run the Live Image and Optional Install

myuser@ppc64el:~/lb-setup $ sudo kvm -hda live-image-ppc64el.img -m 2G -nographic -nodefaults -serial stdio

Running the Netboot Tar Ball

Install pre-req's

myuser@ppc64el:~/lb-setup $ sudo apt-get install qemu-kvm qemu-utils

Run the Live Image and Optional Install

When you expand the live-image-ppc64el.netboot.tar file it contains various piece parts of the live-build output.

Use the tftpboot/ubuntu-installer/ppc64el/vmlinux and tftpboot/ubuntu-installer/ppc64el/initrd.gz

To try this out on a VM, make a .IMG file to hold the installed OS you will create by using the kernel and initrd from the netboot tar file:

$ sudo dd if=/dev/zero of=mydrive.img bs=1G count=10

$ sudo kvm -m 2G -serial stdio -nographic -nodefaults -netdev user,id=net0 -device virtio-net-pci,netdev=net0 -device virtio-blk-pci,drive=drive0 -drive id=drive0,if=none,file=mydrive.img -kernel vmlinux -initrd initrd.gz

The initrd.gz embeds a completely automated preseed.cfg which asks NO questions and will install to the disk device detected.

If you do NOT wish to have this complete automation, you will need to re-build WITHOUT the preseed.cfg.

See the Advanced Customization section for how to remove the preseed.cfg.

Advanced Customizations

Add a proxy for APT during the live-build process

config/common -> LB_APT_HTTP_PROXY="http://proxy:3128" <=== Replace with your proxy server and port name

Remove the preseed.cfg

To remove the preseed.cfg to allow the install to ask all the guided questions, remove the preseed.cfg and re-build the IMG, ISO or Netboot Tar Ball.

config/includes.installer/preseed.cfg <=== Remove this file completely and re-build

Update the Custom Kernel used to build Live Images

You can either remove this custom kernel .deb file completely or replace with your custom built kernel to modify the kernel used for the Live Images.

config/packages.chroot/linux-image-4.8.0-41-generic_4.8.0-41.44_ppc64el.deb <== If you build your own kernel, be sure to use generic in the name so the kernel is automatically picked up when the grub.cfg file is pre-built (LB_LINUX_FLAVOURS).

Update the Custom Kernel used to install a new OS with the Installer Images

You can either remove this custom kernel .deb file completely or replace with your custom built kernel to modify the kernel used for the Installer Images.

If you remove the file completely, be sure to remove related lines from the config/includes.installer/preseed.cfg

config/includes.installer/debs/linux-image-4.8.0-41-generic_4.8.0-41.44_ppc64el.deb <== If you build your own kernel, be sure to use generic in the name so the kernel is automatically picked up when the grub.cfg file is pre-built (LB_LINUX_FLAVOURS).

config/includes.installer/preseed.cfg <=== You will need to update the name of the linux custom kernel name in the bottom of the preseed.cfg file in various places

Update the Root or Default User ID used for Live Images

IMPORTANT NOTE: Changing the root or default user ID and password have consequences due to the timing of when the scripts are run and when root privileges are instantiated.

Recommendation is to NOT modify unless you test the scenarios well.

config/binary -> LB_BOOTAPPEND_LIVE="username=ubuntu" <=== You can change the default user id that is used during live-boot setup

config/includes.chroot/lib/live/config/0035-user-setup <=== This sets the Live default user password which is defined on the LB_BOOTAPPEND_LIVE parameter

(The file 0035-user-setup is NOT included, you will need to copy a template like config/hooks/live/0500-root-password.hook.chroot)

config/hooks/live/0500-root-password.hook.chroot <=== This sets the Live root password

Update the Root or Default User ID used for Installer Images

IMPORTANT NOTE: Changing the root or default user ID and password have consequences due to the timing of when the scripts are run and when root privileges are instantiated.

Recommendation is to NOT modify unless you test the scenarios well.

config/includes.installer/preseed.cfg <=== Update the passwd/username and passwd/user-password d-i parameters

Debian Preseeding

Add Packages for the Live Images

Create or edit the file with packages you want installed:

# cat ~/lb-setup/config/package-lists/live-list.chroot
openssh-client
openssh-server

Add Packages for the Installer Images

Create or edit the file with packages you want installed, sample d-i below:

d-i pkgsel/include string vim openssh-server build-essential

Debian Preseeding

Live-Build (last edited 2017-10-04 01:41:58 by debmc)