[linux] Met bash parameter functie aanroepen

Frans van Berckel fberckel op xs4all.nl
Ma Dec 18 19:50:54 CET 2017


On Sun, 2017-12-17 at 19:31 +0100, Frans van Berckel wrote:

> Soms kan een idee, om één en ander op te delen in functies, ook
> gewoon best in schoonheid sterven. Dat het een oplossing onnodig
> ingewikkeld maakt. Dat je zoiets als # cd meermaals gaat aanroepen.
> En het zelfde geldt eigenlijk voor # apt-get. En nog een paar.
> 
> Ik ben er gewoon nog niet helemaal uit. Weet je wat, ik slaap er nog
> een nachtje over.
> 
> De source van het bash script zit in de bijlage.

Helemaal van functies afgestapt. Ik dacht, het is beter om te
achterhalen, welke stap je kan overslaan.

Er moet iets afhandeling van foutmelding in. Weet nog niet helemaal hoe
dat moet doen? Zie de bijlage voor de script versie van vandaag.

Met vriendelijke groet,


Frans van Berckel
------------- volgend deel ------------
#
##!/bin/bash
#

#
## Building an oldstable Debian kernel packages,
## which is no longer available in unstable
#
## Copyright (c) $year Frans van Berckel
#

major=3.16
minor=3.16.51-3
arch=$(uname -i)
workdir='/usr/src'
url='https://deb.debian.org/debian/pool/main/l/linux'
package='linux-source-${major}_${minor}_all.deb'
tarball='linux-source-${major}.tar.bz2'
linuxdir='${workdir}/linux-source-${major}'
config='${linuxdir}/linux-config-${major}/config.${arch}_none_${arch}.xz'

if [ "$(id -u)" -ne 0 ]; then
        echo 'This script must be run as root' >&2
        exit 1
fi

for apps in dpkg apt-get
do
  if ! [ -x "$(command -v ${apps})" ]; then
    echo -e "Error: Are you\nrunning a ${oneofthem} based distribution?">&2
    exit 1
  fi
done

## Check for all necessary build dependencies
for apps in make-kpkg wget tar
do
  if ! [ -x "$(command -v ${apps})" ]; then
    apt-get update
    apt-get --yes --force-yes --no-install-recommends install kernel-package wget tar
  fi
  if [[ $? > 0 ]]
  then
    # The command failed, exiting.
    exit 1
  else
    # The command ran succesfuly, continuing with script.
  fi
done

## Download the oldstable kernel package and install
if [ ! -d "${workdir}" ]; then
  mkdir -p ${workdir}
fi
cd ${workdir}
if [ ! -f "${package}" ]; then
  wget -c ${url}/${package}
  dpkg -i ${package}
fi
if [ ! -d "${linuxdir}" ]; then
  if [ -f "${tarball}" ]; then
    tar xjvf ${tarball}
  fi
fi
## Generate config with default from the ARCH supplied defconfig file
cd ${linuxdir}
if [ ! -f "./.config" ]; then
  if [ -f "${config}" ]; then
    xzcat ${config} ../linux-config-${major/config.${arch}_none_${arch}.xz >> ./.config
  fi
fi
make ARCH=${arch} defconfig

## Building the kernel packages
make-kpkg clean
make-kpkg --rootcmd fakeroot --jobs $(`nproc`) --initrd kernel_image kernel_headers

cd ${workdir}
ls -l *.deb

##Installing the new kernel
#cd ${workdir}
#Check first file names before running dpkg
#dpkg -i linux-image-${major}_${minor}_${arch}.deb
#dpkg -i linux-headers-${major}_${minor}_${arch}.deb


Meer informatie over de Linux maillijst