Как автоматически обновлять burg после обновления ядра

Конкретные ответы очень хорошие.

В общем, если вы хотите, чтобы некоторые вещи определялись / устанавливались в оболочке, просто напишите сценарий, чтобы сделать это, а затем выполните его с помощью source или ., когда вы хотите, чтобы эта настройка действовала.

Если это то, что вы хотите все время, вы можете указать его в .profile (для систем входа) или в .bashrc для всех оболочек (если вы используете bash).

При таком подходе вы можете иметь несколько сценариев для настройки различных рабочих сред по мере необходимости, если вы убедитесь, что они не наступают друг на друга, если вы вызываете один из них после первого вызова.

7
задан 21 October 2010 в 19:01

25 ответов

Если у вас есть привычка делать 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 и пометить его как исполняемый файл. Этот скрипт будет выполнять все возможные обновления, проверять, изменился ли список ядра, и обновить burg, если он это сделал. Я использую его с 10.04 (привязанный к псевдониму), и никакие обновления не прервали его до сих пор.

Если, однако, вам нравится делать ваши обновления вручную через синаптику, тогда метод Оли может быть лучше ,

1
ответ дан 25 July 2018 в 23:09
  • 1
    Вы можете связать его с псевдонимом, перейдя к вашим & quot; ~ / .bash_aliases & quot; файл и добавление строки «alias apgrade = '~ / apgrade.sh» & quot; (без двойных кавычек). Изменение вступит в силу после открытия нового терминала. Я нашел, что это идеальный метод для обновления, поскольку все, что требуется, - это четыре нажатия клавиш в любом терминале (ap & lt; TAB & gt; & lt; ENTER & gt;), а остальное - автоматически. – Malabarba 21 October 2010 в 18:35
  • 2
    Вы можете просто вставить его в ~/bin (и избавиться от расширения .sh), если вы хотите запустить его как aupgrade. – Oli♦ 21 October 2010 в 18:44
  • 3
    В самом деле. Я предпочитаю псевдонимы, потому что они легко переносятся на новые установки, копируя файл .bash_aliases. Но это все зависит от предпочтений. – Malabarba 21 October 2010 в 18:53

Обычно вызывается 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.

Hacky, но он должен работать.

Чтобы обратить вспять:

cd /usr/sbin/ sudo rm update-grub # this is only a symlink sudo mv update-grub.backup update-grub
3
ответ дан 25 July 2018 в 23:09
  • 1
    Вы уверены, что обновление или что-то не вызовет символическую ссылку? – jumbli 30 September 2010 в 08:18
  • 2
    Добавлено еще один ответ, который должен быть немного более устойчивым к обновлениям. Я оставлю это здесь как быстрая и грязная замена. – Oli♦ 30 September 2010 в 19:07
  • 3
    Я думаю, что ваш ответ лучше (короче), но я только сменил grub на burg ~ 1 год назад и не имею абсолютно никаких проблем. – Extender 30 September 2010 в 19:14
  • 4
    Я только что обновил (используя диспетчер обновлений) и burg (расположенный на MBR), был перезаписан grub во время обновления. Мне пришлось переустановить машину. После этого опыта я решил полностью удалить grub (надеюсь, что для burg не существует зависимости grub). – jumbli 30 September 2010 в 20:04
[D0] Спасибо!

Я создал сценарий на основе наиболее полезной / наилучшей информации, представленной здесь. Одно из незначительных изменений заключается в том, что исполняемые файлы загрузчика больше не выполняются exec'd (как в случае с grub, который выйдет, поэтому сценарий завершается, а другие загрузчики не выполняются (@ Ubuntu11)).

сценарий может быть настроен для нескольких загрузчиков .. (если исполняемый файл update-name и /usr/sbin ;-).

Он может быть расширен, чтобы позволить исполняемым файлам обновления не update-name. Для этого, возможно, используйте name:exec в качестве значений в конфигурационной переменной boot-loaders и разделите 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
ответ дан 25 July 2018 в 23:09

Если у вас есть привычка делать 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 и пометить его как исполняемый файл. Этот скрипт будет выполнять все возможные обновления, проверять, изменился ли список ядра, и обновить burg, если он это сделал. Я использую его с 10.04 (привязанный к псевдониму), и никакие обновления не прервали его до сих пор.

