Linux Slackware Энциклопедия от А до Я
Сайт посвящен свободно распространяемому ПО и Linux Slackware в частности.
Разделы:
Раздел/Тема
Главная -> Установка -> Установка по сети. Экстрим по-русски. Часть II. NFS.
Это продолжение первой части "Установка по сети. Экстрим по-русски. Часть I. Live-CD.", где было рассказано о создании Live-CD на основе первого диска дистрибутива Slackware 10.0. У кого еще нет этого дистрибутива, могут приобрести недавно вышедший (06.02.2005) релиз версии 10.1, а скачивать лучше с mirror-серверов. Принципиальных различий между этими релизами нет, просто обновление версий входящего ПО до текущих стабильных, однако это уже почти 11я, которая будет основана на ядре 2.6. Поэтому уже в 10.1 можно попробовать 2.6.10 (в 10.0 было 2.6.7). По-умолчанию же будет 2.4.29, которое успело хорошо себя зарекомендовать. Здесь проведу маленький ликбез как пользоваться созданным диском или обычным, без разницы. Главное, что установка сетевая, т.е. все пакеты физически расположены на другом компьютере, откуда мы и будем их брать. Сразу отвечу зачем нужны такие сложности и почему просто не поставить с диска. Все дело в волшебных пузырьках. Если у вас есть локальная сеть и приходится периодически устанавливать linux на новые машины, или обновлять устаревшие пакеты на существующих, то ИМХО, желательно иметь сервер, с синхронизированным с ftp.slackware.com текущим slackware-current. Пускай на сервере происходит синхронизация, скажем раз в месяц. Тогда мы с вами всегда будем иметь самую свежую Шлаку и устанавливать десятку нет никакого смысла.
NFS
Сетевая файловая система - так расшифровывается NFS. Это аналог сетевых дисков Windows, которые с успехом организуются в Linux при помощи Samba. Учитывая, что Windows машин гораздо больше чем Linux-овых можно было бы организовать именно SMB-сервер. NFS выбрана по нескольким причинам. Во-первых, это родная для Linux FS и в отличие от SMB она не корежет права доступа, группы и владельцев. Во-вторых, поддерживается инсталятором Slackware. И в-третьих, проще в настройке и эксплуатации. Никто не мешает нам поставить потом еще и Samba для наших друзей, просто каждая программа имеет свой функционал. Для начала, создадим на сервере директорию и скопируем туда все файлы и папки со всех имеющихся дисков дистрибутива Slackware. Предположим, что это будет /home/ftp/pub/distr/slackware/slackware-current. Затем делаем синхронизацию с current любым доступным способом (от ручного сравнения с slackware-current на ftp.slackware.com до rsync), хотя этот шаг можно сделать и попозже или не делать вообще если интернет в дефиците или предпочитаете использовать только стабильные релизы. Далее на сервере установим и запустим NFS. gena@gena:/:$ su Password: root@gena:/:# installpkg \ > /home/ftp/pub/distr/slackware/slackware-current/slackware/n/\ > nfs-utils-1.0.7-i486-1.tgz Installing package nfs-utils-1.0.7-i486-1 ([optional])... PACKAGE DESCRIPTION: nfs-utils: nfs-utils (Network File System daemons and utilities) nfs-utils: nfs-utils: The nfs-utils package contains the necessary daemons and utilities to nfs-utils: run an NFS server on Linux. nfs-utils: nfs-utils: You'll also need the portmap package to use NFS. nfs-utils: Executing install script for nfs-utils-1.0.7-i486-1... root@gena:/:# Как видно, нужен еще и portmap. Ставим если еще нет в системе. Теперь настроим. Для этого правим /etc/exports root@gena-vmw:~# vi /etc/exports reading /etc/exports wrote /etc/exports, 6 lines, 215 chars root@gena-vmw:~# cat /etc/exports # See exports(5) for a description. # This file contains a list of all directories exported to other computers. # It is used by rpc.nfsd and rpc.mountd. /home/ftp/pub/distr/slackware/slackware-current/ *(ro,sync) Эта строчка сделает доступной данную директорию для всех в режиме только чтение. За расширенными опциями отправляю вас к man exports. Теперь запускаем сервер и проверяем. root@gena-vmw:~# /etc/rc.d/rc.nfsd start Starting RPC portmapper: /sbin/rpc.portmap Starting NFS services: /usr/sbin/exportfs -r /usr/sbin/rpc.rquotad /usr/sbin/rpc.nfsd 8 /usr/sbin/rpc.mountd /usr/sbin/rpc.lockd /usr/sbin/rpc.statd root@gena-vmw:~# root@gena-vmw:~# mkdir /mnt/nfs root@gena-vmw:~# mount -t nfs -o nolock \ > localhost:/home/ftp/pub/distr/slackware/slackware-current/ /mnt/nfs/ root@gena-vmw:~# ls -a /mnt/nfs/ ./ COPYING isolinux/ SPEAK_INSTALL.TXT ../ COPYRIGHT.TXT kernels/ SPEAKUP_DOCS.TXT bootdisks/ CRYPTO_NOTICE.TXT PACKAGES.TXT testing/ BOOTING.TXT CURRENT.WARNING rootdisks/ UPGRADE.TXT ChangeLog.txt FAQ.TXT slackware/ CHECKSUMS.md5 FILELIST.TXT Slackware-HOWTO CHECKSUMS.md5.asc GPG-KEY source/ root@gena-vmw:~# umount /mnt/nfs/ root@gena-vmw:~# ls -a /mnt/nfs/ ./ ../ root@gena-vmw:~#
Bugfix
Работает. Теперь займемся делом. Достаем приготовленный накануне диск (читай предыдущую статью) и ... перекладываем его подальше. Сейчас объясню. Дело в том, что когда писалась первая часть, я не мог предположить, что будут проблемы, т.к. проверял работу NFS. Однако, при попытке воспользоваться плодами своего труда была обнаружена маленькая недоработка в установочном скрипте /usr/lib/setup/INSNFS. Этот файл находится внутри образа initrd.img в директории isolinux/ первого диска. В первой части статьи мы распаковывали его в ~/iso/initrd. Как нетрудно догадаться скрипт отвечает за монтирование папки на удаленном NFS-сервере. Может конечно так и задумано, но в результате воспользоваться инсталлятором setup для установки через NFS не получится. Процесс прерывается на этапе выбора пакетов из-за 152 строчки в упомянутом скрипте. echo "/var/log/mount" > $TMP/SeTDS Аналогичная строчка в /usr/lib/setup/INSCD выглядит так: echo "/var/log/mount/slackware" > $TMP/SeTDS И как известно - работает. Подобная ситуация, вероятно, возникнет и при выборе установки из подмонтированной (premount) папки из-за того, что в соответствующем скрипте также не хватает "/slackware". Причем в новом релизе 10.1 тоже самое. Возможно это сделано из-за того, что структура директорий может быть отличной от принятой на CD. Но в этом случае в setup можно лишь вручную выбирать tagfiles, что очень утомительно. Становятся неработоспособными режимы "full", "menu" и другие. Поэтому предлагаю подправить скрипт на манер INSCD и заново создать iso.img. Вот исправленный вариант INSNFS. Кстати, подправить этот скрипт можно даже не переделывая диск. Просто загрузитесь с него и выполните: root@slackware:~1 vi +152 /usr/lib/setup/INSNFS Если еще не знаком с этим редактором, обязательно прочти про vi, а то не сможешь даже выйти из него ;). Изменения сохрани (:wq), пусть не смущает тебя тот факт, что загрузился ты с болванки (да простят меня продвинутые за такое разжевывание). Аналогично можно поступить и с официальным установочным диском Slackware. В самом деле, не переделывать же его из-за одной строчки!
Загружаемся
Вставляем новый диск в новую машину и грузимся. Контроль ведем по пингу с сервера. Как только новая машина начнет откликаться, можно запускать ssh и конектиться. Здесь и далее IP адрес, прописанный на загрузочном CD 192.168.52.100 (slackware), а IP адрес машины, на которой мы запустили NFS-сервер 192.168.52.1 (gena). gena@gena:~:$ ping 192.168.52.100 PING 192.168.52.100 (192.168.52.100) 56(84) bytes of data. 64 bytes from 192.168.52.100: icmp_seq=29 ttl=64 time=7.00 ms 64 bytes from 192.168.52.100: icmp_seq=30 ttl=64 time=0.330 ms 64 bytes from 192.168.52.100: icmp_seq=31 ttl=64 time=0.344 ms 64 bytes from 192.168.52.100: icmp_seq=32 ttl=64 time=0.139 ms --- 192.168.52.100 ping statistics --- 32 packets transmitted, 4 received, 87% packet loss, time 31000ms rtt min/avg/max/mdev = 0.139/1.954/7.003/2.916 ms gena@gena:~:$ ssh root@192.168.52.100 The authenticity of host '192.168.52.100 (192.168.52.100)' can't be established. RSA key fingerprint is 2d:fb:c4:4d:10:00:7f:06:fb:4e:db:a2:63:b3:f6:df. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.52.100' (RSA) to the list of known hosts. root@192.168.52.100's password: Linux 2.4.26. If you're upgrading an existing Slackware system, you might want to remove old packages before you run 'setup' to install the new ones. If you don't, your system will still work but there might be some old files left laying around on your drive. Just mount your Linux partitions under /mnt and type 'pkgtool'. If you don't know how to mount your partitions, type 'pkgtool' and it will tell you how it's done. To partition your hard drive(s), use 'cfdisk' or 'fdisk'. To activate PCMCIA/Cardbus devices needed for installation, type 'pcmcia'. To activate network devices needed for installation, type 'network'. To start the main installation, type 'setup'. root@slackware:~1 И вот мы уже в системе. Начинаем ставить как обычно (читай статью "Загрузка с CD Slackware 10.0. \\ Пошаговая инсталляция."). Для начала разобъем диск с помощью cfdisk. Disk Drive: /dev/hda Size: 1073741824 bytes, 1073 MB Heads: 64 Sectors per Track: 63 Cylinders: 520 Name Flags Part Type FS Type [Label] Size (MB) ------------------------------------------------------------------------------ hda1 Primary Linux swap 128.00 hda2 Boot Primary Linux 900.08 hda3 Primary Linux 45.42 [Bootable] [ Delete ] [ Help ] [Maximize] [ Print ] [ Quit ] [ Type ] [ Units ] [ Write ] Disk has been changed. program without writing partition table Reboot the system to ensure the partition table is correctly updated.
Setup
Запустив setup и дойдя до пункта 5 (читай упомянутую статью), выбираем не 1, а 3 - Install from NFS. Вводим свой IP 192.168.52.100, маску оставляем 255.255.255.0, шлюз на ваше усмотрение (мой выбор No). Далее вводим IP NFS-сервера 192.168.52.1, затем директорию /home/ftp/pub/distr/slackware/slackware-current. We'll switch into text mode here so you can see if you have any errors. Configuring ethernet card... Running /sbin/rpc.portmap... Mounting NFS... Current mount table: /dev/fd2 on / type ext2 (rw) proc on /proc type proc (rw) usbfs on /proc/bus/usb type usbfs (rw) /dev/hda2 on /mnt type ext3 (rw) /dev/hda3 on /mnt/tmp type reiserfs (rw) 192.168.52.1:/home/ftp/pub/distr/slackware/slackware-current on /var/log/mount type nfs (ro,nolock,addr=192.168.52.1) (If you see errors above and the mount table doesn't show your NFS server, then try setting up NFS again) Do you need to try setting up NFS again ([y]es, [n]o)? n Здесь нас спрашивают, видим ли мы в списке нашу папку на удаленном сервере и если нет, то отвечаем "yes" и пытаемся заново примонтировать ее, а если все ок, то "no" и идем дальше. Если вы последовали моему совету и исправили скрипт, то все последующие шаги пройдут как и раньше, поэтому повторяться не буду. Если же нет, то придется помучиться. Установка в минимальной конфигурации из почти 50 пакетов заняла около 100 Мб. Был выбран тип установки "menu", отмечена серия "A" и выбран только kernel-ide. Для простенького WEB-сервера "A", "AP", "D", "L" и "N".
"A" kernel-ide, infozip
"AP" diffutils, sudo, vim
"D" perl
"L" libtermcap, readline
"N" apache, iptables, links, nmap, openssh, mod_ssl, php, sendmail, wget, tcpip.
Выбор пакетов проводился из соображений обеспечения минимальной функциональности + мои предпочтения. Итого 65 пакетов и 177 Мб дискового пространства. Неплохо?
После инсталляции возможно сообщат, что диск маловат и установка дополнительных пакетов будет проблематична. Пропускаем это мимо ушей, а на предложение конфигурации ответим утвердительно. Выбор ядра пропустим - skip, создание загрузочной дискеты на ваше усмотрение, модем пока не предусмотрен, hotplug включать тоже не стал. Lilo поставил как обычно в режиме expert со стандартной консолью, записью в MBR на /dev/hda, без таймаута. Linux partition /dev/hda2, name=linux, после чего жму Install Lilo. Далее настраиваем сеть. Указываем
имя машины: gena2
домен: .
static IP: 192.168.52.101
netmask: 255.255.255.0
gateway: 192.168.52.1
nameserver:
Далее в меню Startup services отмечаю все. Задаю пароль root.
Вот пожалуй и все. Вынимаем CD и набираем reboot.
Апофеоз:
gena@gena:~:$ ssh root@192.168.52.101 The authenticity of host '192.168.52.101 (192.168.52.101)' can't be established. RSA key fingerprint is b8:92:ad:8e:6d:c8:20:01:24:23:a6:c4:7b:a3:84:80. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.52.101' (RSA) to the list of known hosts. root@live-cd's password: Last login: Sat Feb 19 20:47:53 2005 Linux 2.4.29. root@gena2:~# В следующий раз будем настраивать это хозяйство. Научимся удаленно обновлять ядро и пакеты, доустанавливать их, а также рассмотрим аварийную ситуацию - поднятие упавшего сервера, для чего опять воспользуемся нашим Live-CD. Gena 19.02.2005