Установка Red Hat 4.2

Если что-то, связанное с компьютерами, старше 3-х месяцев, то оно может считаться устаревшим и требует обновления. Так как у меня вряд ли найдется свободное время на обновление этого документа с каждой новой версией RedHat, то я постараюсь обновлять его, хотя бы через версию. Что касается остальных дистрибутивов, то, если авторы не вышлют мне обновления, то все останется как есть.

Что требуется

Я использовал:

Установка пакетов

Когда я впервые решил попробовать установить Red Hat на ZIP диск, я обнаружил, что намного проще использовать загрузочный диск Red Hat. Потом я очнулся. Тщательно разобрался с созданием загрузочного диска, спрашивал об этом даже у разных ребят с Red Hat, но в конце концов начал сдаваться, и в этот момент обнаружил ключ --root утилиты rpm.

Какие пакеты нужны

Я определил, какие пакеты нужны для инсталляции, посмотрев файл, найденный на одном из зеркал Red Hat. Он может быть найден на любом зеркале в
  redhat/redhat-4.2/i386/RedHat/base/comps

Я хотел включить в эту инсталляцию поддержку сети, но из-за того, что в Red Hat настройка сети выполняется из-под X, придется настраивать вручную скрипты из каталога /etc/sysconfig/ (см. раздел 4.3.3), по крайней мере попытаться.

Я решил не устанавливать пакеты для разработки программ, так как ZIP дисковод - довольно медленная штука для компилирования. Я так же решил не устанавливать X, в основном из-за места на диске. Позже я могу попробовать подмонтировать мой жесткий диск и создать символьную ссылку (symbolic link) на /usr, чтобы проверить, могу ли я заставить X работать.

Ниже приводится список установленных мной пакетов, в порядке установки. Помеченные знаком * были обновлены с Red Hat. В скобках приводятся номера обновленных пакетов.
например NetKit-B-0.09-6 был обновлен на NetKit-B-0.09-8, поэтому строка будет такой: *91) NetKit-B-0.09-6 (-8)

      (Список создан командой rpm --root /iomega -qa)

       1) setup-1.7-2                   2) pamconfig-0.51-2
       3) filesystem-1.3-1              4) MAKEDEV-2.2-9
       5) adduser-1.7-1                 6) libc-5.3.12-18
       7) SysVinit-2.64-8               8) ash-0.2-8
       9) at-2.9b-2                    10) libtermcap-2.0.8-4
      11) bash-1.14.7-1                12) bc-1.03-6
      13) bdflush-1.5-5                14) cpio-2.4.2-4
      15) cracklib-dicts-2.5-1         16) tmpwatch-1.2-1
      17) crontabs-1.5-1              *18) db-1.85-10 (-11)
      19) dev-2.5.1-1                  20) diffutils-2.7-5
      21) etcskel-1.3-1                22) file-3.22-5
      23) fileutils-3.16-1             24) findutils-4.1-11
      25) grep-2.0-5                   26) groff-1.10-8
     *27) ld.so-1.7.14-4 (-5)          28) getty_ps-2.0.7h-4
      29) gzip-1.2.4-7                 30) mingetty-0.9.4-3
     *31) initscripts-2.92-1 (93-1)    32) ed-0.2-5
      33) info-3.9-1                   34) ncurses-1.9.9e-4
      35) libg++-2.7.1.4-5            *36) pwdb-0.54-3 (-4)
      37) rootfiles-1.5-1             *38) pam-0.57-2 (-4)
      39) redhat-release-4.2-1         40) less-321-3
      41) mount-2.5l-2                 42) zlib-1.0.4-1
      43) rpm-2.3.11-1                 44) e2fsprogs-1.10-0
      45) sysklogd-1.3-15              46) tar-1.11.8-11
      47) passwd-0.50-7                48) gawk-3.0.2-1
      49) gdbm-1.7.3-8                 50) gpm-1.10-8
      51) hdparm-3.1-2                 52) kbd-0.91-9
      53) slang-0.99.37-2              54) newt-0.8-1
      55) kbdconfig-1.4-1              56) ncompress-4.2.4-7
     *57) sh-utils-1.16-4 (-5)         58) procinfo-0.9-1
     *59) logrotate-2.3-3 (4-1)        60) lilo-0.19-1
      61) losetup-2.5l-2               62) linuxthreads-0.5-1
     *63) mkinitrd-1.6-1 (7-1)         64) mailcap-1.0-3
     *65) man-1.4h-5 (j-1)             66) mt-st-0.4-2
      67) modules-2.0.0-5              68) mailx-5.5.kw-6
      69) net-tools-1.32.alpha-2       70) procmail-3.10-10
      71) procps-1.01-11               72) psmisc-11-4
      73) quota-1.55-4                 74) readline-2.0-10
      75) sed-2.05-6                   76) setconsole-1.0-1
      77) sendmail-8.8.5-4             78) shadow-utils-960530-6
      79) stat-1.5-5                   80) tcsh-6.06-10
      81) termcap-9.12.6-5             82) textutils-1.22-1
      83) time-1.7-1                   84) timeconfig-1.8-1
      85) util-linux-2.5-38            86) vim-4.5-2
      87) vixie-cron-3.0.1-14          88) which-1.0-5
      89) zoneinfo-96i-4               90) tcp_wrappers-7.5-1
     *91) NetKit-B-0.09-6 (-8)        *92) lpr-0.18-1 (19-1)
     *93) bind-4.9.5p1-2 (9.6-1)      *94) bind-utils-4.9.5p1-2 (9.6-1)
     *95) wu-ftpd-2.4.2b12-6 (b15-1)   96) anonftp-2.3-3
      97) zip-2.1-1                    98) unzip-5.12-5
      99) statserial-1.1-7            100) minicom-1.75-2
     101) lrzsz-0.12.14-1             102) dip-3.3.7o-9
     103) ppp-2.2.0f-3                104) portmap-4.0-3
     105) perl-5.003-8               *106) traceroute-1.0.4.4bsd-2 (1.4a5-1)
    *107) elm-2.4.25-7 (-8)           108) lynx-2.6-2 
     109) ncftp-2.3.0-5               110) pine-3.95-2
     111) rdate-0.960923-1            112) apache-1.1.3-3
    *113) nfs-server-2.2beta16-7     *114) nfs-server-clients-2.2beta16-7
          (2.2beta16-8)                    (2.2beta16-8)
