Линукс - курс молодого бойца


Данная книга изначально задумывалась на LOR как ответ человеку, как запустить exe-файл. Впрочем, эта надпись переписывается уже третий раз, а концепция менялась гораздо чаще. Мораль: design before you implement.

Целью данного текста будет объяснить человеку, решившемуся поставить Linux, что же собственно для этого нужно делать, как эта штука работает, почему именно так, а не иначе и как с этим жить дальше.

Что такое дистрибутив

править
 
Дистрибутивы Linux на 2020 год

Дистрибутив GNU/Linux - это набор различных программ (ядро, базовые системные компоненты проекта GNU, оконная система стандарта X11, графические оболочки, реализующие оконный интерфейс, различное прикладное и системное ПО), собранных вместе, в единую операционную систему. На практике это означает, что вместо того, чтобы собирать систему из отдельных компонентов, разрабатываемых по всему миру, достаточно просто вставить диск в привод или подключить флешку, ответить на заданные вопросы и получить машину, готовую к работе.

Какой дистрибутив выбрать

править

Существует широкий выбор дистрибутивов(взгляните на картинку справа): от совсем миниатюрных, помещающихся на дискете или в мегабайте постоянной памяти какого-нибудь домашнего маршрутизатора или точки доступа, до огромных систем, содержащих в себе практически все распространённые программы из мира Unix. Можно назвать десяток популярных дистрибутивов, каждый из которых является полнофункциональной операционной системой. Попробуем разобраться, чем они отличаются.

Дистрибутивы бывают уже собранные - бинарные (таких большинство) и распространяемые в виде набора исходных текстов программ, которые собираются на компьютере пользователя. Первые - более распространены, и их можно условно разделить по типу используемых пакетов:

  • те, что используют rpm (RedHat Package Manager), среди которых – сам RedHat, Fedora, CentOS, OpenSUSE и их производные
  • использующие пакеты Debian - deb: Debian, Ubuntu, Linux Mint и их производные
  • и использующие пакеты tgz: Slackware.

Собирать из исходников можно вручную – для этого есть дистрибутив и книга LFS – Linux From Scratch, и автоматически (Gentoo c системой Portage).

Дистрибутивы различаются по количеству включенного в них программного обеспечения: Debian содержит огромное количество программ и занимает несколько DVD, Gentoo поддерживает не меньшее количество программ, но рассчитана на скачивание их из сети, в то время как базовая версия Slackware или Ubuntu помещается на одном CD-диске.

Критерии стабильности и сроков выпуска стабильной версии сильно различаются у разных дистрибутивов. Поскольку разработка в мире OpenSource ведётся непрерывно, основанный на более свежем ПО дистрибутив может содержать более функциональные версии программ и поддерживать новое оборудование, наконец, новые версии могут работать быстрее за счёт устранения в них узких мест. Но в то же время они же могут работать менее стабильно – нынешнее программное обеспечение крайне сложно и найти ошибку, проявляющуюся при совпадении нескольких случайных факторов, можно только в ходе длительного тестирования.Также бывают дистрибутивы коммерческие, которые продаются за деньги. Коммерческие программные продукты (такие как Oracle, Domino) нередко поддерживаются только на коммерческих дистрибутивах.

Ну и наконец бывают дистрибутивы, работающие напрямую с CD/DVD без установки на жёсткий диск. Они получили название LiveCD/LiveDVD. Наибольшее распространение получил основанный на Debian Knoppix, хотя практически для каждого популярного дистрибутива можно найти его "живую" версию.

Подробнее о дистрибутивах можно прочесть тут:

Философия UNIX

править
  • Принцип KISS – Keep It Simple Stupid. Один из основополагающих принципов, который гласит, что система и любая программа в ней должны состоять из максимально простых и понятных небольших блоков. Если какой-то из компонентов системы или какая-то из подпрограмм в программе становится слишком сложной, их необходимо разбить на более мелкие части. Должно быть предельно ясно, что каждый блок делает с одного взгляда на него, что экономит время на документирование. Впрочем, каждый такой стандартный блок должен быть документирован man-страницей, составленной по стандартному образцу. Сложность доведения до ума и дальнейшей разработки целого ряда переданных сообществу opensource коммерческих проектов, таких как OpenOffice и Mozilla, не исповедовавших этот принцип, подтверждают его несомненную важность для мира unix. Практически все удачные opensource-решения, завоевавшие популярность, построены в соответствии с ним, что позволяет принимать участие в их разработке не слишком опытным программистам, но при этом поддерживать общее качество кода на высоком уровне.
  • Всё есть файл.
  • Единая файловая система.
  • Система и пользователь.

