Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | #!/bin/sh # # builddeb 1.2 # Copyright 2003 Wichert Akkerman <wichert@wiggy.net> # # Simple script to generate a deb package for a Linux kernel. All the # complexity of what to do with a kernel after it is installer or removed # is left to other scripts and packages: they can install scripts in the # /etc/kernel/{pre,post}{inst,rm}.d/ directories that will be called on # package install and removal. set -e # Some variables and settings used throughout the script version=$KERNELRELEASE revision=`cat .version` tmpdir="$objtree/debian/tmp" fwdir="$objtree/debian/fwtmp" packagename=linux-$version fwpackagename=linux-firmware-image if [ "$ARCH" == "um" ] ; then packagename=user-mode-linux-$version fi # Setup the directory structure rm -rf "$tmpdir" "$fwdir" mkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot" mkdir -p "$fwdir/DEBIAN" "$fwdir/lib" if [ "$ARCH" == "um" ] ; then mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/share/doc/$packagename" "$tmpdir/usr/bin" fi # Build and install the kernel if [ "$ARCH" == "um" ] ; then $MAKE linux cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map" cp .config "$tmpdir/usr/share/doc/$packagename/config" gzip "$tmpdir/usr/share/doc/$packagename/config" cp $KBUILD_IMAGE "$tmpdir/usr/bin/linux-$version" else cp System.map "$tmpdir/boot/System.map-$version" cp .config "$tmpdir/boot/config-$version" cp $KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version" fi if grep -q '^CONFIG_MODULES=y' .config ; then INSTALL_MOD_PATH="$tmpdir" make KBUILD_SRC= modules_install if [ "$ARCH" == "um" ] ; then mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/" rmdir "$tmpdir/lib/modules/$version" fi fi # Install the maintainer scripts for script in postinst postrm preinst prerm ; do mkdir -p "$tmpdir/etc/kernel/$script.d" cat <<EOF > "$tmpdir/DEBIAN/$script" #!/bin/sh set -e test -d /etc/kernel/$script.d && run-parts --arg="$version" /etc/kernel/$script.d exit 0 EOF chmod 755 "$tmpdir/DEBIAN/$script" done name="Kernel Compiler <$(id -nu)@$(hostname -f)>" # Generate a simple changelog template cat <<EOF > debian/changelog linux ($version-$revision) unstable; urgency=low * A standard release -- $name $(date -R) EOF # Generate a control file if [ "$ARCH" == "um" ]; then cat <<EOF > debian/control Source: linux Section: base Priority: optional Maintainer: $name Standards-Version: 3.6.1 Package: $packagename Provides: kernel-image-$version, linux-image-$version Architecture: any Description: User Mode Linux kernel, version $version User-mode Linux is a port of the Linux kernel to its own system call interface. It provides a kind of virtual machine, which runs Linux as a user process under another Linux kernel. This is useful for kernel development, sandboxes, jails, experimentation, and many other things. . This package contains the Linux kernel, modules and corresponding other files version $version EOF else cat <<EOF > debian/control Source: linux Section: base Priority: optional Maintainer: $name Standards-Version: 3.6.1 Package: $packagename Provides: kernel-image-$version, linux-image-$version Suggests: $fwpackagename Architecture: any Description: Linux kernel, version $version This package contains the Linux kernel, modules and corresponding other files version $version EOF fi # Fix some ownership and permissions chown -R root:root "$tmpdir" chmod -R go-w "$tmpdir" # Do we have firmware? Move it out of the way and build it into a package. if [ -e "$tmpdir/lib/firmware" ]; then mv "$tmpdir/lib/firmware" "$fwdir/lib/" cat <<EOF >> debian/control Package: $fwpackagename Architecture: all Description: Linux kernel firmware, version $version This package contains firmware from the Linux kernel, version $version EOF dpkg-gencontrol -isp -p$fwpackagename -P"$fwdir" dpkg --build "$fwdir" .. fi # Perform the final magic dpkg-gencontrol -isp -p$packagename dpkg --build "$tmpdir" .. exit 0 |