LINUX.ORG.RU

Загрузка нужного ядра в Debian 7

 , ,


1

3

Здравствуйте.

Немного предыстории: есть удаленный сервер (hetzner), изначально устанавливался LAMP пакет на базе Debian 6. Недавно решил сделать апгрейд до Debian 7. Сделал aptitude update, aptitude upgrade, aptitude dist-upgrade. ОС обновилась, а вот ядро осталось 2.6.32-5-amd64. Поставил через aptitude актуальное ядро - 3.2.0-4-amd64. Удалил grub, поставил grub2. Сделал update-grub, проверил созданный скриптами конфиг - все в порядке, две записи menuentry (Debian GNU/Linux, with Linux 3.2.0-4-amd64 и recovery mode), ядро должно подключаться свежее. Делаю reboot, выполняю uname -r, и вижу: 2.6.32-5-amd64. Т.е. ядро все еще грузится старое.

Заглядываю в dmesg, среди прочего нахожу такие строки:

[ 0.000000] Linux version 2.6.32-5-amd64 (Debian 2.6.32-48squeeze6) (jmm@debian.org) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Tue May 13 16:34:35 UTC 2014

[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-2.6.32-5-amd64 root=UUID=68720c78-1872-49c0-b0e0-5b5956aabc5d ro nomodeset

...

[ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-2.6.32-5-amd64 root=UUID=68720c78-1872-49c0-b0e0-5b5956aabc5d ro nomodeset

...

[ 1.216572] usb usb1: Manufacturer: Linux 2.6.32-5-amd64 ehci_hcd

...

[ 1.217484] usb usb2: Manufacturer: Linux 2.6.32-5-amd64 xhci_hcd

...

[ 1.245328] usb usb3: Manufacturer: Linux 2.6.32-5-amd64 ehci_hcd

Смотрю в /proc/cmdline:

BOOT_IMAGE=/vmlinuz-2.6.32-5-amd64 root=UUID=68720c78-1872-49c0-b0e0-5b5956aabc5d ro nomodeset

Это единственный файл, где упоминается ядро с этой версией. Но что самое интересное - его нет на диске. Откуда же оно тогда грузится? Искал файлы по маске vmlinuz* - нашлось только недавно установленное свежее ядро (/boot/vmlinuz-3.2.0-4-amd64).

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



Последнее исправление: cetjs2 (всего исправлений: 1)

Важные проекты нужно бекапить, и иметь тренировочный сервер у себя в локалке, где играть с грубом и проверять прочие смелые шаги типа:

aptitude update, aptitude upgrade, aptitude dist-upgrade.

«Сервер» понятие расплывчатое, что именно у вас там? А то может у вас там паравиртуализация, а вы в нём пытаетесь ядро обновить.

mky ★★★★★
()
Ответ на: комментарий от mky

Выделенный сервер (dedicated).

# lsb_release -a

No LSB modules are available.

Distributor ID: Debian

Description: Debian GNU/Linux 7.9 (wheezy)

Release: 7.9

Codename: wheezy

# cat /proc/version

Linux version 2.6.32-5-amd64 (Debian 2.6.32-48squeeze6) (jmm@debian.org) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Tue May 13 16:34:35 UTC 2014

reserved22
() автор топика
Ответ на: комментарий от reserved22

Но что самое интересное - его нет на диске.

Команда:

find / -iname '*2.6.32-5*'

что-нибудь выдаёт?

Грузить ядро из удалённого файла мог lilo, а grub читает файловую систему. Либо у вас есть файл с ядром, допустим, на другом разделе /boot, который по умолчанию не примонтирован, либо это всё же виртуалка.

mky ★★★★★
()
Ответ на: комментарий от mky

# find / -iname '*2.6.32-5*'

/var/lib/dpkg/info/linux-image-2.6.32-5-amd64.list

/var/lib/dpkg/info/linux-image-2.6.32-5-amd64.postrm

/lib/modules/2.6.32-5-amd64

Хм, а вот WinSCP не видит первых двух файлов почему-то: http://joxi.ru/L21bl6MSKlwBAX

Впрочем, это все равно не ядра.

lilo проскакивало как-то при обновлении, но я не придавал этому значения, да и сейчас данный пакет не установлен

Вот какие разделы есть в системе:

# cat /etc/fstab

proc /proc proc defaults 0 0

none /dev/pts devpts gid=5,mode=620 0 0

/dev/md/0 none swap sw 0 0

/dev/md/1 /boot ext3 defaults 0 0

/dev/md/2 / ext4 defaults 0 0

/dev/md/3 /home ext4 defaults 0 0

Подскажите, куда копать дальше?

reserved22
() автор топика
Ответ на: комментарий от mky

Либо у вас есть файл с ядром, допустим, на другом разделе /boot, который по умолчанию не примонтирован.

Вот что говорит webmin по поводу :

http://joxi.ru/gmvgOpkS4lNd2a Disk and Network Filesystems

http://joxi.ru/Q2K74zOfBZa62j Edit Mount /boot

До кучи такая инфа:

http://joxi.ru/MAjlJEWhbpXRme Partitions on Local Disks - Using fdisk

http://joxi.ru/v29lD39h5BkzmG Linux RAID - Using MDADM version 3.2.5

reserved22
() автор топика

В общем попробовал примонтировать раздел /boot

# mount -t ext3 /dev/md/1 /media/another_boot

mount: unknown filesystem type 'ext3'

# mount -t ext4 /dev/md/1 /media/another_boot

Кстати странно, почему не примонтировался в ext3, но в ext4 завелся нормально.

Посмотрел в корень - а там как раз все и лежит - и свой grub, и ядро, и все остальные нужные файлы: http://joxi.ru/KAx9XByhaaqQr8

# ls -la /media/another_boot/

total 15M

drwxr-xr-x 4 root root 4.0K Sep 8 13:46 .

drwxr-xr-x 4 root root 4.0K Sep 8 13:34 ..

-rw-r--r-- 1 root root 52K Sep 7 16:56 change.txt

-rw-r--r-- 1 root root 302K Feb 9 2011 coffee.bmp

-rw-r--r-- 1 root root 104K May 13 2014 config-2.6.32-5-amd64

-rw-r--r-- 1 root root 22K Feb 9 2011 debian.bmp

-rw-r--r-- 1 root root 151K Feb 9 2011 debianlilo.bmp

drwxr-xr-x 4 root root 4.0K Aug 18 2014 grub

-rw-r--r-- 1 root root 10M Aug 18 2014 initrd.img-2.6.32-5-amd64

drwx------ 2 root root 16K Oct 31 2012 lost+found

lrwxrwxrwx 1 root root 10 Oct 31 2012 sarge.bmp -> debian.bmp

-rw-r--r-- 1 root root 24K Feb 9 2011 sid.bmp

-rw-r--r-- 1 root root 1.6M May 13 2014 System.map-2.6.32-5-amd64

-rw-r--r-- 1 root root 2.4M May 13 2014 vmlinuz-2.6.32-5-amd64

То есть, как я понимаю, в ходе загрузки подключается /boot с раздела /dev/md/1 (заменяя тот /boot, что был на /dev/md/2), но потом он почему-то отмонтируется после загрузки, и все изменения, которые вносятся после загрузки в текущий /boot (в том числе новые ядра, конфиг grub и т.д.) не оказывают никакого влияния на процесс загрузки системы, т.к. после ребута все также подключается /boot с раздела /dev/md/1, а в нем никаких изменений не было произведено.

Чего делать, братцы?

reserved22
() автор топика
Ответ на: комментарий от reserved22

При ручном монтировании лучше не указывать тип файловой системы, ядро само попробует подобрать. А потом можно посмотреть в ″cat /proc/mounts″.

Почему у вас /boot распознаётся как ext4, а в fstab'е прописана как ext3 я не знаю, но вполне возможно, что именно по этой причине /boot не монтируется при загрузке системы. В принципе, все сообщения системы при загрузке должны быть где-то в /var/log, попробуйте поискать, если там ″mount: unknown filesystem type 'ext3'″, значит нужно поправить /etc/fstab.

Само это сообщение означает, что ядро не поддерживает ext3 (не загружен модуль для случая дистрибутивного ядра).

в ходе загрузки подключается /boot с раздела /dev/md/1 (заменяя тот /boot, что был на /dev/md/2)

Нет. Загрузка начинается вобще без подмонтированных разделов. Загрузчик (grub) считывает без участия операционной системы ядро и initramfs. Считывает с того раздела, который задан в файле конфигурации (menu), а где лежит файл конфигурации загрузчик запоминает отдельно.

Вобще, то что /boot отдельно и не подмонтирован во время работы это нормальное явление, чтобы случайно не удалить ядро. А перед обновлением ядра /boot монтируют вручную.

Как вам поступить правильнее я не знаю, это дебиан-специфично. По идее вам нужно отмотировать /boot, удалить уже установленное ядро, подмонтировать /boot и установить ядро. Но захочет ли пакетный менеджер удалять единственно ядро мне не ведомо.

Мне ещё не нравится наличие файла ″sid.bmp″, sid ведь это нестабильная ветка, и смешивать стабильную и не стабильную ветки нужно осторожно. Можно попробовать просто скопировать файлы из /boot в корневом разделе на /boot на /dev/md/1, проверить, что права на файлы сохранились, и добавить ядро в grub-меню вручную, указав, что нужна одна попытка загрузки с этим ядром. Чтобы в случае чего техподдержка простой перезагрузкой загрузила систему со старым ядром.

mky ★★★★★
()
Ответ на: комментарий от mky

если там ″mount: unknown filesystem type 'ext3'″, значит нужно поправить /etc/fstab.

Вы оказались правы, нашел такую строчку, поправил тип на ext4 - и после перезагрузки в логах не было сообщения об ошибке, и сам раздел не отмонтировался от /boot (вернее, он наконец-то смог примонтироваться).

Поступил именно как вы и посоветовали далее: отмонтировал вручную /boot, через aptitude снес пару ядер, что были установлены ранее (ругани со стороны менеджера не было), подмонтировал загрузочный раздел в /boot и установил снова нужное ядро (конфиг grub обновился автоматически). После перезагрузки все поднялось с новым ядром.

Спасибо вам большое mky за помощь в решении проблемы!

reserved22
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.