Установка

править

Процесс установки в различных дистрибутивах будет происходить по-разному. Но в общем случае, процесс установки будет состоять из:

  • разметки дисковых устройств, назначения разделов для различных частей файловой системы,
  • выбора устанавливаемых программ,
  • начальной настройки установленной системы

Диски и файловые системы

править

Для установки системы нам потребуется, выделить место на жестком диске. Свободное место на существующем разделе C: или D: (если у нас установлена Windows) нам не подойдет, необходима именно чистая, не размеченная, область диска (или размеченная как линукс раздел).

Собственно жёсткий диск - это физическое дисковое устройство. То, что иногда называют C: или D: - является разделом (partition), выделенная программно часть диска. Разделов может быть до четырёх(если таблица разделов MBR), один из которых может быть расширенным (extended) и содержать любое количество логических томов (logical volume). Расширенный раздел с логическими томами может быть единственным на дисковом устройстве, но не все операционные системы в таком случае будут способны загрузиться, в этом случае понадобится "основной" (primary) раздел.

С приходом UEFI(на смену BIOS), пришел и GPT(на смену MBR, в которой мы могли создавать только 4 первичных раздела). Теперь число разделов неограниченно GPT, но ограничивается ОС(в Linux может существовать до 256 разделов)

Хоть Linux и понимает FAT и NTFS(с Linux можно увидеть файлы хранящиеся на этих дисках), но использовать эти разделы в качестве системных нельзя. Linux устанавливается на файловые системы: minix (устарело), ext2, ext3, ext4, reiserfs, jfs, xfs,btrfs, umsdos (используется в специальной версии Slackware - ZipSlack, это обычный FAT, но расширенные атрибуты хранятся в отдельном файле в каждом каталоге подкаталога linux).

Для установки нам понадобится по крайней мере один раздел под корневую файловую систему, который так и называется "корневым" и обозначается /(на него стоит выделить 20-30 гигабайт). Желательно также создать swap(раздел подкачки) и /home в котором будет расположен домашний каталог пользователя.Для раздела с домашними каталогами (/home) можно выделить столько места, сколько предполагается хранить данных. Также, для некоторых дистрибутивов может потребоваться раздел /boot/efi для правильной загрузки - для него требуется выделять больше 256 мб.

Для подкачки (swap) обычно рекомендуют выделять два объёма оперативной памяти, хотя если оперативки 1G, то не думаю что есть острая необходимость в 2G подкачки. Впрочем это зависит от того, насколько памятелюбивые программы будут использоваться, а добавить областей swap можно будет и потом (можно делать подкачку в файл, и даже есть swapd который оперативно создает файлы подкачки).

Впрочем, разметка разделов в Linux может быть легко изменена благодаря программе Gparted. Поэтому лучше сначала выделить избыточное количество, а уже потом, понимая сколько действительно нужно для нормальной работы ОС, изменять по своему усмотрению.

Выбор ПО

править

Настройка

править

Установка загрузчика

править

Компоненты Linux

править

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

Загрузчик

править

Первое, что появляется на экране при загрузке свежеустановленной системы после BIOS ― это загрузчик. Его задача ― загрузить с диска в оперативную память ядро и передать ему ряд параметров (какой раздел системы является корневым, особенности и настройки оборудования, режим загрузки и т.п.) Кроме того, он умеет передавать управление загрузочным записям других операционных систем, установленных на компьютере. Тем самым появляется возможность установить на один компьютер несколько разных дистрибутивов или операционных систем (наиболее часто linux и Microsoft® Windows™) и загружать из них нужную по выбору.

