Если что-то, связанное с компьютерами, старше 3-х месяцев, то оно может считаться устаревшим и требует обновления. Так как у меня вряд ли найдется свободное время на обновление этого документа с каждой новой версией RedHat, то я постараюсь обновлять его, хотя бы через версию. Что касается остальных дистрибутивов, то, если авторы не вышлют мне обновления, то все останется как есть.
Я использовал:
Ядро 2.0.30
Дисковод Iomega, подключаемый к параллельному порту
Red Hat 4.2
Когда я впервые решил попробовать установить 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) |
Как знают (надеюсь) пользователи Red Hat, некоторые пакеты могут иметь ошибки, связанные с безопасностью (security), или что-то еще может заставить выпустить новую подверсию. Для таких случаев Red Hat выпускает обновления пакетов. Я обновил те пакеты, для которых имелись обновления, они отмечены в списке. Страничка Red Hat с информацией по обновлениям пакетов:
http://www.redhat.com/support/docs/rhl/rh42-errata-general.html
ПРИМЕЧАНИЕ: Перед обновлением пакетов нужно запустить ldconfig, как описано в разделе 3.3.1.1. |
При использовании 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 |
==> mkdir /iomega/var; mkdir /iomega/var/lib; mkdir /iomega/var/lib/rpm
Если кто-нибудь пробовал установить 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.
Как указали многие читатели, мои прошлые указания не работали не совсем так, как мне хотелось. Чтобы этот файл создался, вам нужно запустить ldconfig с подмонтированным ZIP диском:
==> chroot /iomega /sbin/ldconfig
Благодарю Javier Rodriguez за это решение.
Для решения проблемы отсутствия библиотеки вам нужно создать символьную ссылку (symlink), которая была бы создана автоматически при выполнении установочных скриптов.
==> cd /iomega/lib; ln -s libc.so.5.3.12 libc.so.5
Благодарю Darcy Boese за это решение.
Точно так же, как был запущен 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:
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 |
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 |
==> ./ifup ifcfg-eth0 boot
Эта команда выполняет скрипт, поднимающий сетевой интерфейс, настроенный на запуск при загрузке системы.
Для дополнительной информации смотрите документ NET-3-HOWTO.