Мини-HOWTO: Обновление версии вашего дистрибутива Linux

Greg Louis

Перевод: Станислав Рогин, ASPLinux

Аннотация

Советы и подсказки, касающиеся обновления версии дистрибутива Linux.


Содержание
ВАЖНО!!! Ответственность и Copyright
Авторские права
Изменения, по сравнению с версией 1.1
Введение
Записывайте все, что делаете.
Сделайте полную резервную копию вашей работающей системы.
Создайте резервную копию каталога /etc и его подкаталогов на флоппи диске (-ах).
Сделайте отдельные копии групп файлов, которые вы хотите сохранить.
Приготовьте загрузочный и корневой флоппи для установки.
Отформатируйте флоппи диски для временного и окончательного варианта ядер.
Запретите вход в систему и сделайте копию каталогов /root и /home.
Загрузите новую систему с новых инсталляционных флоппи-дисков.
Удалите Linux-разделы на диске и создайте их вновь.
Запустите инсталляцию Linux.
В новой системе, загруженной с жесткого диска, исправьте файл /etc/fstab
Восстановите данные конфигурации в каталог /etc и его подкаталоги.
Настройте и соберите ядро Linux.
Восстановите файлы из ранее сделанных резервных копий.
Пересмотрите настройки систем безопасности.
Разрешите вход в систему.
Извините, но я повторюсь:
Благодарности

ВАЖНО!!! Ответственность и Copyright

Процедура, о которой ведется речь в данном руководстве, чрезвычайно опасна для информации и программ, хранящихся на вашем компьютере. Всю ответственность за производимые действия вы берете на себя. Описанные здесь процедуры работали на компьютере автора, но нет никакой гарантии, что они будут работать и у вас. Вы используете информацию из данного руководства по собственному желанию, и автор не будет нести никакой ответственности за повреждения или неисправности, возникшие в результате применения руководства.

This document is copyright 1996, Dynamicro Consulting Limited, and is released under the terms of the GNU General Public License. This basically means that you may copy and modify it at will, but may not prevent others from doing likewise.

Авторские права на этот документ интерпретируются по GNU General Public License. В общем, это означает, что вы можете размножать и изменять этот документ по желанию. Комментарии и вопросы отправляйте автору по почте. В особенности это поможет при создании последующих версий этого документа.


Авторские права

Авторские права на русский перевод этого текста принадлежат ╘ 2000 ASPLinux Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: или к координатору русского перевода Linux HOWTO компании ASPLinux по адресу


Изменения, по сравнению с версией 1.1


Введение

Как низвергнуть и воскресить ваш Linux!

Цель этого документа - предложить вам набор подсказок, которые могут помочь в процессе полной переустановки системы. Это ни в коем случае не рецептурник для чайников; однако, я надеюсь, что этот труд послужит вам некоторого рода путеводителем, заставив о чем-то поразмыслить, а также предложит порядок действий. Он наверняка бы помог мне, если бы кто-нибудь другой написал что-то подобное до того, как я сделал свой первый апгрейд (upgrade); поэтому я надеюсь помочь вам, если у вас есть планы перестройки Linux.

Однако, не пытайтесь воспринимать этот текст, как библию - ваши действия могут отличаться от моих. Даже названия каталогов могут сильно различаться от тех, которые есть у вас; некоторые люди, например, используют /usr/home вместо /home; некоторые называют его /u, а некоторые (держитесь крепче! :) даже помещают каталоги пользователей прямо в каталог /usr! Я не могу знать настроек вашей системы, поэтому использую те названия, которые есть на моей машине.

Также вы можете заметить, что я использовал дистрибутивы Slackware, и я предполагаю, что у вас достаточно ОЗУ и места на жестком диске для установки исходных текстов, и сборки собственного ядра. Если ваша система сильно отличается от приведенной в примерах, то некоторые мои рекомендации будут неприменимы; но я надеюсь, что вы сможете понять общие принципы, которые помогут вам в процессе перестройки.


Почему это кому-то может понадобиться?

Хороший вопрос! Если этого можно избежать, избегайте! (Это единственная самая главная рекомендация в данном руководстве!!!) Но бывают случаи, когда вам все-таки придется это сделать.

Например, я установил жесткий диск на 4 Гб и затем выяснил, что дистрибутив Slackware 2.0 Vintage Linux не мог себе представить, что диски бывают больше 2 Гб, и начались ужасные проблемы. Поэтому мне пришлось переходить на новый тогда Slackware 2.3. Тот апгрейд был жутко изнурительным экспериментом, и стал, частично, причиной написания этого документа. Я, практически, все делал неправильно, и только везение и наличие другой Linux-машины рядом спасли меня от катастрофы.

В качестве другого примера можно вспомнить, что мне так и не удалось собрать ядро серии 1.3 в свежем дистрибутиве Slackware 2.3 (на другой машине; не той, которую я мучил в предыдущем примере). Я достал свои сбережения, купил Slackware 3.0 на CDROM и перешел на ELF. В этот раз переустановка прошла проще, частично благодаря предыдущему горькому опыту. В результате это все и послужило источником многих идей, которые я здесь опишу.