Рекомендуется все же устанавливать (если это действительно нужно) сначала MS Windows, а после - Linux. Это объясняется тем, что Windows может «не видеть» разделы Linux и из-за этого может повредить их.

Ядро современной операционной системы – это её сердце или, на худой конец, пламенный мотор.

initrd – linux-система в миниатюре, целиком загружающаяся в оперативную память из сжатого образа. Во встраиваемых устройствах (маршрутизаторах, промышленных компьютерах и т.п.) она играет роль основной системы. В дистрибутивах общего назначения её используют для подгрузки модулей ядра с поддержкой файловых систем и других операций, которые необходимо выполнить до загрузки основной системы. В основе initrd обычно лежит busybox.

init и демоны

править

После initrd приходит очередь работать init. Init – это набор программ на языке shell, где написано что и в какой последовательности надо запустить при старте компьютера, его выключении или смене режима работы – runlevelа. Различают три варианта init – BSD, SysV и InitNG со множеством вариаций в различных дистрибутивах.

Программы, постоянно работающие в системе и не требующие вмешательства пользователя, называются демонами. Примером подобной программы может быть демон печати cups, или демоны, запускающие другие программы: cron – через определённые промежутки времени, и at – в заданное время. Запускаются, останавливаются и перезапускаются демоны подсистемой init.

оболочка

править

Возможно, при загрузке всё закончится надписью login: английскими по тёмному – не пугайтесь, вы оказались в консоли.

В дальнейшем ненадолго появляется экран в серую клеточку или заставка Nvidia — это значит, что запустилась система X11. Данная система отвечает за базовую функциональность графического интерфейса — отрисовку окошек, буфер обмена и так далее. Рамку окна рисует оконный менеджер, о котором будет сказано позднее. Кроме того, X11 позволяет передавать команды рисования графического интерфейса и события от устройств по сети, то есть позволяет, например, запустить ресурсоёмкую задачу на одном компьютере, а отображать результат её работы на другой.

login-менеджер

править

графическая оболочка

править

Особенности Linux

править

Структура файловой системы

править

В файловой системе в Linux все начинается с "корня" - /. В отличии от Windows, в Linux организация файловой системы выглядит как "дерево": от корня / идет в другие папки(/etc, /lib,/usr,/bin) или даже разделы - /home,/boot(если вы их сделали разделами при установке). Можно было бы провести аналогию с Windows:

Windows Linux Функция
Диск С / Хранятся системные файлы, некоторые программы, библиотеки
Диск D,E,... /home Хранятся пользовательские файлы(документы, фото и т.д.)

Значительное отличие состоит в том, что в Windows нечто похожее на /home хранится на диске С в папке Users(Пользователи)

В случае с /home(а вернее /home/username, где username - ваше имя) структура папок оказывается достаточно тривиальной:

Documents, Music, Pictures,Videos, Download, Desktop(папка рабочего стола). Выбор какие файлы и где хранить - зависит от вас

Ситуация же с / значительно отличается:

  • / - корневой каталог (редактировать может только root)
  • /root - домашний каталог пользователя root
  • /bin (binary - двоичный)- хранятся консольные программы(cat,ls и т.д.) в двоичном исполняемом формате.
  • /sbin(sudo binary) - хранятся консольные программы, которые запускаются от root(sudo) в двоичном исполняемом формате(reboot,fdisk и т.д.)
  • /usr - хранятся основные программы(и те, которые устанавливаются), документация, исходные коды.

Управление настройками

править

/etc, Yast, * Control Center, dpkg-reconfigure, etc

Можно организовать различные способы хранения настройки системы и работы с ними.

В linux принято хранить настройки в текстовых файлах. Как общесистемные, так и пользовательские (последние - обычно хранятся в домашнем каталоге пользователя и начинаются с точки, что означает что это скрытые файлы). Это позволяет работать с ними практически любым способом, например достаточно простого текстового редактора.

Существует специальный каталог для системных конфигурационных файлов - это /etc лежащий в корне файловой системы. Если кому-то приходилось иметь дело с семейством операционных систем windows, то этот каталог можно считать аналогом "реестра", с той разницей что иметь дело с текстовыми файлами несколько удобнее.