Если, однако, вам нравится делать ваши обновления вручную через синаптику, тогда метод Оли может быть лучше ,

1
ответ дан 31 July 2018 в 12:10
  • 1
    Вы можете связать его с псевдонимом, перейдя к вашим & quot; ~ / .bash_aliases & quot; файл и добавление строки «alias apgrade = '~ / apgrade.sh» & quot; (без двойных кавычек). Изменение вступит в силу после открытия нового терминала. Я нашел, что это идеальный метод для обновления, поскольку все, что требуется, - это четыре нажатия клавиш в любом терминале (ap & lt; TAB & gt; & lt; ENTER & gt;), а остальное - автоматически. – Malabarba 21 October 2010 в 18:35
  • 2
    Вы можете просто вставить его в ~/bin (и избавиться от расширения .sh), если вы хотите запустить его как aupgrade. – Oli♦ 21 October 2010 в 18:44
  • 3
    В самом деле. Я предпочитаю псевдонимы, потому что они легко переносятся на новые установки, копируя файл .bash_aliases. Но это все зависит от предпочтений. – Malabarba 21 October 2010 в 18:53

Обычно вызывается 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.

Hacky, но он должен работать.

Чтобы обратить вспять:

cd /usr/sbin/ sudo rm update-grub # this is only a symlink sudo mv update-grub.backup update-grub
8
ответ дан 31 July 2018 в 12:10
  • 1
    Вы уверены, что обновление или что-то не вызовет символическую ссылку? – jumbli 30 September 2010 в 08:18
  • 2
    Добавлено еще один ответ, который должен быть немного более устойчивым к обновлениям. Я оставлю это здесь как быстрая и грязная замена. – Oli♦ 30 September 2010 в 19:07
  • 3
    Я думаю, что ваш ответ лучше (короче), но я только сменил grub на burg ~ 1 год назад и не имею абсолютно никаких проблем. – Extender 30 September 2010 в 19:14
  • 4
    Я только что обновил (используя диспетчер обновлений) и burg (расположенный на MBR), был перезаписан grub во время обновления. Мне пришлось переустановить машину. После этого опыта я решил полностью удалить grub (надеюсь, что для burg не существует зависимости grub). – jumbli 30 September 2010 в 20:04
[D0] Спасибо!

Я создал сценарий на основе наиболее полезной / наилучшей информации, представленной здесь. Одно из незначительных изменений заключается в том, что исполняемые файлы загрузчика больше не выполняются exec'd (как в случае с grub, который выйдет, поэтому сценарий завершается, а другие загрузчики не выполняются (@ Ubuntu11)).

сценарий может быть настроен для нескольких загрузчиков .. (если исполняемый файл update-name и /usr/sbin ;-).

Он может быть расширен, чтобы позволить исполняемым файлам обновления не update-name. Для этого, возможно, используйте name:exec в качестве значений в конфигурационной переменной boot-loaders и разделите 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
ответ дан 31 July 2018 в 12:10

Если у вас есть привычка делать sudo apt-get upgrade для обновления ваших пакетов и ядер, следующий скрипт решит вашу проблему и на 100% устойчив к обновлениям:

  ]  #! / bin / bash # Проверьте, какие ядра установлены.  KERLST = `ls / boot |  grep vmlinu` # Обновления.  sudo apt-get -y update sudo apt-get -y upgrade sudo apt-get -y dist-upgrade # Обновление burg, если ядра изменены.  если ["$ KERLST"! = "` ls / boot | grep vmlinu` "];  затем sudo update-burg fi  

Сохранить как текстовый файл apgrade.sh и пометить его как исполняемый файл. Этот скрипт будет выполнять все возможные обновления, проверять, изменился ли список ядра, и обновить burg, если он это сделал. Я использую его с 10.04 (привязанный к псевдониму), и никакие обновления не сломали его до сих пор.

Если, однако, вам нравится делать ваши обновления вручную через синаптические, тогда метод Оли может быть лучше ,

1
ответ дан 2 August 2018 в 04:29

Обычно вызывается 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 # это только символическая ссылка sudo mv update-grub.backup update-grub  [  ! d12]                   
8
ответ дан 2 August 2018 в 04:29
[D5] Спасибо!

