From: Alexey Tourbin <at@altlinux.ru>
To: Anton Farygin <rider@altlinux.com>
Cc: ALT Linux kernel packages development <devel-kernel@altlinux.ru>
Subject: [d-kernel] Re: new bootloader-utils
Date: Tue, 25 May 2004 21:49:18 +0400
Message-ID: <20040525174918.GA18782@solemn.turbinal.org> (raw)
In-Reply-To: <40B158E1.6060902@altlinux.com>
[-- Attachment #1.1: Type: text/plain, Size: 1106 bytes --]
On Mon, May 24, 2004 at 06:07:29AM +0400, Anton Farygin wrote:
> >1) смотрим realpath /boot/vmlinuz, выцепляем версию текущего (старого)
> >ядра;
> >2) делаем добавить_в_конфиги(старое_ядро) /* если его там ещё нет */;
> >3) делаем добавить_в_конфиги(новое_ядро);
> >4) делаем переставить_симлинки(новое_ядро).
> >
> >Тогда после первого по счету обновления ядра в меню появятся сразу две
> >новые записи (для старого и для нового ядра), а симлинки для дефолтной
> >записи будут смотреть на новое ядро.
>
> Да, добро.
Остается только одна проблема: если установить к-л ядро и тут же его
удалить, то повисшие симлинки всё равно останутся. Mike предлагает
сохранять предыдущие значения симлинков, но это опять же ничего не дает:
возможна такая комбинация установок/удалений, при которой все предыдущие
значения тоже будут смотреть вникуда.
Я уже начал было писать код типа:
OLD=`ls vmlinuz-*-* | sort -n | head -1`
if [ -e "$OLD" ]; then
...
Но опять же получается усложнение на ровном месте...
Короче, вот так вот никому ничего в глаза не бросается?
> Rgds,
> Rider
[-- Attachment #1.2: installkernel --]
[-- Type: text/plain, Size: 3365 bytes --]
#!/bin/sh
# $Id: installkernel,v 1.2 2004/05/07 17:16:41 at Exp $
#--------------------------------------------------------------------
# Copyright (C) 2000, 2002 by MandrakeSoft,
# Chmouel Boudjnah <chmouel@mandrakesoft.com>,
# Redistribution of this file is permitted under the terms of the GNU
# Public License (GPL)
#--------------------------------------------------------------------
# Copyright (C) 2003, 2004 by ALT Linux Team,
# Alexey Tourbin <at@altlinux.org>.
#--------------------------------------------------------------------
# description: Install a kernel to /boot and add an entry for grub and lilo
: ${INSTALLKERNEL_CONFIG:=/etc/sysconfig/installkernel}
if [ -f "$INSTALLKERNEL_CONFIG" ]; then
. "$INSTALLKERNEL_CONFIG"
fi
if [ -n "$DURING_INSTALL" ]; then
echo "$0: DURING_INSTALL=$DURING_INSTALL; supposed to run later" 1>&2
exit 0
fi
usage()
{
cat <<EOF >&2
Usage: $0 [options] KERNEL_VERSION
-n, --nolaunch don't launch lilo;
-R, --remove remove bootloader entry and prepare to remove kernel;
-m, --memtest it's all about memtest86, not Linux kernel;
-h, --help this help.
EOF
[ -n "$1" ] && exit "$1" || exit 2
}
LEGACY=algyNdsSCiLc
ARGV=`getopt -n "$0" -o nRmh$LEGACY -l nolaunch,remove,memtest,help -- "$@"` || usage
eval set -- "$ARGV"
while :; do
case "$1" in
-n|--nolaunch) NOLAUNCH=$1; shift
;;
-R|--remove) REMOVE=$1; shift
;;
-m|--memtest) MEMTEST=$1; shift
;;
-h|--help) shift; usage 0
;;
--) shift; break
;;
-[$LEGACY]) echo "$0: legacy option $1 ignored" >&2
;;
*) echo "$0: unrecognized option: $1" >&2; exit 1
;;
esac
done
VERSION="$1"
: ${BOOTDIR:=/boot}
if OLD_KERNEL=`realpath "$BOOTDIR/vmlinuz" 2>/dev/null`; then
OLD_VERSION="${OLD_KERNEL##*/vmlinuz-}"
fi
cd "$BOOTDIR"
if [ -z "$REMOVE" -a -z "$MEMTEST" ]; then
ln -snf "vmlinuz-$VERSION" vmlinuz
ln -snf "initrd-$VERSION.img" initrd.img
if [ -z "${VERSION##*-up-*}" ]; then
ln -snf "vmlinuz-$VERSION" vmlinuz-up
ln -snf "initrd-$VERSION.img" initrd-up.img
fi
if [ -z "${VERSION##*-smp-*}" ]; then
ln -snf "vmlinuz-$VERSION" vmlinuz-smp
ln -snf "initrd-$VERSION.img" initrd-smp.img
fi
elif [ -z "$MEMTEST" ]; then
rm -f "initrd-$VERSION.img"
fi
cd -
: ${LILO_CONF:=/etc/lilo.conf}
: ${GRUB_MENU_LST:=$BOOTDIR/grub/menu.lst}
: ${GRUB_DEVICE_MAP:=$BOOTDIR/grub/device.map}
: ${PERL:=/usr/bin/perl}
: ${LILO:=/sbin/lilo}
: ${DETECTLOADER:=/usr/sbin/detectloader}
: ${MKINITRD:=/sbin/mkinitrd}
# make initrd
"$MKINITRD" -f --ifneeded "$BOOTDIR/initrd-$VERSION.img" "$VERSION"
# check perl
if [ ! -x "$PERL" ]; then
echo "$0: warning: $PERL not available; supposed to run manually..."
PERL="echo $PERL"
fi
# modify lilo config
if [ -f "$LILO_CONF" -a -x "$sharfile/lilo" ]; then
if [ -z "$REMOVE" -a -z "$MEMTEST" -a -n "$OLD_VERSION" ]; then
"$PERL" "$sharfile/lilo" "$OLD_VERSION"
fi
"$PERL" "$sharfile/lilo" $MEMTEST $REMOVE "$VERSION"
fi
# modify grub config
if [ -f "$GRUB_MENU_LST" -a -f "$GRUB_DEVICE_MAP" -a -x "$sharfile/grub" ]; then
if [ -z "$REMOVE" -a -z "$MEMTEST" -a -n "$OLD_VERSION" ]; then
"$PERL" "$sharfile/grub" "$OLD_VERSION"
fi
"$PERL" "$sharfile/grub" $MEMTEST $REMOVE "$VERSION"
fi
# launch lilo
if [ -z "$LOADER" -a -x "$DETECTLOADER" ]; then
LOADER=`$PERL $DETECTLOADER -q`
fi
if [ "$LOADER" = LILO -a -z "$NOLAUNCH" ]; then
"$LILO" >/dev/null ||:
fi
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2004-05-25 17:49 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-05-22 14:36 [d-kernel] " Alexey Tourbin
2004-05-24 4:46 ` iLya Bryzgalow
2004-05-24 0:44 ` Anton Farygin
2004-05-25 13:18 ` [d-kernel] " Alexey Tourbin
2004-05-24 1:29 ` Anton Farygin
2004-05-25 14:09 ` Alexey Tourbin
2004-05-24 2:07 ` Anton Farygin
2004-05-25 17:49 ` Alexey Tourbin [this message]
2004-05-26 7:12 ` Denis Ovsienko
2004-05-26 8:46 ` Anton Farygin
2004-05-26 9:06 ` Alexey Tourbin
2004-05-26 9:46 ` Sergey Vlasov
2004-05-31 11:36 ` Alexey Tourbin
2004-05-31 14:00 ` Anton Farygin
2004-05-31 14:19 ` Alexey Tourbin
2004-05-31 14:38 ` Sergey Vlasov
2004-05-31 14:46 ` Sergey Vlasov
2004-06-11 14:41 ` Alexey Tourbin
2004-06-16 7:10 ` Denis Ovsienko
2004-05-27 8:55 ` Michael Shigorin
2004-05-25 15:18 ` Alexey Tourbin
2004-05-26 5:45 ` K.D.V.
2004-05-24 6:12 ` [d-kernel] " Александр Новосёлов
2004-05-24 6:32 ` Ivan Fedorov
2004-05-24 6:37 ` Genix
2004-05-24 6:41 ` Ivan Fedorov
2004-05-24 7:32 ` Александр Новосёлов
2004-05-24 7:36 ` Michael Shigorin
2004-05-24 7:35 ` Michael Shigorin
2004-05-24 7:32 ` Michael Shigorin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040525174918.GA18782@solemn.turbinal.org \
--to=at@altlinux.ru \
--cc=devel-kernel@altlinux.ru \
--cc=rider@altlinux.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux kernel packages development
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel-kernel/0 devel-kernel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel-kernel devel-kernel/ http://lore.altlinux.org/devel-kernel \
devel-kernel@altlinux.org devel-kernel@altlinux.ru devel-kernel@altlinux.com
public-inbox-index devel-kernel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel-kernel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git