Языки ввода-вывода

править

Linux может поддерживать большое количество языков на одной системе. Достигается это следующим образом. Во первых, сообщения, которые выводят на экран программы, хранятся в виде отдельных файлов, так называемой локали. Большая часть их переведена на русский язык и другие распространённые и не очень языки мира. Переключение языков сводится к установке системных переменных. Например, за язык в целом отвечает переменная $LANG. Узнать текущие значения этих переменных можно командой locale. Во вторых, система X11 позволяет гибко выбирать раскладки клавиатуры, сочетание клавиш для переключения, и многое другое. Поддерживаются системы ввода для азиатских языков, отображение текста справа налево и другие особенности национального письма.

Основной кодировкой для unix-машин в нашей стране была koi8r (вариант основной кодировки ГОСТ, основная особенность - первые семь бит символов русского языка соответствуют похожей букве языка английского, что было важно для ранних компьютерных сетей). В настоящее время все дистрибутивы постепенно переходят на разновидность Unicode UTF8, которая позволяет одновременно выводить символы многих языков и многие другие удобные вещи.

Программы

править

В GNU/Linux достаточно много разнообразных программ, которые, в целом, представляют неплохую альтернативу программам на Windows и Mac OS. К сожалению, не для всех программ существуют альтернативы, и не все являются кроссплатформенными и поэтому многие программы, которые были у вас на Windows/Mac OS могут отсутствовать на Linux. Наиболее популярным решением в этом случае оказывается программа Wine(для запуска Windows программ).

Наиболее сложная ситуация с САПР(CAD) и OCR(распознавание текста).

Графическое окружение

править
  • KDE
  • GNOME
  • XFCE
  • LXDE(LXQt - аналог LXDE с поддержкой Qt)
  • MATE
  • Cinnamon

Оконные менеджеры

править
  • openbox
  • awesome
  • fluxbox
  • icewm
  • blackbox
  • compiz

Работа с Интернетом

править

Мультимедиа

править

LibreOffice

FreeOffice

OpenOffice

Работа с текстом

править

Для многих пользователей, не испорченных миром unix, работа с текстом сводится к предыдущему параграфу. Однако, офисные приложения вовсе не всегда являются лучшим выбором для людей, чья работа связана с созданием и обработкой больших объёмов текста. Здесь мы постараемся осветить этот вопрос подробнее.

vim vs emacs vs others, TeX, правка исходников, diff и patch, системы распределённой правки текстов.

Как известно, у vim есть два режима работы: в одном он пищит, а в другом всё портит. Запустив его, убедитесь в этом. Переход между двумя режимами осуществляется кнопками i и Esc. Чтобы выйти из него, необходимо нажать :q (работает только в режиме, активируемом нажатием Esc). Чтобы разобраться, как всё же работать с этим мощнейшим текстовым редактором, рекомендуем запустить vimtutor ru. Также можно почитать вот эту статью: Vim

В свою очередь, emacs по распространённому мнению является отличной ОС, которой только не хватает хорошего текстового редактора. И это справедливо, поскольку emacs содержит внутри себя практически всё, что может потребоваться при разработке проекта, от собственно редактора кода, до почтового клиента и интерфейса к cvs.

Рисование

править
  • Gimp — растровая графика
  • Inkscape — векторная графика
  • Blender — 3D-графика

Работа со звуком

править

О работе со звуком в linux замечательно написано в отдельном проекте Звук в Линуксе.

Языки и перевод

править

Крайне необходимой вещью для любого человека, работающего с иностранными текстами, является словарь. Наиболее удобной словарной оболочкой под linux безусловно можно назвать stardict ВП со словарями проекта xdxf ВП. Он поддерживает огромное количество словарей, а разработанный конвертер между различными форматами makedict позволяет переводить в его формат файлы словарей для других оболочек. Также существует клиент-серверная система словарей на основе dictd (клиентов к ней написано громадное количество). Ну и наконец, есть демонстрационная англо-русская версия словаря multitran.