Я создал сценарий на основе наиболее полезной / наилучшей информации, представленной здесь. Одно из тонких изменений заключается в том, что исполняемые файлы загрузчика больше не выполняются exec'd (как в случае с grub, который завершается, поэтому сценарий завершается, а другие загрузчики не выполняются (@ Ubuntu11)).

сценарий может быть настроен для нескольких загрузчиков .. (если исполняемый файл update-name и в / usr / sbin ;-).

Он может быть расширен, чтобы обновлять исполняемые файлы, которые не являются update-name . Для этого, возможно, используйте имя : exec как значения в переменной конфигурации boot-loaders и разделите var, а затем измените команду выполнения (возможно, для этого нужно будет использовать другой язык, чтобы это было элегантно).

  #! / bin / sh # ##################################  ################################# # # Обновления (несколько) загрузчиков после обновления ядра.  # # @shell bash # @see http://askubuntu.com/questions/4905/how-to-automatically-update-burg-after-a-kernel-update # # ###########  ##################################################  #### # # Установить: # # ----------------------------------------  ------------------------- # * Сохранить как: / usr / sbin / update-bootloaders # * Затем: chmod + x / usr / sbin /  update-bootloaders # * Измените /etc/kernel-img.conf и добавьте / замените следующие параметры: # ** postinst_hook = update-bootloaders # ** postrm_hook = update-bootloaders # # ##########  ##################################################  ##### # # Конфигурация: # # ---------------------------------------  -------------------------- # BOOTLOADERS: переменная конфигурации для списка загрузчиков BOOTLOADERS = "grub burg" # # ########  ##################################################  ####### set -e для BOOTLOADER в $ {BOOTLOADERS};  do EXEC = "/ usr / sbin / update - $ {BOOTLOADER}", если [-x $ {EXEC}];  затем echo "Обновление $ {BOOTLOADER} ..." $ {EXEC} "$ @" fi done # eof  
1
ответ дан 2 August 2018 в 04:29

Если у вас есть привычка делать sudo apt-get upgrade для обновления ваших пакетов и ядер, следующий скрипт решит вашу проблему и на 100% устойчив к обновлениям:

  ]  #! / bin / bash # Проверьте, какие ядра установлены.  KERLST = `ls / boot |  grep vmlinu` # Обновления.  sudo apt-get -y update sudo apt-get -y upgrade sudo apt-get -y dist-upgrade # Обновление burg, если ядра изменены.  если ["$ KERLST"! = "` ls / boot | grep vmlinu` "];  затем sudo update-burg fi  

Сохранить как текстовый файл apgrade.sh и пометить его как исполняемый файл. Этот скрипт будет выполнять все возможные обновления, проверять, изменился ли список ядра, и обновить burg, если он это сделал. Я использую его с 10.04 (привязанный к псевдониму), и никакие обновления не сломали его до сих пор.

Если, однако, вам нравится делать ваши обновления вручную через синаптические, тогда метод Оли может быть лучше ,

1
ответ дан 4 August 2018 в 21:02

Обычно вызывается 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 # это только символическая ссылка sudo mv update-grub.backup update-grub  [  ! d12]                   
8
ответ дан 4 August 2018 в 21:02
[D5] Спасибо!

Я создал сценарий на основе наиболее полезной / наилучшей информации, представленной здесь. Одно из тонких изменений заключается в том, что исполняемые файлы загрузчика больше не выполняются exec'd (как в случае с grub, который завершается, поэтому сценарий завершается, а другие загрузчики не выполняются (@ Ubuntu11)).

сценарий может быть настроен для нескольких загрузчиков .. (если исполняемый файл update-name и в / usr / sbin ;-).

