Назад | Вернуться к оглавлению. | Далее |
17. Несколько ОС на одном компьютере или загрузка ОС по выбору
|
Большинство из тех, кто начинает осваивать Линукс, являются уже опытными пользователями ОС Windows, чаще всего Windows 95 или 98. Действительно, пока еще вряд ли Линукс можно назвать той операционкой, с которой пользователь начинает свое знакомство с компьютером. И, естественно, если пользователь раньше работал с ОС Windows и решил поэкспериментировать с Линукс, то ему не хочется терять свою привычную среду и все, что было наработано, настроено и отлажено под Windows. К счастью, терять и не обязательно, потому что на одном компьютере вполне могут ужиться две и даже больше ОС (хватило бы места на диске!). Я расскажу в этом разделе о том, каким образом можно установить две и более ОС на одном компьютере.
Материал этого раздела основан на нескольких mini-HOWTO-руководствах, расположенных в /usr/doc/HOWTO/mini/Linux+{другая ОС} и некоторых материалах, опубликованных в Интернет. Список источников смотри в разделе 17.8.
Однако, прежде чем приступить к экспериментам по установке Линукс как второй ОС, очень рекомендую принять некоторые меры предосторожности. Дело в том, что Вам, возможно, придется произвести переразбиение диска, изменить загрузочные записи и поэкспериментировать с загрузочными и конфигурационными файлами. Все эти действия далеко не безобидны и результатом может стать то, что компьютер вообще перестанет загружаться. Сумеете ли Вы восстановить после этого всю нужную Вам информацию с диска - это еще вопрос. Мой опыт говорит о том, что оказаться в такой ситуации очень легко.
Поэтому, во-первых, необходимо изготовить загрузочную или спасательную дискету для Вашей старой системы (если Вы этого еще не сделали). Во-вторых, стоит сохранить все ценную для Вас информацию, наработанную в старой системе (сделать back-up всех ценных файлов). И, в-третьих, подготовить (разыскать, запасти) комплект установочных файлов для Вашей старой системы (я, думаю, для Линукс Вы такой комплект приготовили).
И еще одна важная рекомендация: если что-то пошло не так, не паникуйте. Могу поделиться своим печальным опытом: когда я первый раз устанавливал Линукс на компьютере, на котором стояла Windows NT, я быстренько потерял возможность ее загружать, и, не разобравшись в ситуации, посчитал, что ничего другого не остается, как отформатировать диск и установить все заново. Теперь-то я понимаю, что мог бы все восстановить, если бы не принял поспешного решения. Поэтому могу Вас уверить, что Вернер Альмесбергер прав, когда в своем руководстве по загрузчику LILO дает следующие советы тому, кто оказался в затруднительной ситуации:
После того, как необходимые меры предосторожности приняты, необходимо решить, каким образом Вы будете осуществлять много-вариантную загрузку, и подготовить диск к установке нескольких ОС, для чего разбить его на соответствующее число разделов (partition). Но прежде, чем перейти к конкретным процедурам подготовки диска, надо хотя бы кратко рассмотреть устройство диска и процедуры загрузки ОС, чтобы не вклинивать теоретические вопросы и объяснения в изложение конкретных процедур. У кого не хватает терпения на чтение этих теорий, тот может пропустить их и перейти сразу к вопросу о выборе программы-загрузчика.
Диски являются блочными устройствами, то есть считывание и запись информации производится блоками и минимальный размер блока равен одному сектору (512 байт). Для того, чтобы записать информацию на диск, надо "позиционировать головку", то есть указать контроллеру, в какой сектор эту информацию записать. Сектора как раз адресуются путем указания номера цилиндра, номера считывающей головки (или дорожки) и порядкового номера сектора на дорожке.
Таблица разделов содержит 4 записи по 16 байт для 4 разделов, которые называют первичными. Каждая запись имеет следующую структуру:
struct partition { char active; /* 0x80: раздел активный (загрузочный), 0: не активный */ char begin[3]; /* CHS первого сектора */ char type; /* тип раздела (например, 83 - LINUX_NATIVE, /* 82 - LINUX_SWAP, 85 - LINUX_EXTENDED) */ char end[3]; /* CHS последнего сектора */ int start; /* 32-битовый номер начального сектора (счет начинается с 0) */ int length; /* число секторов в разделе (32 бита) */ };(где CHS означает Cylinder/Head/Sector).
Таблица разделов диска создается обычно с помощью программы fdisk. В ОС Linux имеется как стандартная программа fdisk (которая, впрочем, существенно отличается от программы fdisk в MS-DOS и Windows), так и еще две программы для работы с разделами диска: cfdisk и sfdisk. Программа cfdisk, как и fdisk, предназначена для работы с таблицей разделов диска: она не обращает никакого внимания на информацию, которая уже имеется на диске. Отличается она только несколько более удобным интерфейсом, предоставляющим пользователю не просто подсказку по командам, а систему меню. Программа sfdisk обладает несколько более широкими возможностями, в частности, она позволяет произвести некоторые операции над существующими разделами диска.
DOS использует поля begin и end таблицы разбиения диска и функции прерывания 13 BIOS (Int 13h) для доступа к диску, и поэтому не может использовать диски объемом более 8.4 ГБ, даже с новым BIOS (об этом будет рассказано ниже), а разделы не могут быть более 2.1 ГБ, из-за ограничений файловой системы FAT16.
Линукс использует только поля start и length таблицы разбиения диска и поддерживает разделы, содержащие до 2^32 секторов, т.е. размер раздела может достигать 2 ТераБайт.
Поскольку в MBR только 4 строки для задания разделов, то число первичных разделов на диске с самого начала ограничено: их может быть не более 4. Когда стало ясно, что и 4-х разделов мало, были изобретены логические разделы. Для этого один из первичных разделов объявляется "расширенным" (тип раздела - 5 или F или 85 в шестнадцатиричной системе) и в нем создаются "логические разделы". Расширенные разделы сами по себе не используются, они могут лишь хранить логические разделы. Первый сектор расширенного раздела хранит таблицу разделов с четырьмя входами: один используется для логического раздела, другой для еще одного расширенного раздела, а два не используются. Каждый расширенный раздел имеет свою таблицу разбиения, в которой, как и в первичном расширенном разделе, используются только две строки, задающие один логический и один расширенный раздел. Таким образом получается цепочка из таблиц разделов, где первая описывает три основных раздела, а каждая следующая - один логический раздел и положение следующей таблицы.
Программа sfdisk в Линукс показывает всю цепочку:
[root]# sfdisk -l -x /dev/hda Disk /dev/hda: 784 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/hda1 * 0+ 189 190- 1526143+ 6 FAT16 /dev/hda2 190 783 594 4771305 5 Extended /dev/hda3 0 - 0 0 0 Empty /dev/hda4 0 - 0 0 0 Empty /dev/hda5 190+ 380 191- 1534176 6 FAT16 - 381 783 403 3237097+ 5 Extended - 190 189 0 0 0 Empty - 190 189 0 0 0 Empty /dev/hda6 381+ 783 403- 3237066 7 HPFS/NTFS - 381 380 0 0 0 Empty - 381 380 0 0 0 Empty - 381 380 0 0 0 Empty
Число логических разделов в принципе не ограничено, потому что каждый логический раздел может содержать таблицу разделов и вложенные логические разделы. Однако, реально ограничения все же существуют, например, Линукс может работать не более, чем с 15 разделами на SCSI-дисках и не более, чем с 63-мя разделами на IDE-дисках.
Расширенный раздел как на физическом диске, так и в расширенном разделе вложенного расширенного раздела (предыдущего уровня) может быть только один: ни одна из существующих программ разбиения дисков (fdisk и ее более усовершенствованные аналоги) не умеет создавать более одного расширенного раздела.
В Linux диск в целом (то есть физический диск) доступен по имени устройства /dev/hda, /dev/hdb, /dev/sda, и т.п. Первичные разделы обозначаются дополнительной цифрой в имени устройства: /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda4, а логические разделы в Linux доступны по именам /dev/hda5, /dev/hda6 ... (начиная с номера 5). Из сказанного выше должно быть ясно, почему могут быть пропущены имена /dev/hda3 и /dev/hda4 (третий и четвертый первичные разделы просто не были созданы) и сразу после /dev/hda2 Вы увидите /dev/hda5 (логический раздел в расширенном разделе /dev/hda2), а далее нумерация идет последовательно.
В Windows логические разделы получают однобуквенные имена, начиная с последнего задействованного имени первичного раздела. Если, например, имеется один жесткий диск с двумя простыми первичными разделами (C: и D:) и одним расширенным разделом, в котором созданы два логических раздела, то эти логические разделы именуются E: и F:. Впрочем, в Windows NT и 2000 с помощью администратора дисков разделам могут быть присвоены другие буквенные имена.
Как Вы знаете, при включении компьютера вначале запускается программа POST (Power On Self Test). Она определяет количество доступной памяти, тестирует ее, определяет наличие других компонент (клавиатура, винчестер...), инициализирует карты адаптеров. На экране обычно появляются сообщения о количестве памяти, о ее тестировании, перечень обнаруженных устройств (гибкие и жесткие диски, процессор, COM-порты и т.д.).
После завершения тестирования (POST) выдает int 19h, которое пытается найти загрузочное устройство. Поиск производится в том порядке, который определен в Setup BIOS, и осуществляется путем опроса нулевых секторов соответствующих устройств. Если диск является загрузочным, то в его нулевом секторе находится главная загрузочная запись - Master Boot Record (MBR). Последние два байта MBR - это "магическое число", которое является признаком того, что данный сектор есть MBR, а, следовательно, диск является загрузочным. Кроме "магического числа" MBR содержит таблицу разделов диска, о которой уже было сказано выше, и маленькую программу - первичный загрузчик, обьемом всего 446 (0x1BE) байт.
На следующем рисунке представлена структура главного загрузочного сектора, создаваемого при инсталляции Windows.
+------------------------+ 0x000 | | | Program code | | | | | |------------------------| 0x1BE | Partition table | | | |------------------------| 0x1FE | Magic number (0xAA55) | +------------------------+
MS-DOS, Windows95 и NT записывают DOS MBR при инсталляции. Стандартное для MS содержимое MBR можно также записать командой fdisk /mbr.
Но вернемся к описанию процесса загрузки. Прерывание 19h BIOS загружает первичный загрузчик в память компьютера и передает управление этой программе. Но такой маленькой программе не под силу загрузить ОС, все, что она может сделать, - это загрузить в память более мощную программу - вторичный загрузчик.
Для этого она ищет в таблице разделов активный раздел и считывает в память вторичный загрузчик, который располагается начиная с первого логического сектора активного раздела. Обратите внимание на слово "начиная". Дело в том, эта вторичный загрузчик в разных системах имеет разную длину.
В разделе, отформатированном под файловую систему FAT, вторичный загрузчик занимает один сектор (512 байт). В разделе, отформатированном под файловую систему NTFS, вторичный загрузчик занимает уже несколько секторов (сколько именно, я не могу сказать).
Вторичный загрузчик загружает первый слой программ, необходимых для запуска операционной системы. В случае MS DOS программа-загрузчик загружает IO.SYS по адресу 700h, затем MSDOS.SYS и передает управление разделу SYSINIT модуля IO.SYS.
Если по каким-либо причинам на диске не найден активный раздел, процесс загрузки продолжается обработкой прерывания 18h. Эта ветвь реально используется очень редко, но такой "крючок" может быть очень полезен в некоторых ситуациях. При удаленной загрузке, когда операционная система загружается с сервера, это прерывание перенаправляется на ROM сетевой карты программой POST.
Для других ОС от Microsoft процесс загрузки происходит аналогично:
Каждая строка секции [operating systems] файла boot.ini определяет
один из вариантов загрузки и строится по шаблону
адрес_вторичного_загрузчика="название_варианта".
Адресом вторичного загрузчика может являться указание на конкретный раздел диска или на файл загрузчика. Вот пример файла boot.ini:
[operating systems] multi(0)disk(0)rdisk(0)partition(3)\WINNT="Windows NT Workstation 4.00 RUS" multi(0)disk(0)rdisk(0)partition(3)\WINNT="Windows NT Workstation 4.00 RUS [VGA mode]" /basevideo /sos C:\="Microsoft Windows" C:\BOOTSECT.LNX="Linux"Если пользователь выбирает NT, то выполняется загрузка по адресу раздела, указанному в строке. В строке, соответствующей MS DOS указан просто диск "C:\", так как имя загрузочного файла берется по умолчанию: bootsect.dos. Файл грузится в память и загрузка продолжается так, как если бы загрузочная запись раздела была загружена программным кодом из MBR.
Для загрузки других систем можно воспользоваться таким же приемом. Для этого в boot.ini нужно добавить строки, содержащие ссылки на другие загрузочные файлы. При выборе такой строки будет загружаться соответствующая ОС. В приведенном выше примере этим способом обеспечивается загрузка Линукс. Для этого в файле C:\BOOTSECT.LNX должно быть предварительно записано содержимое загрузочной записи, создаваемой Линукс (точнее - lilo).
Для преодоления этого ограничения стали применять разные хитрые приемы. Например, Extended CHS (ECHS) или "Large disk support" (иногда обозначается просто как "Large") использует незанятые биты номера головки и номера сектора на дорожке для увеличения числа адресуемых цилиндров. Но на данный момент и DOS, и Windows 95 не поддерживает 256 считывающих головок, поэтому можно использовать "фальшивую геометрию диска" только в 1024 цилиндра, 128 считывающих головок и 63 сектора/дорожку. Трансляцию Extended CHS в реальный CHS-адрес (который может иметь до 8192 цилиндров) осуществляет BIOS. Это позволяет работать с дисками, объемом до 8192*16*63*512 = 4227858432 байт или 4,2 ГБ.
Но разработчики все увеличивали плотность записи на диск, число пластин и дорожек, изобретали другие способы увеличения объема дисков. В частности, число секторов на дорожках стало разным (на более длинных дорожках, расположенных ближе к краю пластин, число секторов стали увеличивать). В результате три числа C/H/S уже перестали правильно отражать "геометрию диска", а старые версии BIOS перестали обеспечивать доступ ко всему дисковому пространству.
Тогда придумали другой прием для работы с большими дисками через INT13 - линейную адресацию блоков ("Linear Block Addressing" или LBA). Если не вдаваться в подробности, то можно сказать, что все сектора на диске нумеруются последовательно, начиная с нулевого сектора на первой дорожке нулевого цилиндра. Вместо CHS-адреса каждый сектор получает логический адрес - просто его порядковый номер в общем массиве секторов. Нумерация логических секторов начинается с нуля, причем нулевой сектор содержит главную загрузочную запись (MBR). В BIOS Setup поддержка преобразования линейного номера в CHS-адрес обозначается как "поддержка LBA". Таким образом в новых версиях BIOS обычно имеется выбор из трех вариантов: "Large", "LBA" и "Normal" (последнее означает, что трансляция не производится).
Но и в режиме LBA обращение к физическому диску все равно осуществляется через функции INT13, которые используют 3D нотацию (c,h,s). Точнее: AH - выбор операции, CH - младшие 8 бит номера цилиндра, CL - 7-6 биты соответствуют старшим битам номера цилиндра, 5-0 биты соответствуют номеру сектора, DH - номер считывающей головки и DL - номер диска (80h или 81h). В силу этого возникает ограничение на возможный объем диска: BIOS, и, следовательно, MS-DOS и ранние версии Windows, не могли адресовать диски объемом более 8,5 гигабайт.
Надо заметить, что указанное ограничение относится только к дискам с интерфейсом IDE. В контроллерах SCSI-дисков номер сектора переводится в команды SCSI, а далее сам диск находит нужную позицию, поэтому такого ограничения на объем диска не возникает.
Еще раз хочется отметить, что все перечисленные ограничения существенны только на этапе загрузки ОС, поскольку сама Линукс и последние версии Windows при работе с дисками уже не используют прерывание 13 BIOS, а используют собственные драйвера для работы с дисками. Но прежде чем система сможет использовать собственный драйвер, она должна как минимум его загрузить. Поэтому на этапе начальной загрузки любая система вынуждена пользоваться BIOS'ом. Это и вызывает ограничения на размещение многих систем за пределами 8GB, они не могут оттуда загружаться, хотя после успешной загрузки могут работать с дисками гораздо большего обьема. Для того, чтобы понять, как можно обойти эти ограничения, нам потребуются некоторые знания о том, как происходит загрузка ОС Линукс.
Загрузчик lilo создан Вернером Альмесбергером (Werner Almesberger). Он не зависит от конкретной операционной системы. Lilo может загружать ядро Линукс как с дискеты, так и с жесткого диска, а также может загружать другие операционные системы: PC/MS-DOS, DR DOS, OS/2, Windows 95-98, Windows NT, 386BSD, SCO UNIX, Unixware и так далее. Может быть задан выбор до 16 разных операционных систем на этапе загрузки.
Lilo представляет собой комплект из нескольких программ: собственно загрузчика, программ, используемых для установки и настройки загрузчика, и служебных файлов.
Надо иметь в виду, что формат загрузочного сектора, создаваемого lilo, отличается от формата DOS MBR, так что если записать загрузочный сектор lilo в MBR, то ранее установленные системы от Microsoft перестанут загружаться (если не принять дополнительных мер).
Загрузочный сектор lilo спроектирован так, чтобы его можно было использовать как загрузочный сектор раздела, в частности, в нем есть место для таблицы разделов.
Загрузочный сектор lilo при инсталляции системы можно разместить в следующих местах:
Кроме того, имейте в виду, что lilo во время загрузки нужны еще следующие файлы:
Следовательно, как загрузочный сектор lilo, так и перечисленные файлы должны находиться в пределах первых 1024 цилиндров на жестком диске, так как они должны быть доступны через BIOS.
На этом мы закончим рассмотрение теоретических вопросов и перейдем к практическим задачам по выбору многовариантного загрузчика.
Существуют и отдельные программы, предназначенные только для организации загрузки.
Кроме перечисленных существуют и другие загрузчики, часть из которых можно найти в каталоге /public/ftp/pub/Linux/system/boot/loaders на сайте metalab.unc.edu. Но поскольку я этими программами не пользовался, то рассказать о них подробнее не могу, а поэтому мои последующие рекомендации будут основаны на использовании загрузчиков lilo, NT Loader и loadlin.exe.
Итак, на мой взгляд, выбор варианта загрузки производится следующим образом:
В следующих разделах я расскажу о том, как установить Линукс, используя все три варианта загрузки: через загрузчик NT Loader (в разделе 17.5), загрузчик lilo (в разделе 17.6) и загрузчик loadlin.exe (в разделе 17.7). Но до установки загрузчика надо подготовить разделы на диске (или, по крайней мере, продумать, как их организовать).
Разбивать диск на разделы необходимо потому, что Windows и Линукс используют разные способы организации хранения информации на диске и разные способы организации доступа к этой информации. О том, как устроена файловая система в Линуксе, рассказано в разделе 21. Файловые системы Windows (FAT и NTFS) здесь не описываются, но, я думаю, Вы знаете, что организованы они совсем не так, как файловая система Линукс. Поэтому для каждой ОС лучше всего каждой операционной системе на диске выделить отдельный раздел (или два, как мы увидим ниже).
Давайте вначале рассмотрим простой случай - когда объем Вашего диска не превышает 8,4 Гбайт (точнее - когда число цилиндров не превышает 1024). В этом случае все просто: Вы просто делите диск пропорционально тому, сколько места требуется для установки каждой из операционных систем, которые Вы хотите установить. Можете воспользоваться следующими данными о размерах дискового пространства, необходимого для установки операционных систем в стандартной конфигурации:
Windows 95 | 100 Mb |
Windows 98 | 200 Mb |
Windows NT | 200 Mb |
Windows 2000 | 700 Mb |
Linux Red Hat 6.2 (в режиме рабочей станции с KDE) | 700 Mb |
Однако помните, что надо учесть не только обьем файлов самой операционной системы, но и того программного обеспечения, которое Вы планируете в ней запускать, а также оставить некоторый резерв для того ПО, которое Вы захотите установить в последующем (это неизбежно!). Учтите, что те 700 Мегабайт, которые указаны в приведенной выше таблице для Линукс, включают место для всего ПО, которое устанавливается вместе с Линукс по умолчанию, в том числе, например, мощный текстовый процессор Lyx. Оценки же, которые даны для Windows, касаются только самой ОС. Если, например, вместе с Windows 2000 установить MS Office 2000 в стандартной конфигурации, то места на диске потребуется много более гигабайта.
Судя по моему опыту для нормальной работы с Windows 95-98, Windows NT и Линукс вполне достаточно выделить разделы обьемом 800-1000 Мегабайт, а вот для Windows 2000 требуется уже побольше.
Не забывайте, что надо оставить немного места для swap-раздела Линукс. При выборе объема swap-раздела Линукс учтите следующее:
Мне кажется, что этих рекомендаций вполне достаточно для того, чтобы спланировать разбиение в случае одного небольшого диска. Рассмотрим теперь случай диска с числом цилиндров более 1024.
Из того, что было сказано в предыдущих разделах, следует, что программы-загрузчики должны располагаться в пределах первых 1024-х цилиндров. Между прочим, NT Loader может располагаться не обязательно в NTFS-разделе, как и вообще не в том разделе, где расположены остальные файлы ОС. Как сказано выше, для Линукс тоже можно расположить каталог /boot в "нижних" цилиндрах, а остальное - где угодно.
Поэтому в этом случае мои предложения сводятся к следующему:
Конечно, если у Вас стоит только Windiws 95 c FAT16, то можете оставить ее в первом разделе. Если же у Вас была установлена Windows NT или FAT32, то наличие небольшого раздела с FAT16 будет не лишним. Во-первых, даже в случае любого краха системы Вы всегда сможете загрузиться с ДОС-овской загрузочной дискеты и хотя бы увидеть, что жесткий диск работоспособен (в принципе). А во-вторых, файловая система FAT16 видна из-под любой ОС, в том числе Линукс, так что этот раздел может служить для обмена файлами между разными системами. Но делать этот раздел большим не стоит - FAT16 очень нерационально использует дисковое пространство. Поэтому отведите под него, скажем, 256 или 512 МБайт.
Эти рекомендации формулировались в предположении, что у Вас всего один жесткий диск. Если у Вас их 2, то все остается в силе, разве что раздел для Линукс и swap-раздел лучше расположить на разных физических дисках. Говорят, что от этого повышается быстродействие в Линукс (оно и понятно, головки меньше бегают).
Более детальные рекомендации по разбиению диска Вы можете найти в [3].
После того, как план разбиения составлен, осталось подобрать инструмент, с помощью которого это разбиение можно осуществить на практике. Наиболее известной программой разбиения диска является уже упоминавшаяся программа FDISK, варианты которой имеются во всех операционных системах. И ничего другого, может быть, и не требовалось бы, если бы речь шла о разбиении девственно чистого диска. Но мы рассматриваем случай, когда какая-то ОС на диске уже имеется и надо обеспечить переразбиение диска без потери информации на нем. FDISK для таких операций не подходит.
В составе дистрибутивов Red Hat и BlackCat (как в других, не знаю, наверное тоже есть) имеется программа fips, которая служит для переразбиения диска. Однако отзывы, которые я слышал, не воодушевили меня на использование этой программы. Поэтому мой Вам совет - если хотите переразбить диск без потери информации, найдите программу PartitionMagic фирмы Power Quest (www.powerquest.com) и воспользуйтесь ею.
Во-первых, она позволяет произвести переразбиение диска без потери информации (то есть, все Ваши предыдущие установки и настройки будут сохранены). При этом можно не только создать новый раздел на свободном месте на диске, но и как угодно переместить ранее существующие разделы.
Во-вторых, эта программа (даже в варианте для ДОС) предоставляет Вам удобный графический интерфейс, так что все осуществляемые действия Вы видите наглядно. Никакого сравнения с интерфейсом командной строки программы FDISK. Я пользовался 5-ой версией этой программы. Она отказывается работать под Windows 2000 и Windows NT, однако в ее дистрибутиве имеется возможность изготовить специальные дискеты (2 штуки), которые служат для загрузки компьютера в режиме ДОС (вариант Caldera DR-DOS) и последующего запуска программы. Эти дискеты прекрасно позволяют переразбить и диск, на котором запущена Windows NT/2000.
При создании разделов необходимо следить за тем, чтобы границы разделов не пересекались.
Я думаю, что приведенных данных достаточно для того, чтобы спланировать и осуществить разбиение диска на разделы. Более подробные пошаговые инструкции будут приведены в последующих разделах, где приводятся описания конкретных вариантов установки двух ОС на одном компьютере.
Назад | Вернуться к оглавлению. | Далее |
В.А.Костромин Последние изменения в содержание файла внесены 2 февраля 2001 г. |