После установки вышеприведенного списка у меня осталось свободными 32 МБ!

Обновления

Как знают (надеюсь) пользователи Red Hat, некоторые пакеты могут иметь ошибки, связанные с безопасностью (security), или что-то еще может заставить выпустить новую подверсию. Для таких случаев Red Hat выпускает обновления пакетов. Я обновил те пакеты, для которых имелись обновления, они отмечены в списке. Страничка Red Hat с информацией по обновлениям пакетов:

http://www.redhat.com/support/docs/rhl/rh42-errata-general.html

   ПРИМЕЧАНИЕ: Перед обновлением пакетов нужно запустить ldconfig, как описано в разделе 3.3.1.1.

Как устанавливать пакеты с помощью rpm; без glint

При использовании rpm для указания подмонтированных каталогов в качестве корня для установки, используйте ключ --root. Я обнаружил, что многие пакеты не устанавливаются, так их пред- или послеустановочные скрипты неправильно работали из-за смены корневого каталога, поэтому используем ключ --noscripts:

==> rpm --root /iomega -i --noscripts PACKAGE.i386.rpm

Как многие заметят, вы должны будете получить сообщение типа:
  failed to open /iomega/var/lib/rpm/packages.rpm

  error: cannot open /iomega/var/lib/rpm/packages.rpm
Просто создайте каталог var/lib/rpm :)

==> mkdir /iomega/var; mkdir /iomega/var/lib; mkdir /iomega/var/lib/rpm

Что было первым, pamconfig или pam?

Если кто-нибудь пробовал установить pamconfig, то он заметил, что этот пакет жалуется на отсутствие установленного pam; pam в свою очередь при попытке установки жалуется на отсутствие установленного pamconfig! Этот вопрос о яйце и курице, над которым я поломал голову некоторе время, решается с помощью ключа --nodeps - мы можем заставить pamconfig поставиться; pam зависит не только от pamconfig.

==> rpm --root /iomega -i --nodeps --noscripts pamconfig-0.51-2

Проблемы после установки пакетов

После того, как все замечательно установилось, диск все же не является рабочим. Я хочу сказать, что если вы попытаетесь загрузиться с дискеты, то далеко не уйдете. Как только init попытается запуститься, вы получите две замечательных ошибки - обе об отсутствии необходимых файлов, которые были бы найдены, если бы при установке пакетов запускались скрипты.

