Вопрос или проблема
Я использую Red Hat 4 Enterprise Linux. Но, когда я обновляю ядро, возникает ошибка. И после этого, когда компьютер загружается с новым ядром (red hat enterprise 2.6.9-100.el), я получаю следующую ошибку.
mkrootdev: label /1 not found
mount: error 2 mountıng ext 3
mount: error 2 mountıng none
switchroot : mount failed :22
umount /initrd/dev failed :2
kernel panic -not syncing :Attemped to kill init!
После, когда я пытаюсь загрузить систему со старым ядром (red hat enterprise 2.6.9-42.el), система успешно загружается.
Мой вопрос: когда я перезагружаю систему, она пытается загрузиться с новым ядром каждый раз, и мне приходится каждый раз вручную выбирать старое ядро. Как избавиться от этой проблемы? Как я могу удалить новое ядро без проблем? Или как я могу использовать новое ядро без проблем?
что-то вроде этого grub.conf;
"default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux ES (2.6.9-100.ELsmp)
root (hd0,0)
kernel /boot/vmlinuz-2.6.9-100.ELsmp ro root=LABEL=/1 rhgb quiet
initrd /boot/initrd-2.6.9-100.ELsmp.img
title Red Hat Enterprise Linux ES (2.6.9-100.EL)
root (hd0,0)
kernel /boot/vmlinuz-2.6.9-100.EL ro root=LABEL=/1 rhgb quiet
initrd /boot/initrd-2.6.9-100.EL.img
title Red Hat Enterprise Linux ES (2.6.9-42.ELsmp)
root (hd0,0)"
Запустите вашу машину с хорошим ядром и затем отредактируйте /etc/grub.conf
, чтобы по умолчанию было выбранно ваше хорошее ядро, проверьте строку в grub, которая говорит "default=0"
. Изменив это, вы устраните проблему ручного выбора ядра. В вашем случае, для загрузки старого хорошего SMP ядра необходимо установить значение "default=3"
.
Затем рассмотрите возможность удаления проблемного ядра с помощью rpm -e <проблемное ядро>
, возможно для начала выполните тест (rpm -e --dry-run <проблемное ядро>
), чтобы убедиться, что оно удалит проблемное ядро, а не ваше хорошее 🙂
Это зависит от установки/обновления. Мы говорим о обновлении, потому что мы обновляем ядро, но на самом деле, вы должны установить новое ядро.
Вы должны использовать установочный пакет ядра, а не обновление, если хотите иметь оба варианта в grub.
Также:
yum localinstall kernel.rpm
yum install kernel.rpm
rpm -ivh kernel.rpm
Примечание:
rpm -ivh kernel и rpm вообще рассинхронизируют db yum.
Запомните, НИКОГДА не выполняйте:
rpm -Uvh kernel.rpm
Тем не менее “yum update kernel” потому что он включает внутреннюю защиту и сохраняет старую версию работающей и 2 версии в дополнение к текущей -> 3 ядра по умолчанию). Но помните, не делайте обновление, думайте об установке (хорошая практика). Все это позволяет загружаться на предыдущем ядре.
Если вы все же это сделаете через rpm, потребуется выполнить некоторые действия, такие как редактирование вашего grub.conf
.
.
Ответ или решение
Проблемы с обновлением ядра в Red Hat Enterprise Linux могут возникать по различным причинам, и решение такой проблемы требует тщательного анализа и следования определенным шагам. В данной ситуации пользователь столкнулся с ошибкой при загрузке новой версии ядра (2.6.9-100.EL), в то время как старая версия ядра (2.6.9-42.EL) загружается без проблем. Проанализируем ситуацию и предложим потенциальные решения.
Теория
При обновлении ядра Linux система должна корректно найти и загрузить корневую файловую систему. Это, как правило, управляется загрузчиком, таким как GRUB, который определяет, какое ядро и initrd использовать. В данной ситуации ошибка mkrootdev: label /1 not found
указывает на то, что загрузчик не может найти правильный метку диск, указанную в параметрах загрузки. Это может быть связано с неправильной настройкой параметра корня или initrd.
Пример
Обратите внимание на текущий файл конфигурации GRUB (/etc/grub.conf
):
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux ES (2.6.9-100.ELsmp)
root (hd0,0)
kernel /boot/vmlinuz-2.6.9-100.ELsmp ro root=LABEL=/1 rhgb quiet
initrd /boot/initrd-2.6.9-100.ELsmp.img
title Red Hat Enterprise Linux ES (2.6.9-100.EL)
root (hd0,0)
kernel /boot/vmlinuz-2.6.9-100.EL ro root=LABEL=/1 rhgb quiet
initrd /boot/initrd-2.6.9-100.EL.img
title Red Hat Enterprise Linux ES (2.6.9-42.ELsmp)
root (hd0,0)
Здесь видно, что конфигурация для обеих новых версий ядра указала root=LABEL=/1
, что может быть неправильной меткой для вашей корневой файловой системы. Система успешно загружается с более старым ядром, что предполагает корректную конфигурацию для этой версии ядра.
Применение
-
Проверка метки корня: Убедитесь, что метка корневого раздела, указанная в параметрах загрузки ядра, правильная. Вы можете использовать команду
e2label
для проверки текущей метки вашего раздела.e2label /dev/your-root-partition
Убедитесь, что полученная метка совпадает с параметром
root=LABEL=/1
в файле конфигурации GRUB. -
Настройка GRUB для выбора старого ядра по умолчанию: Чтобы не выбирать вручную старую версию ядра при каждом запуске, измените параметр
default
в файле/etc/grub.conf
на индекс, соответствующий старой версии ядра.default=2
Это позволит системе загружаться с версией ядра 2.6.9-42.ELsmp без необходимости ручного выбора.
-
Удаление проблемной версии ядра: Если новая версия ядра остается непригодной для использования, ее можно удалить с помощью команды:
rpm -e kernel-2.6.9-100.EL
Рекомендуется сначала выполнить "сухой" прогон, чтобы убедиться, что в результате не будут удалены другие критически важные пакеты:
rpm -e --dry-run kernel-2.6.9-100.EL
-
Корректная установка ядра: Чтобы избежать подобных проблем в будущем, используйте
yum
для установки или обновления ядра, так как он обрабатывает зависимости и поддерживает несколько версий ядра. Командаyum update kernel
обновит ядро и оставит текущую версию ядра для возможности отката.yum update kernel
-
Проверка initrd: Убедитесь, что initrd был правильно создан для нового ядра. В случае необходимости пересоздайте initrd, сначала загрузившись в рабочую систему:
mkinitrd /boot/initrd-2.6.9-100.EL.img 2.6.9-100.EL
Каждый из этих шагов поможет устранить проблему с обновлением ядра, улучшая стабильность системы и предотвращая повторение ошибки в будущем. Полное понимание и внимательное следование рекомендациям в значительной степени способствует решению проблем, связанных с обновлением ядра в операционных системах на основе Linux.