Он может быть расширен, чтобы обновлять исполняемые файлы, которые не являются update-name . Для этого, возможно, используйте имя : exec как значения в переменной конфигурации boot-loaders и разделите var, а затем измените команду выполнения (возможно, для этого нужно будет использовать другой язык, чтобы это было элегантно).

  #! / bin / sh # ##################################  ################################# # # Обновления (несколько) загрузчиков после обновления ядра.  # # @shell bash # @see http://askubuntu.com/questions/4905/how-to-automatically-update-burg-after-a-kernel-update # # ###########  ##################################################  #### # # Установить: # # ----------------------------------------  ------------------------- # * Сохранить как: / usr / sbin / update-bootloaders # * Затем: chmod + x / usr / sbin /  update-bootloaders # * Измените /etc/kernel-img.conf и добавьте / замените следующие параметры: # ** postinst_hook = update-bootloaders # ** postrm_hook = update-bootloaders # # ##########  ##################################################  ##### # # Конфигурация: # # ---------------------------------------  -------------------------- # BOOTLOADERS: переменная конфигурации для списка загрузчиков BOOTLOADERS = "grub burg" # # ########  ##################################################  ####### set -e для BOOTLOADER в $ {BOOTLOADERS};  do EXEC = "/ usr / sbin / update - $ {BOOTLOADER}", если [-x $ {EXEC}];  затем echo "Обновление $ {BOOTLOADER} ..." $ {EXEC} "$ @" fi done # eof  
1
ответ дан 4 August 2018 в 21:02

Если у вас есть привычка делать sudo apt-get upgrade для обновления ваших пакетов и ядер, следующий скрипт решит вашу проблему и на 100% устойчив к обновлениям:

  ]  #! / bin / bash # Проверьте, какие ядра установлены.  KERLST = `ls / boot |  grep vmlinu` # Обновления.  sudo apt-get -y update sudo apt-get -y upgrade sudo apt-get -y dist-upgrade # Обновление burg, если ядра изменены.  если ["$ KERLST"! = "` ls / boot | grep vmlinu` "];  затем sudo update-burg fi  

Сохранить как текстовый файл apgrade.sh и пометить его как исполняемый файл. Этот скрипт будет выполнять все возможные обновления, проверять, изменился ли список ядра, и обновить burg, если он это сделал. Я использую его с 10.04 (привязанный к псевдониму), и никакие обновления не сломали его до сих пор.

Если, однако, вам нравится делать ваши обновления вручную через синаптические, тогда метод Оли может быть лучше ,

1
ответ дан 6 August 2018 в 04:34

Обычно вызывается 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 # это только символическая ссылка sudo mv update-grub.backup update-grub  [  ! d12]                   
8
ответ дан 6 August 2018 в 04:34
[D5] Спасибо!

Я создал сценарий на основе наиболее полезной / наилучшей информации, представленной здесь. Одно из тонких изменений заключается в том, что исполняемые файлы загрузчика больше не выполняются exec'd (как в случае с grub, который завершается, поэтому сценарий завершается, а другие загрузчики не выполняются (@ Ubuntu11)).

сценарий может быть настроен для нескольких загрузчиков .. (если исполняемый файл update-name и в / usr / sbin ;-).

Он может быть расширен, чтобы обновлять исполняемые файлы, которые не являются update-name . Для этого, возможно, используйте имя : exec как значения в переменной конфигурации boot-loaders и разделите var, а затем измените команду выполнения (возможно, для этого нужно будет использовать другой язык, чтобы это было элегантно).

  #! / bin / sh # ##################################  ################################# # # Обновления (несколько) загрузчиков после обновления ядра.  # # @shell bash # @see http://askubuntu.com/questions/4905/how-to-automatically-update-burg-after-a-kernel-update # # ###########  ##################################################  #### # # Установить: # # ----------------------------------------  ------------------------- # * Сохранить как: / usr / sbin / update-bootloaders # * Затем: chmod + x / usr / sbin /  update-bootloaders # * Измените /etc/kernel-img.conf и добавьте / замените следующие параметры: # ** postinst_hook = update-bootloaders # ** postrm_hook = update-bootloaders # # ##########  ##################################################  ##### # # Конфигурация: # # ---------------------------------------  -------------------------- # BOOTLOADERS: переменная конфигурации для списка загрузчиков BOOTLOADERS = "grub burg" # # ########  ##################################################  ####### set -e для BOOTLOADER в $ {BOOTLOADERS};  do EXEC = "/ usr / sbin / update - $ {BOOTLOADER}", если [-x $ {EXEC}];  затем echo "Обновление $ {BOOTLOADER} ..." $ {EXEC} "$ @" fi done # eof  
1
ответ дан 6 August 2018 в 04:34