Кроме того, под linux есть переводчик prawda, который позволяет переводить тексты как в автоматическом (как промт), так и в полуавтоматическом (выбирая вариант перевода из словаря) режиме. Для машинного перевода между некоторыми другими языками есть переводчик Apertium ВП.

Железо

править

В идеальном линуксе на сферической Земле в вакууме поддержка всех устройств была бы в текущей версии ядра и распознавались они бы сами, полностью автоматически. Однако, живем мы с вами на теле сложной формы (учёные называют его геоид, но это неважно) и потому ситуация с поддержкой устройств в linux обстоит следующим образом. Большая часть железно-кремниевой составляющей компьютера уже поддерживается в ядре дистрибутива и соответствующих неядерных подсистемах и должна работать из коробки. Однако, некоторые железячные компоненты по различным причинам технического, делового, этического или религиозного характера ещё требуют некоторого внимания со стороны человека. Остановимся на этом подробнее.

Железяки совместимые и нет, сами себе злобные производители железок

править

Про то, откуда берутся драйверы

Видеокарты

править

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

Для поддержки 3D на многих видеокартах от ATI и NVIDIA надо поставить бинарные драйвера:

  • В большинстве дистрибутивов есть спецпакеты, которые скачивают и устанавливают бинарные драйвера или содержат их внутри себя (что не совсем правильно, но допустимо в России).
  • Ati radeon <=9250 поддерживаются только свободными драйверами, ничего ставить не нужно
  • Ati r300 (от 9500 до X600) поддерживаются как свободными драйверами, так и бинарными фирменными.

Для свободных драйверов скачиваем и ставим libdrm, скачиваем mesa-6.4.2 и собираем:

make linux-dri-x86 

Mesa-6.4.2/lib/r300_dri.so переносим в /usr/X11R6/lib/modules/dri

  • Ati и бинарные фирменные драйвера:

В случае использования несвободных драйверов ati надо сначала настроить X, а потом ставить драйвер. Скачать с сайта ati ati-driver-installer и запустить его. Затем сначала испортить /etc/X11/xorg.conf с помощью aticonfig и потом восстанавить то, что это кривое чудо испортило, обратно, оставив только Section "Device"

  • Nvidia и старые карты (не FX и не MX400/MX440) — скачивается установщик

версии 7174 или 7182: ftp://download.nvidia.com/XFree86/Linux-x86/1.0-7182/NVIDIA-Linux-x86-1.0-7182-pkg1.run

  • Nvidia и новые карты: скачивается и ставится последняя версия установщика

Принтеры

править

Принтер в linux сейчас обычно управляется системой печати cups[1]. Настроить её после запуска можно по адресу http://127.0.0.1:631 Если принтер уже есть там — хорошо. Если же его там нет, значит для него нужно поставить драйвер. Большое количество информации по поводу драйверов, хотя и не всегда актуальной, собрано по адресу http://www.linuxprinting.org

  • HP – основной драйвер hplip, младшие модели лазерников (1000w) поддерживаются foo2zjs (нужна прошивка от драйвера для windows)
  • Epson[2] — на сайте компании размещены наборы драйверов для Linux[3]
  • Canon - на сайте компании размещены наборы драйверов для Linux (правда в подавляющем большинстве для английской версии драйвера)
  • KYOCERA MITA

Сканеры

править

Узнать, поддерживается или нет тот или иной сканер можно на http://www.sane-project.org. Многим сканерам нужна прошивка, которая скачивается из сети или берётся от драйвера под windows. Программа для сканирования называется xscanimage, входит в пакет xsane Проверить, работает ли сканер можно с помощью команды scanimage -L. В некоторых дистрибутивах для работы со сканером нужно внести пользователя в группу scanner.

  • Epson[4] — на сайте компании размещены наборы драйверов для Linux[3]

Примечания

править
  1. [1], Рекомендации по настройке печати принтеров, поддерживающих PostScript (на английском языке).
  2. [2], Общие рекомендации по настройке принтеров EPSON в Linux (на английском языке).
  3. а б © Seiko Epson Corp, поиск драйверов для принтеров, сканеров и МФУ.
  4. [3], Рекомендации по настройке сканеров EPSON в Linux (на английском языке).