# Packages to install in the live system
PACKAGES=(
"@Base"
+ "dracut"
"kernel"
)
"@Base"
"dracut"
"grub"
+ "dmsetup"
)
# Compress as best as we can
return 0
}
+find_kernel_release() {
+ local file
+ for file in ${buildsystem}/usr/lib/modules/*; do
+ if [ -d "${file}" ]; then
+ basename "${file}"
+ return 0
+ fi
+ done
+
+ return 1
+}
+
+install_kernel_image() {
+ local filename="${1}"
+
+ # Find kernel release
+ local kernel_release="$(find_kernel_release)"
+
+ cp "${buildsystem}/boot/vmlinuz-${kernel_release}" "${filename}"
+}
+
+install_initramfs() {
+ local filename="${1}"
+
+ # Find kernel release
+ local kernel_release="$(find_kernel_release)"
+
+ local args=(
+ --verbose
+
+ # Generate a ramdisk that can run on many hosts
+ --no-hostonly
+
+ --kmoddir "/usr/lib/modules/${kernel_release}"
+
+ # Add the live image module to mount our squashfs system
+ --add "dmsquash-live"
+
+ # Only enable these modules
+ --modules "base kernel-modules"
+
+ # Add support for squashfs
+ --filesystems "squashfs"
+ )
+
+ if ! in_buildsystem --bind="${tempdir}" \
+ dracut "${args[@]}" "${filename}" "${kernel_release}" &>/tmp/dracut.$$; then
+ unlink "${filename}"
+ return 1
+ fi
+
+ return 0
+}
+
mkimage() {
local filename="${1}"
local r=0
)
fi
+ # Install the kernel image
+ if ! install_kernel_image "${tempdir}/boot/vmlinuz"; then
+ rm rf "${tempdir}"
+ return 1
+ fi
+
+ # Create live ramdisk
+ if ! install_initramfs "${tempdir}/boot/initramfs.img"; then
+ rm -rf "${tempdir}"
+ return 1
+ fi
+
# Create the live system image
if ! make_live_system_image "${tempdir}/live-os.img"; then
rm -rf "${tempdir}"