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 tmpdir="$objtree/debian/tmp"
17 packagename=linux-$version
19 if [ "$ARCH" == "um" ] ; then
20 packagename=user-mode-linux-$version
23 # Setup the directory structure
25 mkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot"
26 if [ "$ARCH" == "um" ] ; then
27 mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/share/doc/$packagename" "$tmpdir/usr/bin"
30 # Build and install the kernel
31 if [ "$ARCH" == "um" ] ; then
33 cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
34 cp .config "$tmpdir/usr/share/doc/$packagename/config"
35 gzip "$tmpdir/usr/share/doc/$packagename/config"
36 cp $KBUILD_IMAGE "$tmpdir/usr/bin/linux-$version"
38 cp System.map "$tmpdir/boot/System.map-$version"
39 cp .config "$tmpdir/boot/config-$version"
40 cp $KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version"
43 if grep -q '^CONFIG_MODULES=y' .config ; then
44 INSTALL_MOD_PATH="$tmpdir" make KBUILD_SRC= modules_install
45 if [ "$ARCH" == "um" ] ; then
46 mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
47 rmdir "$tmpdir/lib/modules/$version"
51 # Install the maintainer scripts
52 for script in postinst postrm preinst prerm ; do
53 mkdir -p "$tmpdir/etc/kernel/$script.d"
54 cat <<EOF > "$tmpdir/DEBIAN/$script"
59 test -d /etc/kernel/$script.d && run-parts --arg="$version" /etc/kernel/$script.d
62 chmod 755 "$tmpdir/DEBIAN/$script"
65 name="Kernel Compiler <$(id -nu)@$(hostname -f)>"
66 # Generate a simple changelog template
67 cat <<EOF > debian/changelog
68 linux ($version) unstable; urgency=low
75 # Generate a control file
76 if [ "$ARCH" == "um" ]; then
78 cat <<EOF > debian/control
83 Standards-Version: 3.6.1
86 Provides: kernel-image-$version, linux-image-$version
88 Description: User Mode Linux kernel, version $version
89 User-mode Linux is a port of the Linux kernel to its own system call
90 interface. It provides a kind of virtual machine, which runs Linux
91 as a user process under another Linux kernel. This is useful for
92 kernel development, sandboxes, jails, experimentation, and
95 This package contains the Linux kernel, modules and corresponding other
96 files version $version
100 cat <<EOF > debian/control
105 Standards-Version: 3.6.1
107 Package: $packagename
108 Provides: kernel-image-$version, linux-image-$version
110 Description: Linux kernel, version $version
111 This package contains the Linux kernel, modules and corresponding other
112 files version $version
116 # Fix some ownership and permissions
117 chown -R root:root "$tmpdir"
118 chmod -R go-w "$tmpdir"
120 # Perform the final magic
122 dpkg --build "$tmpdir" ..