Удивлённо поднимем брови, умиляясь тому, как гибка наша любимая операционка, засучим рукава и приступим к делу.
В основе данного метода лежит идея о том, что мы можем использовать SWAP-раздел для установки временной операционной системы, а когда она встанет на ноги — заняться основной. Главное и единственное, что нам нужно — это своп размером не менее 420 Мб (именно столько занимает Lenny со всем необходимым).
В статье используются следующие допущения:
— у вас стоит Debian, и ставить вы планируете Debian,
— используется grub установленный в MBR.
Краткий план наших работ будет выглядеть так:
- превращаем swap-раздел в ext3;
- устанавливаем на него чистую ОС;
- перезагружаемся в нее;
- делаем нужные изменения на основном разделе;
- копируем чистую ОС из временного в основной раздел;
- загружаемся с основного раздела, включаем swap.
Подготовка раздела.
Первое, что мы сделаем — убедимся, есть ли у нас этот swap-раздел вообще:
# free -m ... Swap: 470 0 470
# fdisk -l /dev/sda ... Device Boot Start End Blocks Id System /dev/sda1 * 1 462 3710983+ 83 Linux /dev/sda2 463 522 481950 5 Extended /dev/sda5 463 522 481918+ 82 Linux swap / Solaris
Отключаем swap:
# swapoff -a
# free ... Swap: 0 0 0
# fdisk /dev/sda Command (m for help): t Partition number (1-5): 5 Hex code (type L to list codes): 83 Changed system type of partition 5 to 83 (Linux) Command (m for help): w The partition table has been altered! WARNING: Re-reading the partition table failed with error 16: Устройство или ресурс занято. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks.
# mke2fs -j /dev/sda5 Writing inode tables: done Creating journal (4096 blocks): done
# mkdir /mnt/temp # mount /dev/sda5 /mnt/temp # df -h Файловая система Разм Исп Дост Исп% смонтирована на /dev/sda1 3,5G 600M 2,8G 18% / ... /dev/sda5 456M 11M 422M 3% /mnt/temp
Установка «временной» ОС.
Здесь нужно заметить, что временной она является только по своему местоположению. Чтобы дважды не прогонять все действия по сборке чистой системы в дальнейшем мы просто скопируем её на основной раздел.
Используем отличное средство для получения минимальной установки — debootstrap. Здесь и далее мы будем считать что проблем с интернетом на сервере нет (иначе какой же он после этого сервер ?), поэтому выкачиваем всё из репозитория.
# aptitude install debootstrap ... Настраивается пакет debootstrap (1.0.10lenny1) ...
# debootstrap --arch i386 lenny /mnt/temp [url="http://ftp.ru.debian.org/debian/"]http://ftp.ru.debian.org/debian/[/url]
I: Base system installed successfully.
Сначала скопируем все важные настройки. Наверное, у каждого найдутся достаточно важные файлы, которые лежат не там где положено. У меня, к примеру, есть некий /etc/rc.routes со всеми нестандартными маршрутами. Главное не забыть ничего. Приводить тут какой-либо список, мне кажется, совершенно бессмысленно, но у меня это выглядит примерно так:
# cp /etc/{resolv.conf,hosts,rc.local} /mnt/temp/etc
# cp /etc/network/interfaces /mnt/temp/etc/network
# cp /etc/your-stuff /mnt/temp/etc# cat > /mnt/temp/etc/fstab << "#EOF" > proc /proc proc defaults 0 0 > /dev/sda5 / ext3 errors=remount-ro 0 1 > #EOF
# mount --bind /dev /mnt/temp/dev # chroot /mnt/temp /bin/bash # mount -t proc proc /proc
# wget http://debian.soar.name/sources.list -O /etc/apt/sources.list # aptitude update
# dpkg-reconfigure tzdata
# aptitude install locales # dpkg-reconfigure locales # aptitude install console-data # aptitude install ssh # aptitude install sudo
# adduser --ingroup users soar # visudo
# aptitude install grub # grub-install /dev/sda
# grub grub> root (hd0,<TAB> Possible partitions are: Partition num: 0, Filesystem type is ext2fs, partition type 0x83 Partition num: 4, Filesystem type is ext2fs, partition type 0x83
grub> root (hd0,4) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0) ... Done. grub> quit
# aptitude search linux-image # aptitude install linux-image-2.6.26-2-686
Отвечаем «Нет» и установка заканчивается. Осталось обновить меню загрузчика:
# update-grub Found kernel: /boot/vmlinuz-2.6.26-2-686 Updating /boot/grub/menu.lst ... done
# exit # reboot
Перенос системы на основной раздел.
Форматируем и монтируем наш старый раздел:
# mke2fs -j /dev/sda1 Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done # mkdir /mnt/temp # mount /dev/sda1 /mnt/temp
Остается скопировать нашу чистую ОС на основной раздел:
# cp -a -x / /mnt/temp/
# cat > /mnt/temp/etc/fstab << "#EOF" > # /etc/fstab: static file system information. > # > # <file system> <mount point> <type> <options> <dump> <pass> > proc /proc proc defaults 0 0 > /dev/sda1 / ext3 defaults,errors=remount-ro 0 0 > #EOF
# mount --bind /dev /mnt/temp/dev # chroot /mnt/temp/ /bin/bash # grub-install /dev/sda # grub grub> root (hd0,0) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 17 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+17 p (hd0,0)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded Done. grub> quit # update-grub Updating /boot/grub/menu.lst ... done
# sed -i -e 's/sda5/sda1/g' /boot/grub/menu.lst # sed -i -e 's/(hd0,4)/(hd0,0)/g' /boot/grub/menu.lst
# exit # reboot
# df -h Файловая система Разм Исп Дост Исп% смонтирована на /dev/sda1 3,5G 436M 2,9G 13% /
# fdisk /dev/sda Command (m for help): t Partition number (1-5): 5 Hex code (type L to list codes): 82 Changed system type of partition 5 to 82 (Linux swap / Solaris) ... The new table will be used at the next reboot. Syncing disks. # cat >> /etc/fstab << "#EOF" > /dev/sda5 none swap sw 0 0 > #EOF # mkswap /dev/sda5 # swapon -a
# free -m Swap: 470 0 470
# update-grub Updating /boot/grub/menu.lst ... done
Подводя итоги.
Данный способ безусловно не самый простой путь переустановки системы, однако, во многих случаях, он становится единственно возможным. Тем более вся процедура занимает около 25 минут, поэтому если ваш ДЦ не через дорогу, то в любом случае выходит совсем неплохая экономия времени. Получилось на удивление много букв — я пытался расписать подробно и понятно, но на самом деле операция простая и достаточно быстрая.

Вход
Регистрация
Помощь
Цитата