Если у вас есть привычка делать sudo apt-get upgrade для обновления ваших пакетов и ядер, следующий скрипт решит вашу проблему и на 100% устойчив к обновлениям:

  ]  #! / bin / bash # Проверьте, какие ядра установлены.  KERLST = `ls / boot |  grep vmlinu` # Обновления.  sudo apt-get -y update sudo apt-get -y upgrade sudo apt-get -y dist-upgrade # Обновление burg, если ядра изменены.  если ["$ KERLST"! = "` ls / boot | grep vmlinu` "];  затем sudo update-burg fi  

Сохранить как текстовый файл apgrade.sh и пометить его как исполняемый файл. Этот скрипт будет выполнять все возможные обновления, проверять, изменился ли список ядра, и обновить burg, если он это сделал. Я использую его с 10.04 (привязанный к псевдониму), и никакие обновления не сломали его до сих пор.

Если, однако, вам нравится делать ваши обновления вручную через синаптические, тогда метод Оли может быть лучше ,

1
ответ дан 7 August 2018 в 22:43

Обычно вызывается 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 # это только символическая ссылка sudo mv update-grub.backup update-grub  [  ! d12]                   
8
ответ дан 7 August 2018 в 22:43
[D5] Спасибо!

Я создал сценарий на основе наиболее полезной / наилучшей информации, представленной здесь. Одно из тонких изменений заключается в том, что исполняемые файлы загрузчика больше не выполняются exec'd (как в случае с grub, который завершается, поэтому сценарий завершается, а другие загрузчики не выполняются (@ Ubuntu11)).

сценарий может быть настроен для нескольких загрузчиков .. (если исполняемый файл update-name и в / usr / sbin ;-).

Он может быть расширен, чтобы обновлять исполняемые файлы, которые не являются update-name . Для этого, возможно, используйте имя : exec как значения в переменной конфигурации boot-loaders и разделите var, а затем измените команду выполнения (возможно, для этого нужно будет использовать другой язык, чтобы это было элегантно).

  #! / bin / sh # ##################################  ################################# # # Обновления (несколько) загрузчиков после обновления ядра.  # # @shell bash # @see http://askubuntu.com/questions/4905/how-to-automatically-update-burg-after-a-kernel-update # # ###########  ##################################################  #### # # Установить: # # ----------------------------------------  ------------------------- # * Сохранить как: / usr / sbin / update-bootloaders # * Затем: chmod + x / usr / sbin /  update-bootloaders # * Измените /etc/kernel-img.conf и добавьте / замените следующие параметры: # ** postinst_hook = update-bootloaders # ** postrm_hook = update-bootloaders # # ##########  ##################################################  ##### # # Конфигурация: # # ---------------------------------------  -------------------------- # BOOTLOADERS: переменная конфигурации для списка загрузчиков BOOTLOADERS = "grub burg" # # ########  ##################################################  ####### set -e для BOOTLOADER в $ {BOOTLOADERS};  do EXEC = "/ usr / sbin / update - $ {BOOTLOADER}", если [-x $ {EXEC}];  затем echo "Обновление $ {BOOTLOADER} ..." $ {EXEC} "$ @" fi done # eof  
1
ответ дан 7 August 2018 в 22:43

Если у вас есть привычка делать sudo apt-get upgrade для обновления ваших пакетов и ядер, следующий скрипт решит вашу проблему и на 100% устойчив к обновлениям:

  ]  #! / bin / bash # Проверьте, какие ядра установлены.  KERLST = `ls / boot |  grep vmlinu` # Обновления.  sudo apt-get -y update sudo apt-get -y upgrade sudo apt-get -y dist-upgrade # Обновление burg, если ядра изменены.  если ["$ KERLST"! = "` ls / boot | grep vmlinu` "];  затем sudo update-burg fi  

Сохранить как текстовый файл apgrade.sh и пометить его как исполняемый файл. Этот скрипт будет выполнять все возможные обновления, проверять, изменился ли список ядра, и обновить burg, если он это сделал. Я использую его с 10.04 (привязанный к псевдониму), и никакие обновления не сломали его до сих пор.

Если, однако, вам нравится делать ваши обновления вручную через синаптические, тогда метод Оли может быть лучше ,

1
ответ дан 10 August 2018 в 10:49

Обычно вызывается 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 # это только символическая ссылка sudo mv update-grub.backup update-grub  [  ! d12]                   
8
ответ дан 10 August 2018 в 10:49
[D5] Спасибо!

