cookutils annotate cooklinux @ rev 971
lighttpd/index.cgi: display <Recook> button for un-cooked packages too.
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Fri Sep 29 01:39:37 2017 +0300 (2017-09-29) |
parents | 9611369825b9 |
children |
rev | line source |
---|---|
pankso@633 | 1 #!/bin/sh |
pankso@633 | 2 # |
pankso@633 | 3 # Simple utility to compile from scratch a custom Linux kernel on SliTaz. |
paul@638 | 4 # No patches, aufs and co, keep it simple. The goal is to let users build |
pankso@633 | 5 # a custom and optimized kernel in a few commands |
pankso@633 | 6 # |
pankso@888 | 7 # Copyright (C) 2014-17 SliTaz GNU/Linux - BSD License |
pankso@633 | 8 # |
pankso@633 | 9 # Author: Christophe Lincoln <pankso@slitaz.org> |
pankso@633 | 10 # |
al@728 | 11 |
pankso@633 | 12 . /lib/libtaz.sh |
pankso@633 | 13 . /etc/slitaz/slitaz.conf |
pankso@633 | 14 |
pankso@633 | 15 version="$1" |
al@728 | 16 cookdir='/home/slitaz/src' |
al@728 | 17 srcurl='https://www.kernel.org/pub/linux/kernel' |
pankso@633 | 18 |
pankso@633 | 19 check_root |
pankso@633 | 20 |
al@728 | 21 |
pankso@633 | 22 # Help and usage |
al@728 | 23 |
pankso@633 | 24 usage() { |
al@728 | 25 cat <<EOT |
pankso@633 | 26 |
pankso@633 | 27 SliTaz Linux Kernel cooker |
pankso@633 | 28 |
al@728 | 29 $(boldify 'Usage:') $(basename $0) [version] [--options] |
pankso@633 | 30 |
al@728 | 31 $(boldify 'Options:') |
paul@639 | 32 --clean Remove various generated files but keep the config |
paul@639 | 33 --mrproper Remove all generated files + config + backup files |
pankso@633 | 34 --defconfig New config with default from ARCH supplied defconfig |
pankso@633 | 35 --tazconfig New config using current SliTaz /proc/config.gz |
pankso@888 | 36 --allno New minimal config answering no to everything |
pankso@633 | 37 --localmod Update config removing all unloaded modules |
pankso@633 | 38 --config Update current config with a text based front-end |
pankso@633 | 39 --menuconfig Update current config with a menu based program |
pankso@633 | 40 --xconfig Update current config with a QT based front-end |
pankso@633 | 41 --gconfig Update current config with a GTK based front-end |
pankso@633 | 42 --bzImage Build the compressed kernel image |
pankso@633 | 43 --modules Build all kernel modules |
pankso@633 | 44 |
al@728 | 45 $(boldify 'Examples:') |
pankso@633 | 46 $(basename $0) 3.8.3 --defconfig --menuconfig --bzImage |
pankso@633 | 47 $(basename $0) 3.2.14 --tazconfig --bzImage --modules |
pankso@633 | 48 |
pankso@633 | 49 EOT |
pankso@633 | 50 } |
pankso@633 | 51 |
al@728 | 52 |
pankso@633 | 53 # Check and install a packages |
al@728 | 54 |
pankso@633 | 55 check_pkg() { |
pankso@633 | 56 if [ ! -f "$PKGS_DB/installed/$1/receipt" ]; then |
al@728 | 57 echo -n "Installing package:"; colorize 34 " $1" |
pankso@633 | 58 tazpkg -gi $1 2>/dev/null >/dev/null |
pankso@633 | 59 fi |
pankso@633 | 60 } |
pankso@633 | 61 |
al@728 | 62 |
pankso@633 | 63 # |
psychomaniak@826 | 64 # Commands/help - Support 4.x, 3.x, 2.6 and 2.4 kernels. |
pankso@633 | 65 # |
al@728 | 66 |
pankso@633 | 67 case "$1" in |
psychomaniak@826 | 68 4.*) wgeturl="${srcurl}/v4.x/" ;; |
al@728 | 69 3.*) wgeturl="${srcurl}/v3.0/" ;; |
pankso@633 | 70 2.6.*) wgeturl="${srcurl}/v2.6/" ;; |
pankso@633 | 71 2.4.*) wgeturl="${srcurl}/v2.4/" ;; |
pankso@633 | 72 -h|-u|help|usage|"") |
al@728 | 73 usage; exit 0 ;; |
pankso@633 | 74 esac |
pankso@633 | 75 |
al@728 | 76 |
pankso@633 | 77 # Sanity check |
al@728 | 78 if [ -z "$wgeturl" ]; then |
al@728 | 79 echo 'Unable to set download url'; |
al@728 | 80 exit 0 |
al@728 | 81 fi |
al@728 | 82 |
pankso@633 | 83 |
pankso@633 | 84 # |
pankso@633 | 85 # Build start |
pankso@633 | 86 # |
pankso@633 | 87 |
al@728 | 88 echo -n 'Building Linux kernel:'; colorize 32 " $version" |
al@728 | 89 echo -n 'Source directory:'; colorize 30 " $cookdir" |
pankso@633 | 90 |
pankso@633 | 91 # Install needed packages to compile. |
pankso@878 | 92 for pkg in slitaz-toolchain pkg-config perl xz lzma patch tar bc flex |
pankso@878 | 93 do |
pankso@888 | 94 check_pkg ${pkg} |
pankso@633 | 95 done |
pankso@633 | 96 |
pankso@633 | 97 # Get the source and extract tarball. |
pankso@633 | 98 mkdir -p $cookdir && cd $cookdir || exit 1 |
pankso@633 | 99 if [ ! -f "linux-$version.tar.xz" ]; then |
pankso@633 | 100 echo "Downloading Linux kernel source..." |
pankso@633 | 101 wget -c --no-check-certificate ${wgeturl}linux-$version.tar.xz |
pankso@633 | 102 fi |
pankso@633 | 103 if [ ! -d "linux-$version" ]; then |
pankso@633 | 104 echo "Extracting: linux-$version.tar.xz" |
al@728 | 105 unxz -c linux-$version.tar.xz | tar -xf - |
pankso@633 | 106 fi |
pankso@633 | 107 |
pankso@633 | 108 # Clean-up and get or update config |
pankso@633 | 109 cd linux-$version |
pankso@633 | 110 |
al@728 | 111 if [ -n "$clean" ]; then |
pankso@633 | 112 make clean |
pankso@633 | 113 rm -rf slitaz |
pankso@633 | 114 fi |
pankso@633 | 115 |
al@728 | 116 if [ -n "$mrproper" ]; then |
pankso@633 | 117 make mrproper |
pankso@633 | 118 rm -rf slitaz |
pankso@633 | 119 fi |
pankso@633 | 120 |
pankso@633 | 121 # Get SliTaz current config. |
al@728 | 122 if [ -n "$tazconfig" ]; then |
al@728 | 123 echo 'Using current SliTaz config: /proc/config.gz' |
pankso@633 | 124 zcat /proc/config.gz > .config |
pankso@633 | 125 yes '' | make oldconfig |
pankso@633 | 126 fi |
pankso@633 | 127 |
pankso@633 | 128 # Create a new default config. |
al@728 | 129 if [ -n "$defconfig" ]; then |
pankso@633 | 130 make defconfig |
pankso@633 | 131 fi |
pankso@633 | 132 |
pankso@888 | 133 # Create a minimal config file. |
pankso@888 | 134 if [ -n "$allno" ]; then |
pankso@888 | 135 make allnoconfig |
pankso@888 | 136 fi |
pankso@888 | 137 |
pankso@633 | 138 # Update config and wipe out unloaded modules. |
al@728 | 139 if [ -n "$localmod" ]; then |
pankso@633 | 140 make localmodconfig |
pankso@633 | 141 fi |
pankso@633 | 142 |
al@728 | 143 |
pankso@633 | 144 # |
pankso@633 | 145 # Configurators text/ncurses/Qt/GTK |
pankso@633 | 146 # |
pankso@633 | 147 |
al@728 | 148 if [ -n "$config" ]; then |
al@728 | 149 echo 'Starting Text mode configuration tool...' |
pankso@633 | 150 make config |
pankso@633 | 151 fi |
pankso@633 | 152 |
al@728 | 153 if [ -n "$menuconfig" ]; then |
al@728 | 154 echo 'Starting Ncurses configuration tool...' |
pankso@633 | 155 check_pkg ncurses-dev |
pankso@633 | 156 make menuconfig |
pankso@633 | 157 fi |
pankso@633 | 158 |
al@728 | 159 if [ -n "$xconfig" ]; then |
al@728 | 160 echo 'Starting Qt configuration tool...' |
psychomaniak@826 | 161 check_pkg Qt4-dev |
pankso@633 | 162 make xconfig |
pankso@633 | 163 fi |
pankso@633 | 164 |
al@728 | 165 if [ -n "$gconfig" ]; then |
al@728 | 166 echo 'Starting GTK+ configuration tool...' |
pankso@633 | 167 check_pkg gtk+-dev |
pankso@633 | 168 check_pkg libglade-dev |
pankso@633 | 169 make gconfig |
pankso@633 | 170 fi |
pankso@633 | 171 |
al@728 | 172 if [ -n "$bzImage" ]; then |
al@728 | 173 echo 'Building bzImage...' |
pankso@633 | 174 make bzImage || exit 1 |
pankso@633 | 175 mkdir -p slitaz/linux-custom-$version/fs/boot |
pankso@633 | 176 cp -f arch/x86/boot/bzImage \ |
pankso@633 | 177 slitaz/linux-custom-$version/fs/boot/vmlinuz-$version |
pankso@633 | 178 fi |
al@728 | 179 |
al@728 | 180 if [ -n "$modules" ]; then |
al@728 | 181 echo 'Building modules...' |
pankso@633 | 182 make modules || exit 1 |
pankso@633 | 183 make INSTALL_MOD_PATH=slitaz/linux-custom-$version/fs modules_install |
pankso@633 | 184 rm -f slitaz/linux-custom-$version/fs/lib/modules/$version/build |
pankso@633 | 185 rm -f slitaz/linux-custom-$version/fs/lib/modules/$version/source |
pankso@633 | 186 fi |
pankso@633 | 187 |
al@728 | 188 |
pankso@633 | 189 # |
pankso@633 | 190 # Packaging |
pankso@633 | 191 # |
pankso@633 | 192 |
pankso@633 | 193 if [ -d "slitaz/linux-custom-$version/fs" ]; then |
al@728 | 194 echo 'Packing Linux...' |
pankso@633 | 195 cd slitaz |
pankso@633 | 196 else |
al@728 | 197 echo -n 'Packing Linux:'; colorize 31 ' not yet built' |
pankso@633 | 198 exit 0 |
pankso@633 | 199 fi |
pankso@633 | 200 |
pankso@633 | 201 # Receipt. |
al@728 | 202 echo 'Creating the receipt...' |
al@728 | 203 cat > linux-custom-$version/receipt <<EOF |
pankso@633 | 204 # SliTaz package receipt. |
pankso@633 | 205 |
pankso@633 | 206 PACKAGE="linux-custom" |
pankso@633 | 207 VERSION="$version" |
pankso@633 | 208 CATEGORY="base-system" |
pankso@633 | 209 SHORT_DESC="The Linux kernel and modules." |
pankso@633 | 210 MAINTAINER="devel@slitaz.org" |
pankso@633 | 211 WEB_SITE="http://www.kernel.org/" |
pankso@633 | 212 |
pankso@633 | 213 DEPENDS="kmod" |
pankso@633 | 214 |
pankso@633 | 215 ## Pre and post install commands for Tazpkg. |
pankso@633 | 216 post_install() |
pankso@633 | 217 { |
pankso@633 | 218 echo "Processing post-install commands..." |
pankso@633 | 219 depmod -a \$VERSION-custom |
pankso@633 | 220 echo "Check your GRUB menu.lst to boot your new kernel" |
pankso@633 | 221 } |
pankso@633 | 222 |
pankso@633 | 223 EOF |
pankso@633 | 224 |
pankso@633 | 225 ## Pre and post install commands for Tazpkg/Spk. |
pankso@633 | 226 #post_install() |
pankso@633 | 227 #{ |
pankso@633 | 228 #echo "Processing post-install commands..." |
pankso@633 | 229 #chroot "\$1/" depmod -a \$VERSION |
pankso@633 | 230 ## GRUB stuff. |
pankso@633 | 231 #if [ -f "\$1/boot/grub/menu.lst" ]; then |
pankso@633 | 232 #root_dev=\$(cat $1/boot/grub/menu.lst | grep root= | sed 's/.*root=\([^ ]*\).*/\1/' | head -n 1) |
pankso@633 | 233 #grub_dev=\$(cat $1/boot/grub/menu.lst | grep "root (" | head -n 1) |
pankso@633 | 234 ## Add new kernel entry in case of upgrade for installed system. |
pankso@633 | 235 #if ! grep -q vmlinuz-\$VERSION \$1/boot/grub/menu.lst; then |
pankso@633 | 236 #cat >> \$1/boot/grub/menu.lst << EOT |
pankso@633 | 237 |
pankso@633 | 238 #title SliTaz GNU/Linux (Kernel \$VERSION) |
pankso@633 | 239 #\$grub_dev |
pankso@633 | 240 #kernel /boot/vmlinuz-\$VERSION root=\$root_dev |
pankso@633 | 241 #EOT |
pankso@633 | 242 #fi |
pankso@633 | 243 #} |
pankso@633 | 244 |
pankso@633 | 245 # Pack it. |
pankso@633 | 246 tazpkg pack linux-custom-$version |
pankso@633 | 247 |
pankso@633 | 248 # Install the new kernel. |
al@728 | 249 if [ -n "$install" ]; then |
pankso@633 | 250 cd $cookdir/linux-$version/slitaz |
pankso@633 | 251 tazpkg -i linux-custom-$version.tazpkg --forced |
pankso@633 | 252 fi |
pankso@633 | 253 |
pankso@633 | 254 exit 0 |