Решил сделать dist-upgrade на рабочем сервере. Сервер выделенный, конечно linux, установлен Debian Squeeze. На сервере крутится только mysql, которая ценна на вес золота и больше ничего. Есть апач с пхп для тестов.
И так, команда введена и тут на обновлении ядра fatal error.
История решения этого вопроса на форуме по ссылке. Это замечательный, активный форум. Сюда переношу для себя и для поисковых систем.
И так, вот что я имею после ввода команд.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
apt-get install Чтение списков пакетов... Готово Построение дерева зависимостей Чтение информации о состоянии... Готово обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено. не установлено до конца или удалено 1 пакетов. После данной операции, объём занятого дискового пространства возрастёт на 0 B. Настраивается пакет linux-image-2.6.32-5-amd64 (2.6.32-46) ... Running depmod. Running update-initramfs. update-initramfs: deferring update (hook will be called later) Examining /etc/kernel/postinst.d. run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64 update-initramfs: Generating /boot/initrd.img-2.6.32-5-amd64 W: Possible missing firmware /lib/firmware/rtl_nic/rtl8105e-1.fw for module r8169 W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168e-2.fw for module r8169 W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168e-1.fw for module r8169 W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168d-2.fw for module r8169 W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168d-1.fw for module r8169 W: mdadm: /etc/mdadm/mdadm.conf defines no arrays. run-parts: executing /etc/kernel/postinst.d/zz-lilo 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64 Warning: Not updating LILO; /etc/lilo.conf not found run-parts: executing /etc/kernel/postinst.d/zz-update-grub 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64 Searching for GRUB installation directory ... found: /boot/grub Searching for default file ... Generating /boot/grub/default file and setting the default boot entry to 0 entry not specified. run-parts: /etc/kernel/postinst.d/zz-update-grub exited with return code 1 Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-2.6.32-5-amd64.postinst line 799. dpkg: не удалось обработать параметр linux-image-2.6.32-5-amd64 (--configure): подпроцесс установлен сценарий post-installation возвратил код ошибки 2 configured to not write apport reports При обработке следующих пакетов произошли ошибки: linux-image-2.6.32-5-amd64 E: Sub-process /usr/bin/dpkg returned an error code (1) |
Как видно ситуация плачевная.
Далее думаю удалить этот пакет.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
apt-get remove -f linux-image-2.6.32-5-amd64 Чтение списков пакетов... Готово Построение дерева зависимостей Чтение информации о состоянии... Готово Следующие пакеты устанавливались автоматически и больше не требуются: libuuid-perl linux-base Для их удаления используйте 'apt-get autoremove'. Пакеты, которые будут УДАЛЕНЫ: linux-image-2.6-amd64 linux-image-2.6.32-5-amd64 обновлено 0, установлено 0 новых пакетов, для удаления отмечено 2 пакетов, и 0 пакетов не обновлено. не установлено до конца или удалено 1 пакетов. После данной операции, объём занятого дискового пространства уменьшится на 100 MB. Хотите продолжить [Д/н]? n Аварийное завершение. |
Странно, удаляет еще одно ядро. А что вообще есть в системе?
1 2 3 4 5 |
dpkg -l | grep linux-image ii linux-image-2.6-amd64 2.6.32+29 Linux 2.6 for 64-bit PCs (meta-package) iF linux-image-2.6.32-5-amd64 2.6.32-46 Linux 2.6.32 for 64-bit PCs |
И тут подстава. Это единственное ядро. Выходит удалить его нельзя. Тупиковая ситуация.
С первых двух подсказок на форуме мне предлагают посмотреть что в /boot/grub/default?
Там оказывается великое НИЧЕГО, файла вообще нет, хотя скрипт установки его ищет.
Далее была рекомендация такая:
1 2 3 4 5 6 |
grub-mkdevicemap grub-mkconfig update-grub aptitude update && aptitude safe-upgrade |
На update-grub я получил подтверждение, что нет никакого конфига.
1 2 3 4 5 |
Searching for GRUB installation directory ... found: /boot/grub Searching for default file ... Generating /boot/grub/default file and setting the default boot entry to 0 entry not specified. |
Далее пошел апрейд. Ввиду того, что он safe, все обновилось, кроме ядра, конечно же. Отвалилось с той же ошибкой.
Участники треда начали грешить на
1 2 3 |
Possible missing firmware /lib/firmware/rtl_nic/rtl8168d-1.fw for module r8169 |
Но пока мне писали ответ я погуглил, и обнаружил, что какой-то конфиг граба все же есть в этом месте /etc/default/grub. У меня сразу мелькнула идея, но я отвлекся на ответ..
1 2 3 |
Действуйте по этому howto — http://hvaara.com/possible-missing-firmware-issue-on-debian-and-ubuntu/ |
Отличный мануал как избавиться от варнингов. В итоге я сделал
1 2 3 |
apt-get install firmware-realtek |
Что убрало варнинги, но ядро отваливается с той же ошибкой. И тут я вспомнил про свою же догадку про конфиг.
ВНИМАНИЕ! РЕШЕНИЕ!
1 2 3 |
cp /etc/default/grub /boot/grub/default |
Вот так вот все просто оказалось. Ядро встало без ошибок, граб меню сгенерировалось.
Почему же так произошло?
Оказывается у меня в системе были не до конца удаленные пакеты. Они отмечены rc в статусе dpkg и в общем-то это просто мусор.
Использовался grub-common, но в виду не до конца удаленного grub сработал его триггер и конфиг был не туда записан.
Меня “наругали” за мусор в системе, после чего я его удалил командой
1 2 3 |
dpkg -l | awk '/^rc/ {print $2}' | xargs dpkg --purge -- |
А делалось все это для запуска многопоточности в php. :)
Мне нужны были последняя версия php, которую я в итоге поставил с http://www.dotdeb.org/. А так же установка libevent.
Можно было обойтись без обновления, но почему нет?)