Случай отсутствия /etc/ld.so.cache и libc.so.5

Если вы пытались загрузиться, то получали две ошибки, первую об отсутствии файла /etc/ld.so.cache, вторую об отстутстуии libc.so.5.

/etc/ld.so.cache

Как указали многие читатели, мои прошлые указания не работали не совсем так, как мне хотелось. Чтобы этот файл создался, вам нужно запустить ldconfig с подмонтированным ZIP диском:

==> chroot /iomega /sbin/ldconfig

Благодарю Javier Rodriguez за это решение.

libc.so.5

Для решения проблемы отсутствия библиотеки вам нужно создать символьную ссылку (symlink), которая была бы создана автоматически при выполнении установочных скриптов.

==> cd /iomega/lib; ln -s libc.so.5.3.12 libc.so.5

Благодарю Darcy Boese за это решение.

Установка пароля root

Точно так же, как был запущен ldconfig, вы можете запустить passwd для смены пароля root в новой системе:

==> chroot /iomega passwd root

Что создает программа установки

       ПРИМЕЧАНИЕ: Это очень краткая настройка, которую я не имел возможности проверить. Теоретически она должна работать, но не жалуйтесь, пожалуйста, если она не работает.

Исследуя свой компакт-диск с Red Had 4.2 CD-ROM, я нашел кое-что интересное - исходные тексты программы установки. Они лежали в каталоге /midc/src/install. Один из файлов назывался net.c и в нем я обнаружил, какие файлы создаются при работе программы установки. Большиство этих файлов необходимо для работы в сети, но даже если у вас нет сетевой карты, можно использовать localhost для поддержки сети (плюс apache будет ругаться, что он не может определить имя хоста.) Список файлов:
      /etc/hosts
      /etc/HOSTNAME
      /etc/resolv.conf
      /etc/sysconfig/network
      /etc/sysconfig/network-scripts/ifcfg-eth0
      (or any other network device you may have.)

Настройка сети

При создании этого документа я хотел получить поддержку для моей сетевой карты 3Com 3c595 (которая последние семь месяцев стоит на другой машине.)

Во-первых, мне нужно было имя, и, так как у меня работает свой собственный сервер имен (name server) (но это уже другая история), я придумал себе имя: dash-dot.wig.org (мне нравится как это звучит). Имя без IP адреса бесполезно, и я взял адрес из подсети 192.168.10.0, зарезервированной для использования вне сети Internet, и поддерживаемой моим сервером имен. Хотя имя машины (hostname) обычно лежит в /etc/HOSTNAME, Red Hat также проверяет /etc/sysconfig/network, так что давайте начнем отсюда. Пример моего /etc/sysconfig/network:
  NETWORKING=yes
  HOSTNAME=dash-dot
  DOMAINNAME=wig.org
  GATEWAY=
  GATEWAYDEV=eth0
  NS1=192.168.10.7
Затем, в общем случае, копируем ту же информацию в /etc/HOSTNAME, /etc/resolv.conf и /etc/hosts:

/etc/HOSTNAME:

dash-dot.wig.org

/etc/resolv.conf:

search wig.org
nameserver ns.wig.org

/etc/hosts:

127.0.0.1 localhost
192.168.10.99 dash-dot.wig.org dash-dot
192.168.10.7  ns.wig.org ns
Red Hat настраивает все сетевые устройства с помощью скриптов, лежащих в /etc/sysconfig/network-scripts. Настройка скриптов обычно производится программой установки, поэтому мне придется делать все это вручную. Все они начинаются с ifcfg-XXX, где XXX - сетевой интерфейс, поднимаемый ifconfig; например ppp0, eth0 и т.п. В частности я создал файл ifcfg-eth0 со следующим содержимым:
  DEVICE=eth0
  ONBOOT=yes
  BOOTPROTO=none
  BROADCAST=192.168.10.255
  NETWORK=192.168.10.0
  NETMASK=255.255.255.0
  IPADDR=192.168.10.99
И последнее. Чтобы проверить правильность настройки, пока мы находимся в каталоге /etc/sysconfig/network-scripts, запустите:

==> ./ifup ifcfg-eth0 boot

Эта команда выполняет скрипт, поднимающий сетевой интерфейс, настроенный на запуск при загрузке системы.

Для дополнительной информации смотрите документ NET-3-HOWTO.