<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mauli</id>
	<title>Alpine Linux - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mauli"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Mauli"/>
	<updated>2026-04-26T02:49:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_make_a_custom_ISO_image&amp;diff=13318</id>
		<title>How to make a custom ISO image</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_make_a_custom_ISO_image&amp;diff=13318"/>
		<updated>2017-05-06T16:43:12Z</updated>

		<summary type="html">&lt;p&gt;Mauli: /* Live Disk Setup with APKOVL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document explains how to build a custom ISO image using the alpine-iso scripts.&lt;br /&gt;
&lt;br /&gt;
== Prerequisite ==&lt;br /&gt;
&lt;br /&gt;
First make sure we have the needed tools&lt;br /&gt;
{{Cmd|apk add alpine-sdk xorriso syslinux}}&lt;br /&gt;
&lt;br /&gt;
Then create signing keys (-i installs them in /etc/apk/keys which is required for later)&lt;br /&gt;
{{Cmd|abuild-keygen -i -a}}&lt;br /&gt;
&lt;br /&gt;
Clone (or update) the [http://git.alpinelinux.org/cgit/alpine-iso.git/ alpine-iso git repository].&lt;br /&gt;
{{Cmd|git clone git://git.alpinelinux.org/alpine-iso}}&lt;br /&gt;
&lt;br /&gt;
== Core Configuration ==&lt;br /&gt;
&lt;br /&gt;
The alpine-iso scripts is a simple makefile which you need to feed with a &#039;&#039;&amp;lt;name&amp;gt;.conf.mk&#039;&#039; file and a &#039;&#039;&amp;lt;name&amp;gt;.packages&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
In the &#039;&#039;&amp;lt;name&amp;gt;.conf.mk&#039;&#039; we specify&lt;br /&gt;
&lt;br /&gt;
;ALPINE_NAME&lt;br /&gt;
:name of iso image&lt;br /&gt;
&lt;br /&gt;
;ALPINE_VERSION&lt;br /&gt;
:(optional) version string. Will default to todays date.&lt;br /&gt;
&lt;br /&gt;
;KERNEL_FLAVOR&lt;br /&gt;
:(optional) either &#039;&#039;grsec&#039;&#039;, &#039;&#039;vserver&#039;&#039; or &#039;&#039;pae&#039;&#039;. Will default to grsec.&lt;br /&gt;
&lt;br /&gt;
;MODLOOP_EXTRA&lt;br /&gt;
:(optional) Extra kernel module packages for the modloop image. For example: &#039;&#039;dahdi-linux-vserver&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;APK_REPOS&lt;br /&gt;
:(optional) Path to addidtional apk repository.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&amp;lt;name&amp;gt;.packages&#039;&#039; is just a plaintext list of packages that should be included in the ISO image. You should always add &#039;&#039;alpine-base&#039;&#039; in there or the CD might not be able to boot. The dependencies for the packages will automatically be pulled in.&lt;br /&gt;
&lt;br /&gt;
== A rescue CD example ==&lt;br /&gt;
As an example, let us make a rescue ISO image with packages needed for rescue operations. We call it &#039;&#039;alpine-rescue&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We create the &#039;&#039;alpine-rescue.conf.mk&#039;&#039; as follows:&lt;br /&gt;
 ALPINE_NAME   := alpine-rescue&lt;br /&gt;
 KERNEL_FLAVOR := grsec&lt;br /&gt;
 MODLOOP_EXTRA :=&lt;br /&gt;
&lt;br /&gt;
If you are going to use a custom kernel, don&#039;t forget to specify KERNEL_FLAVOR_DEFAULT which will set the default kernel to boot.&lt;br /&gt;
&lt;br /&gt;
And then the &#039;&#039;alpine-rescue.packages&#039;&#039; as:&lt;br /&gt;
 alpine-base&lt;br /&gt;
 bkeymaps&lt;br /&gt;
 openssh&lt;br /&gt;
 e2fsprogs&lt;br /&gt;
 mdadm&lt;br /&gt;
 lvm2&lt;br /&gt;
 parted&lt;br /&gt;
 debootstrap&lt;br /&gt;
 ntfs-3g&lt;br /&gt;
&lt;br /&gt;
{{Tip| Make sure your public keys are placed in /etc/apk/keys/ (example: root-xxxxxxxx.rsa.pub):&lt;br /&gt;
{{Cmd|ls /etc/apk/keys/}}&lt;br /&gt;
&lt;br /&gt;
Learn apk-tools to find your home-built apk&#039;s:&lt;br /&gt;
{{Cmd|echo &amp;quot;~/.cache/abuild/&amp;quot; &amp;gt;&amp;gt; /etc/apk/repositories}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Make sure the apk index is up to date (so apk finds the packages):&lt;br /&gt;
{{Cmd|apk update}}&lt;br /&gt;
&lt;br /&gt;
We create the ISO image by telling the makefile the profile name. The makefile target is &#039;&#039;iso&#039;&#039;.&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;make PROFILE=alpine-rescue iso&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Tip| If you are building inside an LXC guest, use fakeroot:&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;fakeroot make PROFILE=alpine-rescue iso&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
To generate the sha256 sum we use the &#039;&#039;sha256&#039;&#039; make target.&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;make PROFILE=alpine-rescue sha256&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Package lists ==&lt;br /&gt;
&lt;br /&gt;
Beside the plaintext package lists in the git repository, there are more documented package lists contributed by Alpine users. Those lists can be transformed into a plain text description by &amp;lt;code&amp;gt;apk search --exact -v $(cat alpine.packages)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
So far the lists below are available (check [[:Category:ISO|here]] for more.)&lt;br /&gt;
&lt;br /&gt;
* [[Alpine_mini|Alpine Mini]]&lt;br /&gt;
* [[Alpine_rescue|Alpine Rescue]]&lt;br /&gt;
* [[Alpine_security|Alpine Security]]&lt;br /&gt;
* [[Alpine SCST]]&lt;br /&gt;
&lt;br /&gt;
== Live Disk Setup with APKOVL ==&lt;br /&gt;
&lt;br /&gt;
Once you have customized your custom ISO, you can now setup the live environment to operate outside of the standard installer as follows:&lt;br /&gt;
&lt;br /&gt;
* Generate an APKOVL file with [[Alpine_local_backup|lbu]], &amp;lt;code&amp;gt;lbu ci&amp;lt;/code&amp;gt;&lt;br /&gt;
* Alpine ISO requires the OVL Volume to be hosted on a web server. Put the APKOVL file on a webserver and identify the url. &lt;br /&gt;
* Uncomment the &amp;lt;code&amp;gt;APKOVL&amp;lt;/code&amp;gt; line in the alpine flavor of your choice and set it to the address of your ovl volume.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* Any packages you add to /etc/apk/world of your lbu will automatically be installed onto the live system image.&lt;br /&gt;
* If you don&#039;t have a web server you can run busybox&#039;s httpd temporarily - &amp;lt;code&amp;gt;busybox httpd -p 127.0.0.1:80&amp;lt;/code&amp;gt;&lt;br /&gt;
* In general, &amp;lt;code&amp;gt;lbu&amp;lt;/code&amp;gt; will only handle files in &amp;lt;code&amp;gt;/etc&amp;lt;/code&amp;gt;, to customize this further, you need to add additional files.&lt;br /&gt;
* If you want to make a customized installer, you need to create &amp;lt;code&amp;gt;.default_boot_services&amp;lt;/code&amp;gt; which will cause &amp;lt;code&amp;gt;mkinitfs&amp;lt;/code&amp;gt; to create the defaults for the live image.&lt;br /&gt;
&lt;br /&gt;
== Testing your ISO image ==&lt;br /&gt;
&lt;br /&gt;
[[Qemu#Live_mode| Qemu]] is useful for a quick test of your created ISO image.&lt;br /&gt;
&lt;br /&gt;
[[Category:Package Manager]]&lt;br /&gt;
[[Category:ISO]]&lt;/div&gt;</summary>
		<author><name>Mauli</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=How_to_make_a_custom_ISO_image&amp;diff=13315</id>
		<title>How to make a custom ISO image</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=How_to_make_a_custom_ISO_image&amp;diff=13315"/>
		<updated>2017-05-05T22:07:34Z</updated>

		<summary type="html">&lt;p&gt;Mauli: /* A rescue CD example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document explains how to build a custom ISO image using the alpine-iso scripts.&lt;br /&gt;
&lt;br /&gt;
== Prerequisite ==&lt;br /&gt;
&lt;br /&gt;
First make sure we have the needed tools&lt;br /&gt;
{{Cmd|apk add alpine-sdk xorriso syslinux}}&lt;br /&gt;
&lt;br /&gt;
Then create signing keys (-i installs them in /etc/apk/keys which is required for later)&lt;br /&gt;
{{Cmd|abuild-keygen -i -a}}&lt;br /&gt;
&lt;br /&gt;
Clone (or update) the [http://git.alpinelinux.org/cgit/alpine-iso.git/ alpine-iso git repository].&lt;br /&gt;
{{Cmd|git clone git://git.alpinelinux.org/alpine-iso}}&lt;br /&gt;
&lt;br /&gt;
== Core Configuration ==&lt;br /&gt;
&lt;br /&gt;
The alpine-iso scripts is a simple makefile which you need to feed with a &#039;&#039;&amp;lt;name&amp;gt;.conf.mk&#039;&#039; file and a &#039;&#039;&amp;lt;name&amp;gt;.packages&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
In the &#039;&#039;&amp;lt;name&amp;gt;.conf.mk&#039;&#039; we specify&lt;br /&gt;
&lt;br /&gt;
;ALPINE_NAME&lt;br /&gt;
:name of iso image&lt;br /&gt;
&lt;br /&gt;
;ALPINE_VERSION&lt;br /&gt;
:(optional) version string. Will default to todays date.&lt;br /&gt;
&lt;br /&gt;
;KERNEL_FLAVOR&lt;br /&gt;
:(optional) either &#039;&#039;grsec&#039;&#039;, &#039;&#039;vserver&#039;&#039; or &#039;&#039;pae&#039;&#039;. Will default to grsec.&lt;br /&gt;
&lt;br /&gt;
;MODLOOP_EXTRA&lt;br /&gt;
:(optional) Extra kernel module packages for the modloop image. For example: &#039;&#039;dahdi-linux-vserver&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;APK_REPOS&lt;br /&gt;
:(optional) Path to addidtional apk repository.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&amp;lt;name&amp;gt;.packages&#039;&#039; is just a plaintext list of packages that should be included in the ISO image. You should always add &#039;&#039;alpine-base&#039;&#039; in there or the CD might not be able to boot. The dependencies for the packages will automatically be pulled in.&lt;br /&gt;
&lt;br /&gt;
== A rescue CD example ==&lt;br /&gt;
As an example, let us make a rescue ISO image with packages needed for rescue operations. We call it &#039;&#039;alpine-rescue&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We create the &#039;&#039;alpine-rescue.conf.mk&#039;&#039; as follows:&lt;br /&gt;
 ALPINE_NAME   := alpine-rescue&lt;br /&gt;
 KERNEL_FLAVOR := grsec&lt;br /&gt;
 MODLOOP_EXTRA :=&lt;br /&gt;
&lt;br /&gt;
If you are going to use a custom kernel, don&#039;t forget to specify KERNEL_FLAVOR_DEFAULT which will set the default kernel to boot.&lt;br /&gt;
&lt;br /&gt;
And then the &#039;&#039;alpine-rescue.packages&#039;&#039; as:&lt;br /&gt;
 alpine-base&lt;br /&gt;
 bkeymaps&lt;br /&gt;
 openssh&lt;br /&gt;
 e2fsprogs&lt;br /&gt;
 mdadm&lt;br /&gt;
 lvm2&lt;br /&gt;
 parted&lt;br /&gt;
 debootstrap&lt;br /&gt;
 ntfs-3g&lt;br /&gt;
&lt;br /&gt;
{{Tip| Make sure your public keys are placed in /etc/apk/keys/ (example: root-xxxxxxxx.rsa.pub):&lt;br /&gt;
{{Cmd|ls /etc/apk/keys/}}&lt;br /&gt;
&lt;br /&gt;
Learn apk-tools to find your home-built apk&#039;s:&lt;br /&gt;
{{Cmd|echo &amp;quot;~/.cache/abuild/&amp;quot; &amp;gt;&amp;gt; /etc/apk/repositories}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Make sure the apk index is up to date (so apk finds the packages):&lt;br /&gt;
{{Cmd|apk update}}&lt;br /&gt;
&lt;br /&gt;
We create the ISO image by telling the makefile the profile name. The makefile target is &#039;&#039;iso&#039;&#039;.&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;make PROFILE=alpine-rescue iso&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Tip| If you are building inside an LXC guest, use fakeroot:&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;fakeroot make PROFILE=alpine-rescue iso&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
To generate the sha256 sum we use the &#039;&#039;sha256&#039;&#039; make target.&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;make PROFILE=alpine-rescue sha256&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Package lists ==&lt;br /&gt;
&lt;br /&gt;
Beside the plaintext package lists in the git repository, there are more documented package lists contributed by Alpine users. Those lists can be transformed into a plain text description by &amp;lt;code&amp;gt;apk search --exact -v $(cat alpine.packages)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
So far the lists below are available (check [[:Category:ISO|here]] for more.)&lt;br /&gt;
&lt;br /&gt;
* [[Alpine_mini|Alpine Mini]]&lt;br /&gt;
* [[Alpine_rescue|Alpine Rescue]]&lt;br /&gt;
* [[Alpine_security|Alpine Security]]&lt;br /&gt;
* [[Alpine SCST]]&lt;br /&gt;
&lt;br /&gt;
== Live Disk Setup with APKOVL ==&lt;br /&gt;
&lt;br /&gt;
Once you have customized your custom ISO, you can now setup the live environment to operate outside of the standard installer as follows:&lt;br /&gt;
&lt;br /&gt;
* Generate an APKOVL file with [[Alpine_local_backup|lbu]], &amp;lt;code&amp;gt;lbu ci&amp;lt;/code&amp;gt;&lt;br /&gt;
* Alpine ISO requires the OVL Volume to be hosted on a web server. Put the APKOVL file on a webserver and identify the url. &lt;br /&gt;
* Uncomment the &amp;lt;code&amp;gt;APKOVL&amp;lt;/code&amp;gt; line in the alpine flavor of your choice and set it to the address of your ovl volume.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* Any packages you add to /etc/apk/world of your lbu will automatically be installed onto the live system image.&lt;br /&gt;
* If you don&#039;t have a web server you can run busybox&#039;s httpd temporarily - &amp;lt;code&amp;gt;busybox -p 127.0.0.1:80&amp;lt;/code&amp;gt;&lt;br /&gt;
* In general, &amp;lt;code&amp;gt;lbu&amp;lt;/code&amp;gt; will only handle files in &amp;lt;code&amp;gt;/etc&amp;lt;/code&amp;gt;, to customize this further, you need to add additional files.&lt;br /&gt;
* If you want to make a customized installer, you need to create &amp;lt;code&amp;gt;.default_boot_services&amp;lt;/code&amp;gt; which will cause &amp;lt;code&amp;gt;mkinitfs&amp;lt;/code&amp;gt; to create the defaults for the live image.&lt;br /&gt;
&lt;br /&gt;
== Testing your ISO image ==&lt;br /&gt;
&lt;br /&gt;
[[Qemu#Live_mode| Qemu]] is useful for a quick test of your created ISO image.&lt;br /&gt;
&lt;br /&gt;
[[Category:Package Manager]]&lt;br /&gt;
[[Category:ISO]]&lt;/div&gt;</summary>
		<author><name>Mauli</name></author>
	</entry>
</feed>