web-dev-qa-db-ja.com

カーネルの更新後にバーグを自動的に更新する方法

カーネルを更新するたびに、update-burgを手動で実行する必要があります。自動化するにはどうすればよいですか?

7
jumbli

別の方法は、/etc/kernel-img.confを編集することです

do_symlinks = yes
relative_links = yes
do_bootloader = no
do_bootfloppy = no
do_initrd = yes
link_in_boot = no
postinst_hook = update-burg
postrm_hook = update-burg

From: https://bugs.launchpad.net/burg/+bug/594431 (バグレポートはあなたの経験を反映しています)

これは同様に更新によって一掃できますが、/etc/にあるので、should(私は思う)更新がヒットします。

バグの人々が言うように、誰かがburgとgrubの両方を実行したり、少なくとも2つの同期を維持したりする可能性があるため、これはまだ理想的ではありません。

さらに進んで、次のような新しいスクリプトを作成することもできます。

#!/bin/sh
set -e
exec update-grub "$@"
exec update-burg "$@"

/usr/sbin/update-bootloaderschmod +xとして保存し、update-bootloadersまたは/etc/kernel-img.confの代わりにupdate-grubupdate-burgを貼り付けます。

長期的には、alternativesシステムは、Java、オーディオ、その他の交換可能なサブシステムに存在するさまざまなブートローダー用にセットアップする必要があると思います。

8
Oli

通常、update-grubが呼び出されます。これはただ起こることです。システムはgrubがブートローダーであることを期待しています。あなたが二度とgrubを使用するつもりがないと仮定すると、これを行うことができます:

cd /usr/sbin/
Sudo mv update-grub update-grub.backup
Sudo ln -s update-burg update-grub

これにより、update-grubが外れ、実際にupdate-burgを実行する場所にシンボリックリンクが作成されます。そのため、新しいカーネルをインストールすると、update-grubが呼び出されますが、これは実際にはupdate-burgです。

ハッキーですが、動作するはずです。

逆にするには:

cd /usr/sbin/
Sudo rm update-grub # this is only a symlink
Sudo mv update-grub.backup update-grub
3
Oli

ありがとう!

ここで提供される最も役立つ/最も評価の高い情報に基づいてスクリプトを作成しました。微妙な変更の1つは、ブートローダーの実行可能ファイルが実行されなくなることです(grubの場合のように終了します。したがって、スクリプトが終了し、他のローダーが実行されません(@ Ubuntu11))。

このスクリプトは、複数のブートローダー用に設定できます..(実行可能ファイルがupdate-nameおよび/usr/sbin;-の場合).

update-name以外の実行可能ファイルを更新できるように拡張できます。これを行うには、ブートローダーの設定変数の値としてname:execを使用し、varを分割し、それに応じて実行コマンドを変更します(これを行うには、おそらく別の言語を使用する必要があります)。

#!/bin/sh
# #################################################################
#
# Updates (multiple) bootloaders after kernel update.
#
# @Shell bash
# @see http://askubuntu.com/questions/4905/how-to-automatically-update-burg-after-a-kernel-update
#
# #################################################################
#
# Install:
#
# -----------------------------------------------------------------
# * Save as:   /usr/sbin/update-bootloaders
# * Then:      chmod +x /usr/sbin/update-bootloaders
# * Edit /etc/kernel-img.conf and append/replace the following parameters:
# ** postinst_hook = update-bootloaders
# ** postrm_hook = update-bootloaders
#
# #################################################################
#
# Configuration:
#
# -----------------------------------------------------------------
# BOOTLOADERS: configuration variable to list bootloaders
BOOTLOADERS="grub burg"
#
# #################################################################
set -e
for BOOTLOADER in ${BOOTLOADERS}; do
    EXEC="/usr/sbin/update-${BOOTLOADER}"
    if [ -x ${EXEC} ]; then
        echo "Updating ${BOOTLOADER}..."
        ${EXEC} "$@"
    fi
done
# eof
1
Thf

Sudo apt-get upgradeを実行してパッケージとカーネルを更新する習慣がある場合、次のスクリプトは問題を解決し、更新に対して100%回復力があります。

#!/bin/bash
# Check what kernels are installed.
KERLST=`ls /boot | grep vmlinu`

# Do updates.
Sudo apt-get -y update
Sudo apt-get -y upgrade
Sudo apt-get -y dist-upgrade

# Update burg if kernels changed. 
if [ "$KERLST" != "`ls /boot | grep vmlinu`" ]; then
    Sudo update-burg
fi

保存はテキストファイルとしてapgrade.shで実行可能としてマークします。このスクリプトは、可能なすべての更新を実行し、カーネルリストが変更されたかどうかを確認し、変更された場合に更新を行います。私は10.04(エイリアスにバインドされている)以来それを使用してきましたが、これまでに更新されたものはありません。

ただし、シナプスを介して手動で更新を行う場合は、Oliの方法の方が適している可能性があります。

1
Malabarba