Я создал сценарий на основе наиболее полезной / наилучшей информации, представленной здесь. Одно из тонких изменений заключается в том, что исполняемые файлы загрузчика больше не выполняются exec'd (как в случае с grub, который завершается, поэтому сценарий завершается, а другие загрузчики не выполняются (@ Ubuntu11)).

сценарий может быть настроен для нескольких загрузчиков .. (если исполняемый файл update-name и в / usr / sbin ;-).

Он может быть расширен, чтобы обновлять исполняемые файлы, которые не являются update-name . Для этого, возможно, используйте имя : exec как значения в переменной конфигурации boot-loaders и разделите var, а затем измените команду выполнения (возможно, для этого нужно будет использовать другой язык, чтобы это было элегантно).

  #! / bin / sh # ##################################  ################################# # # Обновления (несколько) загрузчиков после обновления ядра.  # # @shell bash # @see http://askubuntu.com/questions/4905/how-to-automatically-update-burg-after-a-kernel-update # # ###########  ##################################################  #### # # Установить: # # ----------------------------------------  ------------------------- # * Сохранить как: / usr / sbin / update-bootloaders # * Затем: chmod + x / usr / sbin /  update-bootloaders # * Измените /etc/kernel-img.conf и добавьте / замените следующие параметры: # ** postinst_hook = update-bootloaders # ** postrm_hook = update-bootloaders # # ##########  ##################################################  ##### # # Конфигурация: # # ---------------------------------------  -------------------------- # BOOTLOADERS: переменная конфигурации для списка загрузчиков BOOTLOADERS = "grub burg" # # ########  ##################################################  ####### set -e для BOOTLOADER в $ {BOOTLOADERS};  do EXEC = "/ usr / sbin / update - $ {BOOTLOADER}", если [-x $ {EXEC}];  затем echo "Обновление $ {BOOTLOADER} ..." $ {EXEC} "$ @" fi done # eof  
1
ответ дан 10 August 2018 в 10:49

Обычно вызывается 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 # это только символическая ссылка sudo mv update-grub.backup update-grub  [  ! d12]                   
8
ответ дан 13 August 2018 в 17:24
  • 1
    Вы уверены, что обновление или что-то не вызовет символическую ссылку? – jumbli 30 September 2010 в 08:18
  • 2
    Добавлено еще один ответ, который должен быть немного более устойчивым к обновлениям. Я оставлю это здесь как быстрая и грязная замена. – Oli♦ 30 September 2010 в 19:07
  • 3
    Я думаю, что ваш ответ лучше (короче), но я только сменил grub на burg ~ 1 год назад и не имею абсолютно никаких проблем. – Extender 30 September 2010 в 19:14
  • 4
    Я только что обновил (используя диспетчер обновлений) и burg (расположенный на MBR), был перезаписан grub во время обновления. Мне пришлось переустановить машину. После этого опыта я решил полностью удалить grub (надеюсь, что для burg не существует зависимости grub). – jumbli 30 September 2010 в 20:04
[D5] Спасибо!

Я создал сценарий на основе наиболее полезной / наилучшей информации, представленной здесь. Одно из тонких изменений заключается в том, что исполняемые файлы загрузчика больше не выполняются exec'd (как в случае с grub, который завершается, поэтому сценарий завершается, а другие загрузчики не выполняются (@ Ubuntu11)).

сценарий может быть настроен для нескольких загрузчиков .. (если исполняемый файл update-name и в / usr / sbin ;-).

Он может быть расширен, чтобы обновлять исполняемые файлы, которые не являются update-name . Для этого, возможно, используйте имя : exec как значения в переменной конфигурации boot-loaders и разделите var, а затем измените команду выполнения (возможно, для этого нужно будет использовать другой язык, чтобы это было элегантно).

  #! / bin / sh # ##################################  ################################# # # Обновления (несколько) загрузчиков после обновления ядра.  # # @shell bash # @see http://askubuntu.com/questions/4905/how-to-automatically-update-burg-after-a-kernel-update # # ###########  ##################################################  #### # # Установить: # # ----------------------------------------  ------------------------- # * Сохранить как: / usr / sbin / update-bootloaders # * Затем: chmod + x / usr / sbin /  update-bootloaders # * Измените /etc/kernel-img.conf и добавьте / замените следующие параметры: # ** postinst_hook = update-bootloaders # ** postrm_hook = update-bootloaders # # ##########  ##################################################  ##### # # Конфигурация: # # ---------------------------------------  -------------------------- # BOOTLOADERS: переменная конфигурации для списка загрузчиков BOOTLOADERS = "grub burg" # # ########  ##################################################  ####### set -e для BOOTLOADER в $ {BOOTLOADERS};  do EXEC = "/ usr / sbin / update - $ {BOOTLOADER}", если [-x $ {EXEC}];  затем echo "Обновление $ {BOOTLOADER} ..." $ {EXEC} "$ @" fi done # eof  
