Это уже старая статья из журнала
Не секрет что Linux, как и любая другая операционная система размещается на жестком диске компьютера. И пользователю при своей эксплуатации начиная с установки и заканчивая повседневной деятельностью, приходится, как-то взаимодействовать с этими разделами. Поэтому пришла пора разобраться, что все-таки творится там, на пингвиньих островах, с помощью чего можно их создавать, как они обозначаются, какие программы можно использовать для работы и обслуживания файловых систем и, наконец, разобраться во всем их многообразии. В статье я попробую ответить на все вопросы, которые когда-либо поступали на мой почтовый адрес по данной теме, а также на частозадаваемые в различных форумах. Статья будет логически разделена на три части. В первой рассмотрим все, что связано с разделами от наименования до количества. Во-второй, посмотрим какие файловые системы можно использовать на созданных разделах. И в третьей использовать поговорим об утилитах не рассмотренных в первых двух частях и об оптимизации работы дисков.
Часть первая. Разделяй и властвуй.
Начнем, пожалуй, с обозначения дисков принятых в этой системе. Традиционно в Linux ATA-диск обозначается в соответствии с тем, к какому из интерфейсов он подключен: диск подключенный к первому IDE диску на первом канале всегда обозначается как /dev/hda, на втором канале — hdb, соответственно на втором IDE — первый канал hdc и второй hdd. Причем называться он так будет независимо от того есть ли диск в устройстве в наличии на данный момент или нет. Так обозначается весь диск целиком. Хотя в современных дистрибутивах использующих libsata вместо /dev/hda используется обозначение SCSI дисков то есть /dev/sd№. Есть еще
Что такое UUID
Есть еще один момент о котором следует знать. Заглянув в файл /etc/fstab можно увидеть что вместо старых привычных наименований разделов здесь используется идентификатор UUID (от Universally Unique Identifier). Например:
UID=17ee71a8-09ec-49f4-8522-9f2277b6f326 / ext3 defaults 1 1
Аналогичный идентификатор используется в /boot/grub/menu.lst. Все просто вместо названия самого раздела ему присваивается уникальная метка, которая позволяет его однозначно найти при изменении конфигурации в разделах диска или порядка следования дисков в системе (современные BIOS для SATA это решают без проблем). Благодаря использованию UDEV получаем ряд преимуществ.
Например раньше добавив или убрав раздел пришлось бы заново переписывать эти два файла, теперь в это мнет необходимости. Хотя при желании можно переписать все по старому. Узнать соответствие UUID разделу можно прочитав содержимое каталога /dev/disk/by-uuid/
$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 2008-01-16 15:16 17ee71a8-09ec-49f4-8522-9f2277b6f326 -> ../../hda5
lrwxrwxrwx 1 root root 10 2008-01-16 15:16 4274478674477BA3 -> ../../hda1
lrwxrwxrwx 1 root root 10 2008-01-16 15:16 44D1-26C8 -> ../../hda9
lrwxrwxrwx 1 root root 10 2008-01-16 15:16 94b953b8-e10f-43a8-b992-228936cdd847 -> ../../hda6
lrwxrwxrwx 1 root root 10 2008-01-16 15:16 cb25e832-eb34-478e-96ef-ec9eec8de356 -> ../../hda3
lrwxrwxrwx 1 root root 10 2008-01-16 15:16 E4AC320FAC31DCAC -> ../../hda8
lrwxrwxrwx 1 root root 10 2008-01-16 15:16 F294CF5894CF1E4B -> ../../hda7
Файловые системы FAT и NTFS не поддерживают UUID, хотя для них вполне возможно образование уникального имени, но оно получается коротким.
Но, как и повелось в любой операционной системе диск делится для удобства работы на разделы. Жесткий диск может иметь не более четырех первичных разделов, которые в Linux всегда обозначаются цифрами от 1 до 4, например hda2 для второго первичного раздела первого IDE мастера. Но в современных условиях четырех разделов уже не может не хватать для работы поэтому для увеличения количества разделов создают в одном из первичных создают так называемый расширенный (Extended) раздел на котором создается несколько логических разделов (обозначаемых цифрами начиная от 5). При этом в Linux разделы можно создавать в стиле Windows, то есть расширенный раздел может быть создан только в одном из первичных. Итого в идеальном случае мы можем иметь на диске три первичных раздела, например hda1-hda3 и несколько логических начиная от hda5 и до теоретических 63 разделов (в SCSI-дисках максимум 15), которые размещаются на четвертом первичном. Напомню что в BSD системах логические разделы (BSD Partitions) можно создать внутри каждого первичного, который именуется здесь немножко по-другому slices.
Ядро 2.4.*
В ядрах Linux серии 2.4.* появилась новая файловая система устройств devfs, которая избавляла казалось от множества неприятностей и неудобств. В двух словах назначение ее было таково. Как известно в Linux все, куда ни глянь, в том числе и различные устройства является файлами, это упрощение намного облегчает взаимодействие пользователя с системой так как для работы с диском могут применяться теже команды, что и для работы с обычным текстовым файлом (cat, dd) причем это взаимодействие абсолютно одинаково для всех типов и марок дисков. Но все хорошо, если бы не один момент. Для того чтобы ядро могло нормально распознавать устройства, специальные файлы устройств нумеруются двумя целыми числами — старшим (major number) и младшим (minor number). Первое из них соответствует типу устройства (например, 3 — это первый IDE-диск), а второе — конкретному устройству (0A — его десятый раздел)(подробнее о наименовании устройств посмотрите в /usr/src/linux/Documentation/devices.txt). Так вот major номер не может быть присвоен от «балды», если производитель хочет предложить свой драйвер для широкого использования он должен входить в контакт с производителем ядер и получить для своего устройства «официальный» major номер. И только после этого он может использоваться публично. Проблемы здесь две. Одна состоит в том, что каталог /dev буквально завален различными файлами устройств для возможной совместимости системы со всеми девайсами, по большому счету если не предвидится серьезного апгрейда лишние конечно можно и убрать, но не лучше их вообще туда не ложить. Вторая состоит в следующем. Если на первоначальном этапе эта схема распределения номеров еще была, скажем так вполне оправдана, малым количеством доступных девайсов (как и в Интернете на начальном этапе развития при распределении IP-номеров и имен службы DNS, когда названия узлов и соответствующий адрес просто заносился в файл hosts на каждом компьютере). То при современном темпе добавления новых устройств все это вызывает головную боль как производителя так и лиц отвечающих за поддержку ядра, да и Linux уже подошел к границе, когда все major номера скоро будут исчерпаны. Выход в решении всех этих проблем и состоит в использовании devfs. При его использовании файлы устройств создаются «на лету» по мере подключения (хотя бывает, что для этого приходится систему все-таки перезагружать), что не захламляет каталог ненужными файлами и теперь зайдя в /dev можно узнать, какие устройства у вас присутствуют реально. После инициализации к устройствам обращаются по именам, поэтому необходимость в номерах отпала со всеми вытекающими отсюда положительностями. Хотя для обратной совместимости можно (но необязательно) указать major и minor номера. Так вот в devfs по умолчанию используется совершенно другая номенклатура и предусмотрены иные каталоги для размещения файлов устройств. Так в некоторых дистрибутивах файловая система устройств вообще монтируется в каталог /devices, а каталог /dev сохраняется для совместимости. Теперь IDE диски можно найти в каталоге /dev/ide (SCSI — /dev/scsi), встроенному контролеру соответствует каталог /dev/ide/host0 (в платах с дополнительным контролером довелось видеть и каталог host1). Двум IDE-каналам этого контролера файлы — /dev/ide/host0/bus0 и bus1, а подключенным дискам соответствуют каталоги /dev/ide/host0/bus0/target0 и target1. В каждом из этих каталогов имеется еще один lun0 уже в котором собственно, и находятся файлы устройств соответствующие всему накопителю — disc, так и для первичных part1 — part4 и part5 — partN — для логических разделов. Исходя из этого полное название дискового раздела выглядело так /dev/ide/host0/bus0/target0/lun0/part2. Поверьте мне, что когда не смог найти привычного hda просто обалдел. Такое обозначение можно назвать логичным, понятным, но уж никак не удобным. Поэтому в некоторых дистрибутивах (в частности Gentoo) используется более удобное обозначение с помощью создания жестких ссылок, например в файле /etc/fstab для обозначения приведенного в предыдущем примере раздела встречается уже совсем другое обозначение: /dev/discs/disc0/part2. Но для совместимости никто не запрещает создать символическую ссылку со старым обозначением и работать, как ни в чем не бывало, в некоторых дистрибутивах это предусмотрено автоматически. И в современных версиях это так и есть.
Ядро > 2.5
Начиная с ядра версии 2.5 все физические и виртуальные устройства выводились уже через файловую систему sysfs, которая
показывала все устройства в виде древовидной структуры.Когда в системе появлялось новое устройство или удалялось старое,hotplug уведомлял об этом окружение пользователя. В результате /dev являлась динамической файловой системой, с более гибкими правилами именования устройств чем devfs. В результате вернулись к старым/dev/hda
Сколько нужно разделов
Итак, с обозначением разобрались. Следующий вопрос, который постоянно мучает читателя, сколько и какие разделы нужно создавать. Итак, внимание для нормальной работы необходимо создать как минимум два раздела: первый системный — Linux native, второй раздел подкачки — Linux Swap. Под системный раздел желательно выделить, если вы предполагаете работать с X-Window как минимум 800 — 1000Мб, но это как вы понимаете, сильно зависит от самого дистрибутива, есть однодисковые, а есть 3, 5 и даже 9ти дисковые, так что здесь ориентируйтесь сами. Раздел подкачки желательно расположить, для увеличения скорости обмена данными, как можно ближе к началу диска, а идеальный вариант на другом физическом диске или лучше вообще разделить поровну между ними сделав запись в /etc/fstab о равенстве их приоритетов.
/dev/hda5 swap swap defaults,pri=1 0 0
/dev/hdc5 swap swap defaults,pri=1 0 0
Но здесь в зависимости от старости дистрибутива (ядра) могут быть свои ограничения на размер. В очень ранних дистрибутивах максимальный размер раздела подкачки не должен был превышать 16Мб и максимальное количество таких разделов восьми. В более поздних предел составлял уже 128 Мб. Ядра начиная с 2.4.10 не могут монтировать swap, если размер дискового раздела меньше 128 Mb, когда я это первый раз прочитал и посмотрел на свой 64 Мб swap, то не понял в чем тут прикол и кстати проверял работает. Но это информация взята из официальных источников, а сверху swap ограничен половиной адресного пространства оперативной памяти. Для i86 процессоров при размере страницы памяти 4 Kb (значение по умолчанию) размер адресного пространства 4 Gb, а максимальный размер swap, соответственно 2 Gb. Такой вариант разбиения на два раздела, по-моему наиболее удобный вариант для новичка и мороки и проблем на этапе освоения будет поменьше. Затем если пингвин приживется на вашем компьютере, желательно на отдельные разделы вынести каталог /home в котором хранятся все пользовательские данные и настройки, а также раздел /usr/local в который по умолчанию устанавливаются все пользовательские программы не входящие в дистрибутив штатно. В таком случае можно будет переустановить заново дистрибутив, не затрагивая при этом всех пользовательских настроек и не переустанавливая заново кучу программ и пользоваться ими сразу после запуска. Сразу отвечу на вопрос, что делать, если первоначально не были созданы все эти разделы, а теперь хочется очень перенести их на отдельные разделы диска. Как быть в этой ситуации? Все очень просто до безобразия, создаем еще один раздел (как чуть ниже), затем монтируем в произвольную точку и просто копируем в него данные, а затем удаляем их из исходной папки, чтобы место не занимали. Например:
# mount -t ext3 /dev/hdb3 /mnt/temp
# монтируем созданную файловую систему.
# cp -R /usr/local/ /mnt/temp
# рекурсивно копируем в нее все с каталога /usr/local (это можно проделать и с помощью mc или другим удобным способом), здесь необходимо проследить за выводимыми сообщениями
# umount /dev/hdb3
# размонтируем
# mount -t ext3 /dev/hdb3 /usr/local
# монтируем поверх старого /usr/local (новые ядра позволяют это) для проверки, теперь прогоняем любимые программы
# umount /dev/hdb3
# rm -f /usr/local/*
# очищаем диск так как информация все равно будет присутствовать
# mount -t ext3 /dev/hdb3 /usr/local
# монтируем новый раздел в качестве /usr/local и наслаждаемся полученным результатом.
И теперь чтобы новый раздел при загрузке каждый раз монтировался на свое место, прописываем в файл /etc/fstab следующие строки
/dev/hdb3 /usr/local ext3 defaults 0 0
Вот поэтому я и люблю Linux. Все просто и никаких тебе реестров, где регистрируется каждая программа и поэтому при смене раздела или добавлении нового диска приходится в большинстве случаев переустанавливать заново ее. Кстати если есть сеть с постоянно работающими компьютерами, то можно данный раздел вообще расположить только на ОДНОМ из них, тем самым экономя место, контролируя и централизовано наполняя его содержание да и бекапить полегче, а монтировать его на этапе загрузки с помощью NFS. При этом пользователи даже не будут догадываться, что какой то раздел находится где-то совсем на другом компьютере. К слову в соответствие со стандартами, продвигаемыми Linux Standard Base
# ln -s /usr/local /opt
После этого все программы при установке будут попадать на созданный раздел диска. Полная свобода выбора.
Также совсем не помешает создать еще один раздел — /boot, это самая критическая часть для загрузки операционной системы. В старых дистрибутивах было ограничение (приблизительно для тех у кого ядро <2.4, Mandrake 7.0, Red Hat 6.0 и т.д.) связанное с так называемой проблемой 1023 цилиндра. Дело в том, что из-за ограничений накладываемых BIOS большинства Intel-совместимых компьютеров (заметьте это ограничение именно BIOS, a не Linux) ядро может загружаться только с первых 1023 цилиндров жесткого диска, причем если у вас их два, то даже возможно только с первого мастер диска. (Для справки: в Partition Magic есть даже ярлычок указывающий на 1023 цилиндр). Вся необходимая информация для загрузки LILO/GRUB в том числе и ядро находится в каталоге /boot, поэтому чтобы выйти с данной ситуации расположите этот каталог в первых 1023 цилиндрах (вариант загрузки с дискеты я откидаю сразу), а корневой «/»(и все остальные) раскидайте по диску(или дискам) как вам хочется. Монтировать данный раздел следует только при инсталляции нового ядра или новой схемы загрузки и возвращаться в исходное состояние после решения задач.
Запись в /etc/fstab может быть примерно следующей:
/dev/hda1 /boot ext2 noauto 1 2
Больше чем 20 Мб данный раздел все равно не потянет, так что можно и раскошелиться. На серверах обычно дополнительно выносят в отдельный раздел каталоги /var и /tmp, но на домашнем компьютере вряд ли есть в этом какая то необходимость. Из всего выше изложенного вы должны понять, что создание разделов процесс сугубо творческий и ограничивает вас в этом только ваша собственная фантазия (и размеры диска(ов)).
Итак, с обозначением и потребностями мы разобрались, теперь давайте посмотрим с помощью чего все это можно сотворить.
При установке каждого дистрибутива Linux пользователь сталкивается с более или менее удобной программой с помощью, которой можно разбить диск и отформатировать его под нужную файловую систему. Здесь наиболее удобными и очень наглядными в применении будут графические утилиты QTParted или Gparted. Для тех, кто сталкивался хоть раз с Partition Magic и немного понимает суть процесса особых проблем при их использовании возникнуть не должно. Но господа раздел под новую операционную систему должен быть предварительно подготовлен т.е. очищен от информации, хотя это можно попробовать сделать и при установке зайдя в другую консоль и скопировать файлы в другой раздел, не говорю уже о такой привычке как предварительное резервирование данных при всякой рискованной операции к которым относится, конечно и установка ЛЮБОЙ операционной системы. При установке же других дистрибутивов и в постустановочной деятельности прийдется общаться с совсем другими утилитами. Познакомимся с ними поближе.
Консольные утилиты
До недавнего времени для работы с дисковыми разделами в уже установленном Linux я пользовался только одной программой к которой привык с еще с доLinuxовских времен имя ей fdisk. Да это та страшилка которой пугают начинающего линуксоида на каждом сайте и книге. Она полностью удовлетворяла моим довольно скромным потребностям, да и программы аналогичной PM в Linux все равно нет. Но естественно есть и другие предназначенные для этой цели программы: cfdisk (кстати, применяется при установке Debian) и GNU/parted, с которой впервые столкнулся при установке Lunar Linux. Т
Итак, fdisk. Тех, кто пользовался хоть раз аналогичной в Windows, найдут данную программу очень похожей. Позволю все-таки немного остановиться на ее работе, так как есть небольшие отличия. Запускается она с аргументом названием диска, с которым будет производиться дальнейшая работа или если диск один то просто без аргументов.
$ sudo /sbin/fdisk /dev/hda
Command (m for help): m
Взаимодействие с пользователем осуществляется путем нажатия клавиш соответствующей требуемой операции. Как видно из примера m (manual) – выводит полную справку, p (print) – состояние разделов, n (new) – создать раздел, d (delete) – удалить его (кстати, удалить раздел Linux можно только с помощью описываемых программ и иногда PM, ДОСовский fdisk в данном случае абсолютно бесполезен), все введенные команды будут выполнены только после ввода w (write), а при помощи q (quit) можно выйти без записи изменений.
Command (m for help): p
Disk /dev/hda: 255 heads, 63 sectors, 3649 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 247 3649 27334597+ f Win95 Ext’d (LBA)
/dev/hda2 * 1 246 1975963+ b Win95 FAT32
/dev/hda5 247 756 4096543+ 83 Linux
/dev/hda6 757 772 128488+ 82 Linux swap
Клавиша, а – включает флаг указания загрузочного раздела, с помощью t – устанавливается тип файловой системы раздела, список всех доступных можно просмотреть с помощью опции -l (list). Как видите, в списке присутствуют практически все широкоизвестные файловые системы, но это не значит что после выбора a5 FreeBSD, на данном участке диска тут же будет создана файловая система FFS. Нет, в данном случае разделу присваивается только идентификатор раздела, с помощью которого можно разве что зарезервировать тип, а сама файловая система будет создана только после его форматирования. Вспомните в ДОС, после fdisk всегда нужно было запускать format. Здесь ситуация аналогична, только программы для создания файловой системы (форматирования) немного другие (и не одна). В нашем случае интересует тип раздела Linux native (идентификатор 83), Linux swap (82) и может пригодится тип 5 для создания расширенного раздела.
Итак, для создания раздела вводим n:
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
На первом этапе нужно определится, какой раздел нужен, если первичный жмем на p или логический – l (logical ), если нет на диске расширенного раздела то поначалу прийдется его создать с помощью — е (extented). После ввода, которого запросят номер раздела, порядка придерживаться не обязательно, можно вначале создать 2, а потом 1. Следующим будет вопрос о размере. Его можно задать в цилиндрах (по-умолчанию), в байтах, килобайтах и мегабайтах. Если просто ввести цифру 100 то раздел будет занимать ровно сто цилиндров, а для того чтобы задать сразу в мегабайтах необходимо ввести +100M. При этом созданный раздел будет равен ближайшему кратному числу цилиндров. По умолчанию каждому созданному разделу присваивается идентификатор 83.
Более наглядной в работе является утилита cfdisk. С ее помощью в очень наглядном виде можно проделать с дисковыми разделами все требуемые операции. Выбор раздела, с которым будут производиться дальнейшие действия, осуществляется с помощью клавиш вверх-вниз, а требуемое действие вправо-влево. Все изменения на диск будут записаны только при выборе пункта Write после которого еще прийдется для подтверждения ввести yes, и до его нажатия можно совершенно не волноваться о сохранности данных. Удалить раздел можно с помощью Delete, пометить как загрузочный – Bootable, Print – позволяет просмотреть таблицу разделов или сохранить ее в файле, выбрать тип файловой системы можно с помощью Type, c помощью Units, чтобы не набирать каждый раз размер в мегабайтах можно сразу установить режим ввода и отображения по умолчанию (Mb, sectors, cylinders) и безбоязненно выйти, не внося изменения можно с помощью все той же Quit. Кстати кто разбивал диски FreeBSDшной программой /stand/sysinstall не найдут здесь абсолютно ничего особенного. Можно вместо выбора пунктов меню использовать горячие клавиши, которые совпадают по назначению с таковыми в fdisk, что совсем не вызывает удивление т.к. вышеописанная утилита является фрон-ендом к ней.
И, наконец GNU/parted, рожденная в недрах проекта GNU утилита позволяющая не только создавать новые разделы, но дополнительно и файловые системы на них, к тому же осуществляет проверку их целостности, а также удаление, перемещение, копирование и что новое для Linux изменение размера разделов, правда некоторые операции возможно производить пока только с ext2fs, swap и FAT16/FAT32 .
Работать программа может в двух режимах: в интерактивном и командном.
Первый можно запустить, набрав просто parted в командной строке или добавив опцию -i в командном. После запуска программы и выдачи, стандартных для такого рода программ предупреждений и информации о диске, пользователь получает приглашение для ввода команд
(parted)
Команда help позволяет получить краткую справку, а с аргументом названием команды и справку по ее работе. Остальные используемые команды:
— print выводит таблицу разделов
— check MINOR (где MINOR раздел диска в терминологии parted, который можно получить с помощью предыдущей команды) производит простую проверку файловой системы.
— cp [FROM-DEVICE] FROM-MINOR TO-MINOR – копирует файловую систему в другой раздел
— mklabel ТИП-МЕТКИ создать новую метку диска (таблицу раздела)
— mkfs MINOR ТИП-ФС создать файловую систему на разделе MINOR, где ТИП-ФС может принимать значения (ext2, ext3, FAT, hfs, jfs, linux-swap, ntfs, reiserfs, hp-ufs, sun-ufs, xfs), хотя на данный момент поддерживаются только ext2fs, swap и FAT, будем надеяться что не это надолго.
— mkpart ТИП-РАЗД [ТИП-ФС] НАЧ КОН создает раздел без создания на нем файловой системы, где ТИП_РАЗД один из: primary, logical, extended, полезная команда если раздел удален случайно, НАЧ КОН растояяние в мегабайтах от начала диска.
— mkpartfs ТИП-РАЗД ТИП-ФС НАЧ КОН создать раздел с файловой системой
— move MINOR START [END] перемещение раздела в пределах диска
-name MINOR NAME присвоение имени разделу
-quit выйти из программы
— resize MINOR НАЧ КОН изменить размер файловой системы на разделе, при этом гарантируется (если это вообще возможно при работе с дисками) сохранность данных, и размер можно изменить только в соседних разделах
— rm MINOR удалить раздел MINOR
— select DEVICE изменение диска для работы
— set MINOR FLAG STATE изменение флага раздела, где FLAG один из: boot, root, swap, hidden, raid, lvm, lba, а STATE – on или off.
Причем взаимодействие с пользователем напоминает bash, то же автодополнение, то же редактирование строки ввода и история команд. Но главное отличие от предыдущих программ заключается в том, что все изменения вступают в силу сразу после ввода команды. Вообще данная программа мне показалась продуманной, логичной и довольно удобной единственное что мешало в освоении на первоначальном этапе так это привычки. Но командный режим это я скажу вам это что-то. Введя сразу все необходимые опции в bash на выходе получим уже готовый размеченный диск
$ sudo parted /dev/hda mkpartfs primary linux-swap 0 128 && parted /dev/hda mkpartfs primary ext2 129 ###
Для работы с разделами можно использовать и программу sfdisk, которая имеет четыре основных режима работы: вывод размера раздела, вывод размера дисков, проверка разделов и помеченный как very dangerous изменение разделов.
Опция s выводит информацию о размерах дисков в блоках
$ sudo /sbin/sfdisk -s
/dev/hda: 29316672
/dev/hdb: 3167640
total: 32484312 blocks
Запуск с опцией -l позволяет просмотреть таблицу разделов, если при этом не указывать конкретно диск, то будет выведена информация обо всех дисках. С помощью команды sfdisk -V можно проверить раздел на соответствие записи в таблице и реального состояния, если все прошло благополучно, то выведет ОК иначе краткий отчет о проблеме. Создавать разделы с помощью этой программы все-таки не удобно поэтому трогать мы не будем, но очень легко сохранить таблицу разделов
$ sudo /sbin/sfdisk /dev/hda -O hda-partition-sectors.save
и восстановить ее в случае проблем
$ sudo /sbin/sfdisk /dev/hda -I hda-partition-sectors.save
Напомню, что эти же операции можно проделать и с помощью команд cat или dd.
Вот мы и рассмотрели все вопросы, которые затрагивают размещение и создание разделов для ОС Linux на жестком диске. В следующей части посмотрим, чем можно их наполнить. Linux forever.
Permalink
Permalink