Обязательно ли "разрушать до основания, а затем..."

Это надежнее, хотя и немного грубовато... Если вы установите новый дистрибутив поверх старого, то существуют шансы получить смесь старых и новых программ, конфигурационных файлов, и, скорее всего, полностью запутаться, пытаясь разобраться. Полная очистка системы и установка затем только того, что необходимо - немного крутовато, но очень эффективно для получения хорошего результата. (Конечно здесь идет разговор о переустановке всего дистрибутива Linux, а не об обновлении пары-тройки пакетов! Лучший способ избежать полной переустановки - это отслеживать только некоторые изменения, особенно gcc, вместе с его библиотеками, и binutils, и своевременно обновлять их версии. Если то, что вы используете, более-менее современно, и вы можете поддерживать версии, своевременно обновляя их по мере надобности, собирая и компилируя новые пакеты, то нет никакой необходимости в массовой переустановке.)

Как заметил Patrick Volkerding (тоже сторонник процедуры очистки-переустановки), установка ELF главным в существующей a.out-системе - это рецепт от многих проблем; по крайней мере, если вы знаете достаточно, чтобы попробовать это - то вам этот документ не нужен!

Даже без последнего замечания ясно, что строить проще с нуля.


Много ли времени это все займет?

Это, конечно, зависит от степени сложности настроек вашей системы. Но я выяснил, что удачная переустановка (про неудачную не спрашивайте!) занимает примерно столько: 10 часов на создание резервных копий, 6 часов - установка системы до момента разрешения входа в систему и еще полдня или около того на восстановление менее важных вещей. Со временем всплывали небольшие недоделки - я их исправлял по мере нахождения - но 20 часов в общей сложности должно хватить на полный процесс переустановки. Возможно эта цифра будет меньше при установке с жесткого диска (я использовал CDROM), или больше - при установке с флоппи-дисков. Процесс конечно завершится быстрее на Pentium-е, и, естественно, медленнее на 386. Думайте сами.

Итак, что-то мы задержались на введении. Ниже я опишу, как подготовиться к тому, на что вы решились. Вооружитесь мужеством, стойкостью, страхом или чем-то еще, и:


Записывайте все, что делаете.

Очень важно иметь полный подробный журнал всех ваших действий в процессе приготовлений и переустановки. Особенно важно иметь список всех резервных копий, которые вы собираетесь сделать при приготовлениях к очистке системы.


Сделайте полную резервную копию вашей работающей системы.

В общем случае резервные копии делаются на носителях с последовательным доступом. Поэтому эта полная копия не пригодится вам для восстановления отдельных файлов - в ней слишком много лишнего. Лучше, в дополнение к полной копии, создать небольшие копии отдельных сегментов системы, которые будут восстанавливаться в новой системе полностью. Примерный список я приведу позже.

Тогда зачем же нужна полная копия? Две основных причины: первая - в случае полного падения новой системы необходимо оставить возможность возврата к началу с минимальными потерями. Вторая - как бы вы ни готовились к установке, существует очень большая вероятность того, что пара-тройка важных файлов будет забыта в процессе отдельного копирования. Если так, то неудобства с восстановлением этих файлов из полной резервной копии, в любом случае, лучше проблем с их потерей.

Для сохранения сил и времени, в том случае если у вас все еще есть старый дистрибутив, вы можете сделать копию только тех файлов, у которых mtime (время модификации) или ctime (время создания) более поздние, чем дата выпуска этого дистрибутива.


Создайте резервную копию каталога /etc и его подкаталогов на флоппи диске (-ах).

Тут причины немножко другие: вы не будете восстанавливать эти файлы (по крайней мере, большинство из них); но вы можете сравнить эти файлы с новыми, созданными в процессе установки. Зачем? В новых файлах могут быть данные, отсутствующие в старых; или что-то может быть сделано по-новому. Изменения в протоколах, добавление новых средств, применение новых функций в существующих утилитах могут привести к изменению формата конфигурационных файлов и загрузочных скриптов из дерева каталогов /etc, и, скорее всего, вам придется вносить ваши старые настройки в эти новые форматы, одновременно используя улучшения и дополнения.


Сделайте отдельные копии групп файлов, которые вы хотите сохранить.

Эта часть процесса может наиболее сильно различаться на разных системах, и максимум того, чем я могу помочь - это описать то, что я сделал на своей системе, в надежде хоть как-нибудь указать вам суть действий. В общем случае вам придется смотреть в каждый каталог, содержащий

и выделить только те файлы, которые вы хотите сохранить.

(Другая возможная стратегия состоит в том, чтобы сделать копию файлов с более поздними mtime или ctime, чем дата старого дистрибутива, и, затем восстановить необходимые файлы с этой копии. Если вы решитесь придерживаться этого способа, то помните, что новый дистрибутив может содержать более новые файлы, чем те, что вы сохранили.)

В моем случае, я остановился на создании .tgz-файлов для следующих каталогов:

С моей машиной все было более-менее просто, так как в каталоге spool не было важных файлов. У меня не был запущен сервер новостей, и из-за того, что у меня на машине всего два пользователя, я просто заставил их прочитать почту до ее уничтожения. В противном случае необходимо также скопировать каталог /var/spool (в последний момент) И, конечно, не забудьте про библиотеки сервера новостей и его настройки.


Приготовьте загрузочный и корневой флоппи для установки.

Описание того, как это сделать, должны быть приведены в руководстве по установке вашего дистрибутива.


Отформатируйте флоппи диски для временного и окончательного варианта ядер.

Вам понадобятся 2 диска, по одному на каждое ядро.

После всех этих приготовлений вы готовы к Большому Делу. Следующие шаги уничтожат старую систему.


Запретите вход в систему и сделайте копию каталогов /root и /home.

Это последнее, что надо сделать в старой системе до ее полного уничтожения. Этот шаг делается последним, чтобы сохранить наиболее актуальную информацию пользователей.


Загрузите новую систему с новых инсталляционных флоппи-дисков.


Удалите Linux-разделы на диске и создайте их вновь.

В руководстве по установке должно быть описано, как это сделать - это уничтожит старую систему. С этого момента вы зависите от качества резервных копий, сделанных ранее! Вас предупреждали!


Запустите инсталляцию Linux.

Существует много хороших описаний, как это сделать, поэтому я не буду на этом останавливаться. Продолжайте чтение с того момента, когда ваша система сможет загружаться самостоятельно с жесткого диска.

Однако, вместе с тем, запаситесь загрузочным флоппи-диском, так как ядро, установленное дистрибутивом, будет заменено новым, и в процессе этой замены могут возникнуть проблемы. Не забудьте установить пакеты разработки и исходные тексты ядра.


В новой системе, загруженной с жесткого диска, исправьте файл /etc/fstab

и добавьте в него свой раздел подкачки. После этого запустите команду "swapon -a". Я не знаю почему, но установка Slackware не делает этого, если раздел подкачки уже существует. Если этого не сделать, то при загрузке новой системы скрипт rc.S пытается включить подкачку, не находит раздел, и подкачка не включается. Вышеописанные действия это исправляют.


Восстановите данные конфигурации в каталог /etc и его подкаталоги.

Как было описано выше, нельзя просто скопировать все старые файлы в каталог /etc и надеяться, что все заработает. С некоторыми файлами это, конечно, получится; например с /etc/XF86Config (если вы используете ту же версию Xfree86, и ту же видеокарту, что и в старой системе). В большинстве случаев лучше использовать diff для сравнения старых и новых файлов до начала копирования. Обратите особенное внимание на различия файлов в каталоге /etc/rc.d потому, что может понадобиться ручное создание файлов конфигурации, вместо копирования старых скриптов из резервной копии. После того, как все будет завершено, перезагрузитесь.


Настройте и соберите ядро Linux.

Даже в том случае, если ядро в новом дистрибутиве содержит все необходимые вам драйверы, лучше пересобрать ядро, чтобы избавиться от того огромного количества лишних драйверов и функций, встроенных в универсальные ядра. За подробной информации обращайтесь к документу "HOWTO: Ядро" (Kernel HOWTO). Сначала установите новое ядро на флоппи-диск, убедитесь, что оно нормально работает, и только в этом случае установите его на жесткий диск, запустите lilo и перезагрузитесь.


Восстановите файлы из ранее сделанных резервных копий.

Некоторые программы придется переустановить из старых каталогов исходных текстов; мне, например, пришлось это проделать с lilo, потому что моя версия была новее той, что встроена в новый дистрибутив Slackware, и я не решился сохранять программы из каталога /sbin. Вам, наверное, придется проверить восстановленные программы на предмет наличия и правильности конфигурационных файлов, библиотек и т.п. Иногда придется восстанавливать некоторые вещи в определенном порядке, но вы конечно все это отметили еще при сохранении резервных копий, не так ли? ;-)


Пересмотрите настройки систем безопасности.

Проверьте правильность установок разрешений на файлах и каталогах. Я выяснил, что Slackware - система немного более открытая, чем мне это нравится, поэтому я поменял 755 на 711 для программ в каталогах .../bin и т.п.. И даже проставил 700 в .../sbin. Особенно осторожным в этом вопросе надо быть, если у вас установлен ftp-сервер, но, конечно, если он есть, то вы уже позаботились о разрешениях и запретах... :)


Разрешите вход в систему.

У вас все настроено и работает. В течение некоторого времени, конечно, придется подчищать хвосты, но основная часть работы уже сделана. Наслаждайтесь!


Извините, но я повторюсь:

ИСПОЛЬЗУЙТЕ ЭТУ ИНФОРМАЦИЮ НА СВОЙ СТРАХ И РИСК!

(Смотрите раздел "Ответственность" в начале этого документа.)


Благодарности

Большое спасибо Zoltan Hidvegi за сотрудничество при создании этого документа.