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
87 Description: User Mode Linux kernel, version $version
88 User-mode Linux is a port of the Linux kernel to its own system call
89 interface. It provides a kind of virtual machine, which runs Linux
90 as a user process under another Linux kernel. This is useful for
91 kernel development, sandboxes, jails, experimentation, and
94 This package contains the Linux kernel, modules and corresponding other
95 files version $version
99 cat <<EOF > debian/control
104 Standards-Version: 3.6.1
106 Package: $packagename
108 Description: Linux kernel, version $version
109 This package contains the Linux kernel, modules and corresponding other
110 files version $version
114 # Fix some ownership and permissions
115 chown -R root:root "$tmpdir"
116 chmod -R go-w "$tmpdir"
118 # Perform the final magic
120 dpkg --build "$tmpdir" ..