4 # Copyright 2003 Wichert Akkerman <wichert@wiggy.net>
6 # Simple script to generate a deb package for a Linux kernel. All the
7 # complexity of what to do with a kernel after it is installer or removed
8 # is left to other scripts and packages: they can install scripts in the
9 # /etc/kernel/{pre,post}{inst,rm}.d/ directories that will be called on
10 # package install and removal.
14 # Some variables and settings used throughout the script
15 version=$KERNELRELEASE
16 revision=`cat .version`
17 tmpdir="$objtree/debian/tmp"
18 fwdir="$objtree/debian/fwtmp"
19 packagename=linux-$version
20 fwpackagename=linux-firmware-image
22 if [ "$ARCH" == "um" ] ; then
23 packagename=user-mode-linux-$version
26 # Setup the directory structure
27 rm -rf "$tmpdir" "$fwdir"
28 mkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot"
29 mkdir -p "$fwdir/DEBIAN" "$fwdir/lib"
30 if [ "$ARCH" == "um" ] ; then
31 mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/share/doc/$packagename" "$tmpdir/usr/bin"
34 # Build and install the kernel
35 if [ "$ARCH" == "um" ] ; then
37 cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
38 cp .config "$tmpdir/usr/share/doc/$packagename/config"
39 gzip "$tmpdir/usr/share/doc/$packagename/config"
40 cp $KBUILD_IMAGE "$tmpdir/usr/bin/linux-$version"
42 cp System.map "$tmpdir/boot/System.map-$version"
43 cp .config "$tmpdir/boot/config-$version"
44 cp $KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"
47 if grep -q '^CONFIG_MODULES=y' .config ; then
48 INSTALL_MOD_PATH="$tmpdir" make KBUILD_SRC= modules_install
49 if [ "$ARCH" == "um" ] ; then
50 mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
51 rmdir "$tmpdir/lib/modules/$version"
55 # Install the maintainer scripts
56 for script in postinst postrm preinst prerm ; do
57 mkdir -p "$tmpdir/etc/kernel/$script.d"
58 cat <<EOF > "$tmpdir/DEBIAN/$script"
63 test -d /etc/kernel/$script.d && run-parts --arg="$version" /etc/kernel/$script.d
66 chmod 755 "$tmpdir/DEBIAN/$script"
69 name="Kernel Compiler <$(id -nu)@$(hostname -f)>"
70 # Generate a simple changelog template
71 cat <<EOF > debian/changelog
72 linux ($version-$revision) unstable; urgency=low
79 # Generate a control file
80 if [ "$ARCH" == "um" ]; then
82 cat <<EOF > debian/control
87 Standards-Version: 3.6.1
90 Provides: kernel-image-$version, linux-image-$version
92 Description: User Mode Linux kernel, version $version
93 User-mode Linux is a port of the Linux kernel to its own system call
94 interface. It provides a kind of virtual machine, which runs Linux
95 as a user process under another Linux kernel. This is useful for
96 kernel development, sandboxes, jails, experimentation, and
99 This package contains the Linux kernel, modules and corresponding other
100 files version $version
104 cat <<EOF > debian/control
109 Standards-Version: 3.6.1
111 Package: $packagename
112 Provides: kernel-image-$version, linux-image-$version
113 Suggests: $fwpackagename
115 Description: Linux kernel, version $version
116 This package contains the Linux kernel, modules and corresponding other
117 files version $version
121 # Fix some ownership and permissions
122 chown -R root:root "$tmpdir"
123 chmod -R go-w "$tmpdir"
125 # Do we have firmware? Move it out of the way and build it into a package.
126 if [ -e "$tmpdir/lib/firmware" ]; then
127 mv "$tmpdir/lib/firmware" "$fwdir/lib/"
129 cat <<EOF >> debian/control
131 Package: $fwpackagename
133 Description: Linux kernel firmware, version $version
134 This package contains firmware from the Linux kernel, version $version
137 dpkg-gencontrol -isp -p$fwpackagename -P"$fwdir"
138 dpkg --build "$fwdir" ..
141 # Perform the final magic
142 dpkg-gencontrol -isp -p$packagename
143 dpkg --build "$tmpdir" ..