Установка Linux на ZIP диск с помощью ZIP дисковода, подключаемого к параллельному порту |
---|
Пред. | | След. |
Установка 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:
/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.