Для чего может быть необходимо? Например, хотите клонировать существующий рабочий сервер (компьютер) в резервных либо других целях, либо необходимо восстановить архивную копию на другом сервере, либо сервер вышел из строя и необходимо поднять на другом железе переставив жёсткий диск...
Основные проблемы при загрузке "чужого" линукса для текущего железа возникают при несоответствии драйверов под контроллер жёстких дисков... Далее базово рассмотрим изменение этих самых модулей.
Для примера будем использовать ситуацию при развороте архивной копии сервера (RHEL/CentOS) на виртуальную машину:
Действия вкратце следующие:
1/ получение образа диска из архива в ипостаси виртуального диска
2/ правка конфигурации загрузчика, правка fstab при необходимости
3/ пересоздание initrd для поддержки SCSI/SAS контроллера и файловой системы (при клонировании файловая система не измениться, но мы должны понимать всю суть)
По порядку:
1/ этап получения виртуального диска с архива, клонирование диска одного сервера на другой, либо переподключение диска с одного во второй сервер я опускаю ввиду того, что это выходит за рамки данной публикации. А также потому, что я хочу описать базовые понятия при клонировании, которые помогут при многих ситуациях.
2/ На данном этапе у нас подключен диск с установленным Linux к новому серверу. Конечно, необходимо первым делом попробовать загрузиться с него, вполне возможно, что в какойто конкретной ситуации никаких дополнительных манипуляций уже не нужно :).
Если Вы видите приглашение загрузчика Grub мы продолжаем, если же загрузчик не работает - Вам необходимо обратиться к документации по установке его в MBR.
Итак загрузка ядра проходит, но на этапе монтирования рутового раздела падает в панике. Можно попробовать исправить загрузку в приглашении grub ( e - редактирование выделенной записи, enter - сохранить изменения (только для текущей загрузки), b - загрузить то что мы исправили). Здесь нужно смотреть, где ядро будет искать рут раздел:
title Red Hat Enterprise Linux Server (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-194.el5.img
В примере выше (до клонирования) root раздел был на volume группе, меняем на текущий /dev/sda2 и убираем "тихий режим" загрузки ядра
title Red Hat Enterprise Linux Server (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/sda2
initrd /initrd-2.6.18-194.el5.img
Если удалось загрузится - хорошо, если нет - внимательно читаем вывод ядра где именно проблема.
3/ На текущем этапе нам необходимо получить доступ к рут-разделу ОС. Данную манипуляцию можно проделать загрузившись с инсталляционного диска в режиме восстановления, либо с линукса предназначенного для операций восстановления, например, SystemRescueCd.
Загружаемся с компакт-диска/флешки, далее монтируем диски, для данного простого примера использую /dev/sda1 - boot, /dev/sda2 - root:
mkdir /mnt/mylinux
mount /dev/sda2 /mnt/mylinux/
mount /dev/sda1 /mnt/mylinux/boot
mount -t none /dev /mnt/mylinux/dev -o bind
chroot /mnt/linux/
mount /proc
mount /sys
Сейчас мы находимся в среде нашей реальной ОС которая в будущем будет работать. Нужно определить набор модулей необходимых для работы дискового контроллера (например Вы уже знаете этот набор, либо используйте команду lsmod) и соответственно исправить конфигурационный файл /etc/modprobe.conf. Содержание файла у меня после правок:
# cat /etc/modprobe.conf
alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptspi
alias scsi_hostadapter2 ata_piix
alias eth0 e1000
обратите внимание на scsi_hostadapter.
Пересобираем initrd:
# cd /boot/
# cp initrd-2.6.18-164.el5.img initrd-2.6.18-164.el5.img.org
# rm initrd-2.6.18-164.el5.img
rm: remove regular file `initrd-2.6.18-164.el5.img'? y
# mkinitrd initrd-2.6.18-164.el5.img 2.6.18-164
По необходимости правьте точки монтирования в /etc/fstab, конфигурацию GRUB /boot/grub/grub.conf.
Пора перезагружаться в новую-старую операционную систему.
Основные проблемы при загрузке "чужого" линукса для текущего железа возникают при несоответствии драйверов под контроллер жёстких дисков... Далее базово рассмотрим изменение этих самых модулей.
Для примера будем использовать ситуацию при развороте архивной копии сервера (RHEL/CentOS) на виртуальную машину:
Действия вкратце следующие:
1/ получение образа диска из архива в ипостаси виртуального диска
2/ правка конфигурации загрузчика, правка fstab при необходимости
3/ пересоздание initrd для поддержки SCSI/SAS контроллера и файловой системы (при клонировании файловая система не измениться, но мы должны понимать всю суть)
По порядку:
1/ этап получения виртуального диска с архива, клонирование диска одного сервера на другой, либо переподключение диска с одного во второй сервер я опускаю ввиду того, что это выходит за рамки данной публикации. А также потому, что я хочу описать базовые понятия при клонировании, которые помогут при многих ситуациях.
2/ На данном этапе у нас подключен диск с установленным Linux к новому серверу. Конечно, необходимо первым делом попробовать загрузиться с него, вполне возможно, что в какойто конкретной ситуации никаких дополнительных манипуляций уже не нужно :).
Если Вы видите приглашение загрузчика Grub мы продолжаем, если же загрузчик не работает - Вам необходимо обратиться к документации по установке его в MBR.
Итак загрузка ядра проходит, но на этапе монтирования рутового раздела падает в панике. Можно попробовать исправить загрузку в приглашении grub ( e - редактирование выделенной записи, enter - сохранить изменения (только для текущей загрузки), b - загрузить то что мы исправили). Здесь нужно смотреть, где ядро будет искать рут раздел:
title Red Hat Enterprise Linux Server (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-194.el5.img
В примере выше (до клонирования) root раздел был на volume группе, меняем на текущий /dev/sda2 и убираем "тихий режим" загрузки ядра
title Red Hat Enterprise Linux Server (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/sda2
initrd /initrd-2.6.18-194.el5.img
Если удалось загрузится - хорошо, если нет - внимательно читаем вывод ядра где именно проблема.
3/ На текущем этапе нам необходимо получить доступ к рут-разделу ОС. Данную манипуляцию можно проделать загрузившись с инсталляционного диска в режиме восстановления, либо с линукса предназначенного для операций восстановления, например, SystemRescueCd.
Загружаемся с компакт-диска/флешки, далее монтируем диски, для данного простого примера использую /dev/sda1 - boot, /dev/sda2 - root:
mkdir /mnt/mylinux
mount /dev/sda2 /mnt/mylinux/
mount /dev/sda1 /mnt/mylinux/boot
mount -t none /dev /mnt/mylinux/dev -o bind
chroot /mnt/linux/
mount /proc
mount /sys
Сейчас мы находимся в среде нашей реальной ОС которая в будущем будет работать. Нужно определить набор модулей необходимых для работы дискового контроллера (например Вы уже знаете этот набор, либо используйте команду lsmod) и соответственно исправить конфигурационный файл /etc/modprobe.conf. Содержание файла у меня после правок:
# cat /etc/modprobe.conf
alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptspi
alias scsi_hostadapter2 ata_piix
alias eth0 e1000
обратите внимание на scsi_hostadapter.
Пересобираем initrd:
# cd /boot/
# cp initrd-2.6.18-164.el5.img initrd-2.6.18-164.el5.img.org
# rm initrd-2.6.18-164.el5.img
rm: remove regular file `initrd-2.6.18-164.el5.img'? y
# mkinitrd initrd-2.6.18-164.el5.img 2.6.18-164
По необходимости правьте точки монтирования в /etc/fstab, конфигурацию GRUB /boot/grub/grub.conf.
Пора перезагружаться в новую-старую операционную систему.
Комментариев нет:
Отправить комментарий