How to make a custom ISO image with mkimage: Difference between revisions
No edit summary |
|||
Line 36: | Line 36: | ||
<pre>export PROFILENAME=nas</pre> | <pre>export PROFILENAME=nas</pre> | ||
<pre> | <pre> | ||
cat << EOF > ~/aports/scripts/mkimg.$PROFILENAME.sh | |||
profile_$PROFILENAME() { | profile_$PROFILENAME() { | ||
profile_standard | profile_standard | ||
kernel_cmdline="unionfs_size=512M console=tty0 console=ttyS0,115200" | kernel_cmdline="unionfs_size=512M console=tty0 console=ttyS0,115200" | ||
syslinux_serial="0 115200" | syslinux_serial="0 115200" | ||
Line 61: | Line 58: | ||
apks="$apks linux-firmware" | apks="$apks linux-firmware" | ||
} | } | ||
EOF | |||
</pre> | </pre> | ||
Set the script as executable: | Set the script as executable: | ||
{{Cmd|chmod +x mkimg.$PROFILENAME.sh}} | {{Cmd|chmod +x mkimg.$PROFILENAME.sh}} | ||
== Create the ISO == | == Create the ISO == |
Revision as of 18:13, 23 June 2017
This document explains how to build a custom ISO image using the new mkimage scripts located in aports directory.
Prerequisite
First make sure we have the needed tools
apk add build-base apk-tools alpine-conf busybox fakeroot syslinux xorriso
For efi you shoud add
mtools dosfstools grub-efi
Create a user (e.g. build) and add it to abuild group:
useradd build -G abuild
Then create signing keys (-i installs them in /etc/apk/keys which is required for later)
abuild-keygen -i -a
{{Tip| Make sure your public keys are placed in /etc/apk/keys/ (example: build-xxxxxxxx.rsa.pub):
ls /etc/apk/keys/
Clone (or update) the git repository.
git clone git://git.alpinelinux.org/aports
Make sure the apk index is up to date (so apk finds the packages):
apk update
Configuration
The mkimg scripts are shipped with pre-configured profiles.
The format is mkimg.$PROFILENAME.sh
So, in order to have a custom ISO, you should create your own mkimg.$PROFILENAME.sh script.
This is an example used to have ZFS module, overlayfs (which allows to have /lib/modules in r/w), a serial console output and some other useful apks to build a simple NAS:
export PROFILENAME=nas
cat << EOF > ~/aports/scripts/mkimg.$PROFILENAME.sh profile_$PROFILENAME() { profile_standard kernel_cmdline="unionfs_size=512M console=tty0 console=ttyS0,115200" syslinux_serial="0 115200" kernel_addons="zfs spl" apks="$apks iscsi-scst zfs-scripts zfs zfs-utils-py cciss_vol_status lvm2 mdadm mkinitfs mtools nfs-utils parted rsync sfdisk syslinux unrar util-linux xfsprogs dosfstools ntfs-3g " local _k _a for _k in $kernel_flavors; do apks="$apks linux-$_k" for _a in $kernel_addons; do apks="$apks $_a-$_k" done done apks="$apks linux-firmware" } EOF
Set the script as executable:
chmod +x mkimg.$PROFILENAME.sh
Create the ISO
Create a iso directory in your home dir:
mkdir -p ~/iso
Then create the actual ISO. In this example we will use the edge version x86_64:
sh mkimage.sh --tag edge \ --outdir ~/iso \ --arch x86_64 \ --repository http://dl-cdn.alpinelinux.org/alpine/edge/main \ --profile $PROFILENAME
Notes:
Of course, several passages of this doc can be automated with a script, like the repository/arch/outdir settings. This steps are left to you and to your imagination :)
Testing your ISO image
Qemu is useful for a quick test of your created ISO image.