1*1da177e4SLinus Torvalds#!/bin/sh 2*1da177e4SLinus Torvalds# 3*1da177e4SLinus Torvalds# builddeb 1.2 4*1da177e4SLinus Torvalds# Copyright 2003 Wichert Akkerman <wichert@wiggy.net> 5*1da177e4SLinus Torvalds# 6*1da177e4SLinus Torvalds# Simple script to generate a deb package for a Linux kernel. All the 7*1da177e4SLinus Torvalds# complexity of what to do with a kernel after it is installer or removed 8*1da177e4SLinus Torvalds# is left to other scripts and packages: they can install scripts in the 9*1da177e4SLinus Torvalds# /etc/kernel/{pre,post}{inst,rm}.d/ directories that will be called on 10*1da177e4SLinus Torvalds# package install and removal. 11*1da177e4SLinus Torvalds 12*1da177e4SLinus Torvaldsset -e 13*1da177e4SLinus Torvalds 14*1da177e4SLinus Torvalds# Some variables and settings used throughout the script 15*1da177e4SLinus Torvaldsversion=$KERNELRELEASE 16*1da177e4SLinus Torvaldstmpdir="$objtree/debian/tmp" 17*1da177e4SLinus Torvalds 18*1da177e4SLinus Torvalds# Setup the directory structure 19*1da177e4SLinus Torvaldsrm -rf "$tmpdir" 20*1da177e4SLinus Torvaldsmkdir -p "$tmpdir/DEBIAN" "$tmpdir/lib" "$tmpdir/boot" 21*1da177e4SLinus Torvalds 22*1da177e4SLinus Torvalds# Build and install the kernel 23*1da177e4SLinus Torvaldscp System.map "$tmpdir/boot/System.map-$version" 24*1da177e4SLinus Torvaldscp .config "$tmpdir/boot/config-$version" 25*1da177e4SLinus Torvaldscp $KBUILD_IMAGE "$tmpdir/boot/vmlinuz-$version" 26*1da177e4SLinus Torvalds 27*1da177e4SLinus Torvaldsif grep -q '^CONFIG_MODULES=y' .config ; then 28*1da177e4SLinus Torvalds INSTALL_MOD_PATH="$tmpdir" make modules_install 29*1da177e4SLinus Torvaldsfi 30*1da177e4SLinus Torvalds 31*1da177e4SLinus Torvalds# Install the maintainer scripts 32*1da177e4SLinus Torvaldsfor script in postinst postrm preinst prerm ; do 33*1da177e4SLinus Torvalds mkdir -p "$tmpdir/etc/kernel/$script.d" 34*1da177e4SLinus Torvalds cat <<EOF > "$tmpdir/DEBIAN/$script" 35*1da177e4SLinus Torvalds#!/bin/sh 36*1da177e4SLinus Torvalds 37*1da177e4SLinus Torvaldsset -e 38*1da177e4SLinus Torvalds 39*1da177e4SLinus Torvaldstest -d /etc/kernel/$script.d && run-parts --arg="$version" /etc/kernel/$script.d 40*1da177e4SLinus Torvaldsexit 0 41*1da177e4SLinus TorvaldsEOF 42*1da177e4SLinus Torvalds chmod 755 "$tmpdir/DEBIAN/$script" 43*1da177e4SLinus Torvaldsdone 44*1da177e4SLinus Torvalds 45*1da177e4SLinus Torvaldsname="Kernel Compiler <$(id -nu)@$(hostname -f)>" 46*1da177e4SLinus Torvalds# Generate a simple changelog template 47*1da177e4SLinus Torvaldscat <<EOF > debian/changelog 48*1da177e4SLinus Torvaldslinux ($version) unstable; urgency=low 49*1da177e4SLinus Torvalds 50*1da177e4SLinus Torvalds * A standard release 51*1da177e4SLinus Torvalds 52*1da177e4SLinus Torvalds -- $name $(date -R) 53*1da177e4SLinus TorvaldsEOF 54*1da177e4SLinus Torvalds 55*1da177e4SLinus Torvalds# Generate a control file 56*1da177e4SLinus Torvaldscat <<EOF > debian/control 57*1da177e4SLinus TorvaldsSource: linux 58*1da177e4SLinus TorvaldsSection: base 59*1da177e4SLinus TorvaldsPriority: optional 60*1da177e4SLinus TorvaldsMaintainer: $name 61*1da177e4SLinus TorvaldsStandards-Version: 3.6.1 62*1da177e4SLinus Torvalds 63*1da177e4SLinus TorvaldsPackage: linux-$version 64*1da177e4SLinus TorvaldsArchitecture: any 65*1da177e4SLinus TorvaldsDescription: Linux kernel, version $version 66*1da177e4SLinus Torvalds This package contains the Linux kernel, modules and corresponding other 67*1da177e4SLinus Torvalds files version $version. 68*1da177e4SLinus TorvaldsEOF 69*1da177e4SLinus Torvalds 70*1da177e4SLinus Torvalds# Fix some ownership and permissions 71*1da177e4SLinus Torvaldschown -R root:root "$tmpdir" 72*1da177e4SLinus Torvaldschmod -R go-w "$tmpdir" 73*1da177e4SLinus Torvalds 74*1da177e4SLinus Torvalds# Perform the final magic 75*1da177e4SLinus Torvaldsdpkg-gencontrol -isp 76*1da177e4SLinus Torvaldsdpkg --build "$tmpdir" .. 77*1da177e4SLinus Torvalds 78*1da177e4SLinus Torvaldsexit 0 79*1da177e4SLinus Torvalds 80