1
ответ дан 13 August 2018 в 17:24

Если у вас есть привычка делать sudo apt-get upgrade для обновления ваших пакетов и ядер, следующий скрипт решит вашу проблему и на 100% устойчив к обновлениям:

  ]  #! / bin / bash # Проверьте, какие ядра установлены.  KERLST = `ls / boot |  grep vmlinu` # Обновления.  sudo apt-get -y update sudo apt-get -y upgrade sudo apt-get -y dist-upgrade # Обновление burg, если ядра изменены.  если ["$ KERLST"! = "` ls / boot | grep vmlinu` "];  затем sudo update-burg fi  

Сохранить как текстовый файл apgrade.sh и пометить его как исполняемый файл. Этот скрипт будет выполнять все возможные обновления, проверять, изменился ли список ядра, и обновить burg, если он это сделал. Я использую его с 10.04 (привязанный к псевдониму), и никакие обновления не сломали его до сих пор.

Если, однако, вам нравится делать ваши обновления вручную через синаптические, тогда метод Оли может быть лучше ,

1
ответ дан 13 August 2018 в 17:24
  • 1
    Вы можете связать его с псевдонимом, перейдя к вашим & quot; ~ / .bash_aliases & quot; файл и добавление строки «alias apgrade = '~ / apgrade.sh» & quot; (без двойных кавычек). Изменение вступит в силу после открытия нового терминала. Я нашел, что это идеальный метод для обновления, поскольку все, что требуется, - это четыре нажатия клавиш в любом терминале (ap & lt; TAB & gt; & lt; ENTER & gt;), а остальное - автоматически. – Malabarba 21 October 2010 в 18:35
  • 2
    Вы можете просто вставить его в ~ / bin (и избавиться от расширения .sh), если вы хотите запустить его как aupgrade . – Oli♦ 21 October 2010 в 18:44
  • 3
    В самом деле. Я предпочитаю псевдонимы, потому что они легко переносятся на новые установки, копируя файл .bash_aliases. Но это все зависит от предпочтений. – Malabarba 21 October 2010 в 18:53

Еще один способ для вас - отредактировать /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  

От: https://bugs.launchpad.net/burg/+bug/594431 ( отчет об ошибках повторяет ваш опыт)

Это также можно стереть с помощью обновлений, но, как и в / etc / , вы должны (я думаю) получить приглашение сохранить существующую конфигурацию при ударе обновления.

Как говорят люди в этой ошибке, это все еще не идеально, поскольку есть все возможности, чтобы кто-то мог захотеть запустить как burg, так и grub или, по крайней мере, сохраните два синхронизированных.

Вы можете пойти дальше и написать новый скрипт следующим образом:

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

Сохранить его как / usr / sbin / update-bootloaders , chmod + x , а затем вставьте upd ate-bootloaders в /etc/kernel-img.conf вместо update-grub или update-burg .

Я предполагаю, что в долгосрочной перспективе необходимо установить альтернативы для различных загрузчиков, которые существуют для java, аудио и других взаимозаменяемых подсистем.

8
ответ дан 16 August 2018 в 00:00
  • 1
    Я думаю, что ваш ответ лучше (короче), но я только сменил grub на burg ~ 1 год назад и не имею абсолютно никаких проблем. – Extender 30 September 2010 в 19:14
  • 2
    Я только что обновил (используя диспетчер обновлений) и burg (расположенный на MBR), был перезаписан grub во время обновления. Мне пришлось переустановить машину. После этого опыта я решил полностью удалить grub (надеюсь, что для burg не существует зависимости grub). – jumbli 30 September 2010 в 20:04

Другие вопросы по тегам:

Похожие вопросы: