The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Удаленная замена FreeBSD на Debian/GNU Linux (linux freebsd init install initrd boot grub)


<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, freebsd, init, install, initrd, boot, grub,  (найти похожие документы)
From: Paul Petruk <berserker@neolocation.com.> Date: Mon, 22 Oct 2005 14:31:37 +0000 (UTC) Subject: Удаленная замена FreeBSD на Debian/GNU Linux Оригинал: http://index.kaven.neolocation.net/switching.html Удаление FreeBSD и установка Debian по SSH Задача - удалить freebsd и установить debian на далеком сервере. Итак, у нас есть : 1. freebsd-сервер с доступом по ssh далеко в инете. RAM=>256Mb. 2. локальный комп с 500 Мб свободного места на винчестере и быстрым инетом 3. инсталляционный CD debian sarge Краткий порядок действий: 1. ставим базовую систему debian к себе на комп 2. из базовой системы делаем initrd.img 3. компилируем ядро linux 4. закачиваем на freebsd initrd и ядро linux, ставим grub 5. грузим linux из initrd , ставим linux на диск. Теперь подробнее. 1. ставим базовую систему debian к себе на комп Тут все просто, грузимся с компакта, ставим базовую систему debian (linux26) куда-нибудь к себе на винчестер, на отдельный раздел. Все сетевые настройки (IP, gateway, netmask,DNS-server) указать такие же, как на freebsd-сервере. Не забыть пароль root'a ! Базовую систему поставили на /dev/hda3, GRUB ставим также на /dev/hda3. Перегрузились, настроили, не добавляя CD-ROM в индексы apt (экономим объем). Ставим ssh: mount /media/cdrom dpkg -i /media/cdrom/pool/main/o/openssh/ssh_3.8.1p1-8.sarge.4_i386.deb Разрешаем логиниться root'у и обязательно проверяем : grep -i permitrootlogin /etc/ssh/sshd_config Добавляем автоматический ребут после 5 минут работы: echo "*/1 * * * * [ `cat /proc/uptime|cut -d. -f1` -lt 300 ] || /sbin/reboot" \ >> /var/spool/cron/crontabs/root 2. из базовой системы делаем initrd.img Перезагружаемся в рабочую (та, что была до установки debian'a) ОС. Далее: mkdir /mnt/debian mount /dev/hda3 /mnt/debian Делаем снимок базовой системы , он понадобится для пункта 5: cd /mnt/debian tar -cpf ~/deb_base.tar * Теперь почистим : chroot /mnt/debian apt-get remove dhcp-client ed fdutils grub hotplug info \ initrd-tools ipchains iptables locales mailx manpages nano \ ppp* usbutils exim4* find /usr/share/{doc,locale,man} -type f -exec rm -f \; exit #from chroot df -h /mnt/debian Должно показать меньше 70Мб. Делаем initrd.img размером 80Мб : dd if=/dev/zero of=~/initrd.img count=80 bs=1M создаем там ext3fs и монтируем mke2fs -j -F -m0 ~/initrd.img mkdir /mnt/initrd mount ~/initrd.img /mnt/initrd -o loop копируем урезанную базовую систему внутрь : cp -rap /mnt/debian/* /mnt/initrd/ размонтируем и проверяем целостность umount /mnt/initrd/ umount /mnt/debian e2fsck ~/initrd.img gzip -9 ~/initrd.img.gz Результат - файлы ~/initrd.img.gz и ~/deb_base.tar. 3. компилируем ядро linux Скачиваем не слишком древнее ядро на свою рабочую машину, конфигурируем. Основные моменты : а) обязательно включить поддержку той сетевой карты, что стоит на сервере б) обязательно включить поддержку ramdisk, initrd, ext2fs, ext3fs в) если надо что-то включить, надо включать сразу в ядро, а не модулем. г) CONFIG_BLK_DEV_RAM_SIZE выставить больше чем `du -k initrd.img` д) желательно включить поддержку DMA для чипсета сервера После конфигурирования проверить : grep -E "RAM|INITRD|E100|EXT2|EXT3" .config make Компилируем, результат - файл bzImage. 4. закачиваем на freebsd initrd и ядро linux. Ставим grub. Сейчас надо освободить субраздел внутри слайса, желательно наименьший. Под это хорошо подойдет своп (к примеру /dev/ad0s1b, 200Mb) swapoff /dev/ad0s1b newfs -O1 /dev/ad0s1b mkdir /small mount /dev/ad0s1b /small Выносим /dev/ad0s1b из /etc/fstab Скачиваем в /small файлы bzImage и initrd.img.gz Создаем предварительно ~/menu.lst : echo " default saved fallback 0 timeout 1 title freebsd kernel (hd0,0,a)/boot/loader savedefault 0 title debian kernel (hd0,0,b)/bzImage root=/dev/ram0 init=/sbin/init rw panic=1 initrd (hd0,0,b)/initrd.img.gz savedefault 0 " > ~/menu.lst То есть, freebsd грузим с 1-го слайса, подраздела a, а linux - с 1-го слайса, подраздела b. Причем в случаях kernel panic ядра linux случится перезагрузка через 1 сек , и при невозможности загрузки или ядра linux, или initrd - будет загружена freebsd (fallback). Качаем и ставим grub версии 0.97 или выше (ЭТО ВАЖНО, в предыдущих версиях неполная поддержка savedefault) . cd /usr/ports/sysutils/ && make clean install # pkg_add grub-0.97.tbz - я сделал себе бинарный пакет и ставил его sysctl kern.geom.debugflags=16 grub-install /dev/ad0 grub-set-default 1 cp ~/menu.lst /boot/grub/menu.lst reboot #and pray 5. грузим linux из initrd , ставим linux на диск. Итак, через некоторое время мы логинимся на ssh как root. Если все прошло нормально, должен подойти пароль root'a от debian'a :) Иначе пробуем войти с паролем root'a от freebsd. Если порт 22 вообще не откликается, и сервер не пингуется, значит something goes wrong :)) ВНИМАНИЕ - после того, как залогинились, сразу вынести перезагрузку из cron. Иначе придется 5-й пункт делать за время, меньшее 5 мин. ВНИМАНИЕ - все делать осторожно и вдумчиво, т.к. возврата уже не будет. Дальше все просто - сейчас система работает с диска в ОЗУ. Запускаем cfdisk, сносим все на винчестере, делаем первый раздел /dev/hda1 размером 2Гб, помечаем его как загрузочный. mke2fs -j /dev/hda1 mount /dev/hda1 /mnt/ С локальной машины закачиваем файл deb_base.tar scp ~/deb_base.tar root@remoteserver:/mnt/ и распаковываем. Ставим GRUB в MBR: tar -xpf /mnt/deb_base.tar -C /mnt/ chroot /mnt/ grub grub>install (hd0,0)/boot/grub/stage1 (hd0) (hd0,0)/boot/grub/stage2 grub>quit exit #from chroot Ставим всё верно: vi /boot/grub/menu.lst reboot #and pray again ждем, результат - логинимся на debian-хост, работающий с винчестера и выносим перезагрузку из cron Примечание Данная инструкция может содержать ошибки, смысловые или опечатки, однако дает общее представление о процессе. Paul Petruk aka Berserker, berserker()neolocation.com 10.09.2005

<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, mephist (?), 23:29, 12/03/2008 [ответить]  
  • +/
    собственно вопрос: а зачем? =))
     
  • 2, Аноним (-), 09:28, 14/08/2010 [ответить]  
  • +/
    это вообще бред)
     
  • 3, сергей (??), 11:49, 31/10/2010 [ответить]  
  • +/
    вопрос, а если сделать lamp и засунуть его в initrd.img будет работать из оперативы?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру