== Введение == Сначала я хотел набросать эту статью просто как памятку по формуле "больше дела - меньше слов!", но постепенно открылись новые обстоятельства, из-за которых писать придется более подробно. В этой статье я опишу как устанавливать gentoo на компьютер с двумя жесткими дисками. И здесь будут не только "крючочки", но и комментарии. Итак - берем загрузочный диск LiveCD Gentoo или загрузочную USB-флешку, желательно с ядром, предназначенным для вашей архитектуры (в смысле - не смысла ставить i686 на x64, извините за каламбур) и грузимся. == Настройка RAID == Этот пункт можно пропустить всем тем, кто райд не делает. Но, как показывает мой опыт и область деятельности - я всё реже и реже встречаю компьютеры без RAID. Очень хорошо, когда RAID полностью аппаратный. Тогда, как правило, Linux видит уже "построенный" массив, как одиночное устройство и обращается с ним, как с обычном диском. Но на рынке существует также много SW-RAID-контроллеров, и просто конфигураций без встроенного контроллера, которые требуют программной поддержки RAID. SW-контроллеры мы опустим - это отдельная песня, которая в простом случае решается с помощью [boot: gentoo doscsi dodmraid] и [modprobe драйвер_контроллера], а в сложном - заставляет перерыть весь инет в поисках нужного модуля или патча к существующему модулю. Я остановлюсь на последнем варианте - софтварном райд, причем будут делать простейшее зеркалирование двух дисков (RAID1) Перегружаемся еще раз - в первый раз мы загрузились не правильно. При загрузке нужно указать параметры: boot: gentoo doscsi dodmraid У меня - два диска по 300G - /dev/sda и /dev/sdb. Пробуем модули: # dmesg ... # lspci ... # modprobe raid1 # modprobe dm-mod # fdisk -l Disk /dev/sda: 299.9 GB, 299989204992 bytes 255 heads, 63 sectors/track, 36471 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdb: 299.9 GB, 299989204992 bytes 255 heads, 63 sectors/track, 36471 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Разбиваем первый диск - просто на 4 первичных раздела - для /boot, swap, / и /home. Сразу замечу - это будет не серверная конфигурация, а обычный home pc, с повышенной надежностью хранения данных. # fdisk /dev/sda Disk /dev/sda: 299.9 GB, 299989204992 bytes 255 heads, 63 sectors/track, 36471 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 11 88326 fd Linux raid autodetect /dev/sda2 12 61 401625 82 Linux swap / Solaris /dev/sda3 62 311 2008125 fd Linux raid autodetect /dev/sda4 312 36471 290455200 fd Linux raid autodetect Обратите внимание - все разделы, которые мы "зеркалируем" имеют тип fd! Это делается командой t внутри fdisk. Swap-раздел я зеркалировать не буду - по идейным соображениям. Теперь нужно сделать точно такое же разбиение на втором диске. Я сделаю это просто: # sfdisk -d /dev/sda | sfdisk /dev/sdb Настало время сделать ноды устройств и обозначить их сущности: # mknod /dev/md1 b 9 1 # mknod /dev/md3 b 9 3 # mknod /dev/md4 b 9 4 # mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1 # mdadm --create --verbose /dev/md3 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3 # mdadm --create --verbose /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4 По-русски это означает, что мы слепили все "половинки" в пары и сделали "новые разделы" md1, md3, md4. Кстати говоря, никто не мешал нам сделать четвертый раздел, к примеру, страйпом - т.е. увеличить его объем в два раза, заменив "зеркалирование" на "объединение". Это просто: # mdadm --create --verbose /dev/md4 --level=0 --raid-devices=2 /dev/sda4 /dev/sdb4 Диски объединятся не мгновенно. Этот процесс желательно наблюдать и контролировать, время от времени запуская: # cat /proc/mdstat или делая это автоматически: # watch -n1 'cat /proc/mdstat' После того, как RAID будет построен, необходимо убедиться что составляющие "узлы" прописаны в файле /etc/mdadm/mdadm.conf. Если ничего похожего на правду там нет - необходимо прописать RAID в конфиге командой: mdadm -Es | grep md >> /etc/mdadm/mdadm.conf В далеком будущем, когда один из дисков отвалится - нужно будет вынуть и заменить сгоревший диск на новый. Это делается командами: Удалить диск из массива: # mdadm /dev/md1 --fail /dev/sdb1 --remove /dev/sdb1 Добавить диск в работающий массив: # mdadm /dev/md1 --add /dev/sdb1 Дальше делаем то, что я всегда забываю сделать: наводим файловые системы. # mke2fs /dev/md1 # mke2fs -j /dev/md3 # mke2fs -j /dev/md4 и включаем swap на обычных разделах: # mkswap /dev/sda2 && mkswap /dev/sdb2 # swapon -p 1 /dev/sda2 && swapon -p 1 /dev/sdb2 # swapon -v -s == Установка стадии == Этот алгоритм везде прописан. Лучше всего - в хендбуке, но его долго читать. Мы - поедем быстро. Считаем, что у нас уже есть диск с разметкой и файловыми системами в конфигурации RAID или не RAID - все равно. Настраиваем сеть - руками: # ifconfig eth0 192.168.1.2 netmask 255.255.255.0 # route add default gw 192.168.1.1 # echo "nameserver 192.168.1.1" > /etc/resolv.conf # ifconfig eth0 up Дальше - четко по шагам: # date # date MMDDhhmmYYYY # cd /mnt/stages # wget http://distfiles.gentoo.org/releases/x86/2008.0/stages/stage3-i686-2008.0.tar.bz2 # wget http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2 Монтируем новую файловую систему и разворачиваем стадию и портежи: # mount /dev/md3 /mnt/gentoo # mkdir /mnt/gentoo/boot # mount /dev/md1 /mnt/gentoo/boot # mkdir /mnt/gentoo/home # mount /dev/md4 /mnt/gentoo/home # cd /mnt/gentoo # cp /mnt/stages/stage3-i686-2008.0.tar.bz2 /mnt/gentoo # time tar -xvjpf stage3-i686-2008.0.tar.bz2 # cd /mnt/gentoo/usr # cp /mnt/stages/portage-latest.tar.bz2 /mnt/gentoo/usr # time tar -xvjf portage-latest.tar.bz2 Выбираем зеркало для обновлений и копируем настройки DNS: # mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf # cp -L /etc/resolv.conf /mnt/gentoo/etc/ И переходим в новую систему: # cd / # mount -t proc none /mnt/gentoo/proc # mount -o bind /dev /mnt/gentoo/dev # chroot /mnt/gentoo /bin/bash # env-update && source /etc/profile В новой системе сначала устанавливаем зону, дату-время и кrootой пароль: # ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime # date # passwd Не забываем, что на данном этапе мы должны посмотреть в файлы: /etc/hosts /etc/make.conf /etc/conf.d/clock /etc/conf.d/domainname /etc/conf.d/hostname /etc/conf.d/net Поправляем fstab: # nano -w fstab /dev/md1 /boot ext2 noauto,noatime 1 2 /dev/md3 / ext3 noatime 0 1 /dev/sda2 none swap sw,pri=1 0 0 /dev/sdb2 none swap sw,pri=1 0 0 /dev/md4 /home ext3 noatime 1 2 Накатываем необходимые порты: # time emerge gentoo-sources dhcpcd ccache mdadm gentoolkit \\ genkernel grub syslog-ng vixie-cron elogv eix ufed pciutils Кстати, очень часто для устанавливаемых пакетов я указываю флаги: # echo "app-misc/mc -samba" >> /etc/portage/package.use Обычно только после базовой установки я делаю изменения в файле /etc/make.conf: USE="mmx sse sse2 ssse3 threads -ipv6 -X -gtk -gtk2 -qt -qt3 -qt4" MAKEOPTS="-j16" ACCEPT_LICENSE="*" LINGUAS="ru en" GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/" EMERGE_DEFAULT_OPTS="-va" CC="ccache gcc" CXX="ccache g++" FEATURES="ccache" CCACHE_DIR="/var/tmp/ccache" CCACHE_SIZE="2G" PORTAGE_ELOG_CLASSES="warn error log qa" PORTAGE_ELOG_SYSTEM="save" PORTDIR_OVERLAY="/usr/local/portage" Кое-что ставим в автозагрузку: # rc-update add mdadm boot # rc-update add net.eth0 default # rc-update add sshd default До генерации ядра не забываем сохранить конфигурацию RAID, чтобы ядро знало, откуда загружаться: # mdadm --detail --scan >> /etc/mdadm.conf Генерим ядро. Процесс неоднозначный, требующий понимания и знания железа. В простом случае попробуем: # cd /usr/src/linux # make menuconfig # make && make modules_install Можно и с помощью genkernel # genkernel --menuconfig --mdadm all Поправляем настройки grub: # nano -w /boot/grub/grub.conf default 0 timeout 10 title Gentoo Genkernel root (hd0,0) kernel /boot/kernel-genkernel-x86-2.6.26-gentoo-r4 root=/dev/ram0 real_root=/dev/md3 doscsi initrd /boot/initramfs-genkernel-x86-2.6.26-gentoo-r4 title Gentoo root (hd0,0) kernel /boot/kernel root=/dev/md3 И устанавливаем начальный загрузчик - причем на каждый девайс: # grub Probing devices to guess BIOS drives. This may take a long time. grub> root (hd0,0) grub> setup (hd0) grub> root (hd1,0) grub> setup (hd1) grub> quit Генерим локали: # nano -w /etc/locale.gen # locale-gen Отмонтируем всё, что монтировали и перегружаемся # exit # mount # umount много-много # reboot == Обновление системы == Если все получилось и система заработала - самое время обновить ее "до конца". Дело небыстрое, времени может занять много, но сделать нужно обязательно. # emerge --sync # emerge -uDNavf world # emerge -uDNav world Обновляем конфигурационные файлы: # dispatch-conf Обновляем perl, python, gcc, java, если у них были обновления: # perl-cleaner --all # python-updater # gcc-config -l # java-config --list-available-vms И проверяем динамические связи: # revdep-rebuild И вот система готова! Пройдет еще трое суток - и в ней можно будет работать. Такая уж это система - gentoo - просто конструктор. Кстати, берегите зрение - gentoo лучше, чем любая другая система, развивает анимализм и красноглазие. Но зато всё можно перебрать руками по буковкам и для тех, кто хочет все сделать сам - это самый подходящий вариант. Когда же у вас будет 10 серверов - то наверное, стоит присмотреться к CentOS или Ubuntu-Server - всё-таки в промышленных масштабах считать буковки попросту некогда. == Примечание == На искажение слов в статье прошу не обращать внимание. Автор от рождения косноязычен, а сегодня еще и измучен нарзаном после празднования НГ.
Linux/Windows Справочник v0.05 © 2007-2024 Igor Salnikov aka SunDoctor