Linux для чайника – Telegram
Linux для чайника
20K subscribers
89 photos
4 files
80 links
Linux
- Разбор утилит / инструментов
- Новости / факты
- Опросы для проверки знаний, навыков
и многое другое.

Только по вопросам сотрудничества: @altmainf

Регистрация в перечне РКН https://clck.ru/3EpL9L
Download Telegram
Команда umask

Эта команда задаёт набор прав, которые будут применены к файлам и директориям при их создании (настройки заданные командой будут действовать только для новых файлов).

Команда работает в пределах одной сессии терминала и не распространяется на всю систему и другие сессии.

Команда umask задаёт маску прав для новых файлов и каталогов. При создании любого файла операционная система запрашивает маску прав и рассчитывает маску на основе неё (по умолчанию маска 0002). Первая цифра ни на что не влияет и является пережитком синтаксиса языка C. Дальше цифры аналогичны правам доступа в Linux: первая - владелец, вторая - группа и третья - все остальные.

Если команде передать опцию -p, то она выведет команду для установки текущей маски:
umask -p

Параметр -S выводит текущие разрешения в формате u=rwx, g=rwx, o=rx:
umask -S
Таблица разделов диска

Таблица разделов — это служебная область на диске, в которой хранится таблица с информацией о разделах диска. Они бывают разных типов, например, GParted позволяет создать таблицы следующих типов: msdos, aix, amiga, bsd, dvh, gpt, mac, pc98, sun и loop. (Отличаются разной структурой, надежностью и возможностями). 

Для жестких дисков с Linux обычно используются таблицы разделов MSDOS и GPT. У таблиц MSDOS главный недостаток — они не поддерживают диски объемом более 2.2Тб. Сейчас рассмотрим GPT, т.к. он поддерживается Linux и имеет несколько важных плюсов:
 ⁃ поддерживает диски очень больших размеров, позволяет давать символьные метки для разделов;
 ⁃ позволяет создавать 128 основных разделов. (точнее, для GPT вообще нет разделения разделов на основные, логические и расширенные).
Дистрибутивы похожие на MacOS

Elementary OS
В роли графической оболочки выступает Pantheon. Она использует библиотеки GTK и выглядит довольно приятно. Среди разработчиков немало дизайнеров, поэтому им удалось создать красивую, но нефункциональную систему.

Deepin
Это китайский дистрибутив, но имеющий локализацию на другие языки. Используется оболочка собственной разработки – Deepin Desktop Environment. Она использует библиотеки Qt, а для вёрстки HTML5 и движок Chromium.

Zorinos Ultimate
Zorin OS основывается на Ubuntu и использует переработанную оболочку GNOME. Базовая версия (Core) не позволяет включить оформление, напоминающее macOS, это доступно только в платной Ultimate.

Ubuntu Mate
Вариация Ubuntu с оболочкой Mate примечательна тем, что в неt добавлено множество конфигураций панели. Есть такие темы, как Redmond, Cupertino и другие. Именно Cupertino позволяет преобразить систему, сделав её похожей на macOS.
Что никогда нельзя делать в терминале

 1. Запуск rm -rf /*. Команда rm используется для удаления файлов/каталогов. Флаги -r и -f используются для обозначения рекурсивного удаления всех файлов внутри указанного каталога.

 2. Если вы знакомы с файловыми системами, вы знаете, что /dev/sda — это раздел вашего диска. И однажды запустив команду echo "Hello" > /dev/sda, это заменит ваш раздел, содержащий все данные, необходимые для загрузки системы, строкой «Hello».

 3. Внутри каждой системы Linux есть пустота. И эта пустота — /dev/null. Все, что вы бросаете в эту область, теряется навсегда. Поэтому не стоит копировать все в эту «черную дыру» mv /home/user/* /dev/null
Команда fdisk

fdisk — самая простая утилита для разметки диска в терминале. Именно она используется чаще всего, если надо посмотреть как диски и разделы доступны на компьютере.

Примеры:
Чтобы посмотреть список доступных вам дисков и разделов на них используйте опцию -l:
sudo fdisk -l

Большинство операций fdisk по разметке дисков выполняются в интерактивном режиме. Чтобы запустить fdisk в интерактивном режиме передайте утилите блочное устройство которое надо разметить:
sudo fdisk /dev/device

Далее в интерактивном режиме:
Чтобы посмотреть текущий тип таблицы разделов, а также доступные разделы на диске используйте команду p:
(fdisk) p

Чтобы создать новую таблицу разделов GPT используйте команду g. Для таблицы разделов MBR нам бы понадобилась команда o.
Переменная jiffies

Глобальная переменная jiffies содержит количество импульсов системного таймера, которые были получены со времени загрузки системы. При загрузке ядро устанавливает значение этого параметра в нуль и он увеличивается на единицу при каждом прерывании системного таймера. 

Так как в секунду возникает HZ прерываний системного таймера, то за секунду значение переменной jiffies увеличивается на HZ. Время работы системы (uptime) поэтому равно jiffies/HZ секунд.

Переменная jiffies определена в файле linux/jiffies.h следующим образом:
extern unsigned long volatile jiffies;
Несколько основных загрузчиков, которые можно встретить в системах Unix:

GRUB. Почти универсальный загрузчик для систем Linux с версиями BIOS/ MBR и UEFI.

LILO. Один из первых загрузчиков Linux. ELILO версия UEFI.

SYSLINUX. Может быть настроен для запуска из множества файловых систем.

LOADLIN. Загружает ядро из MS-DOS.

systemd-boot. Простой менеджер загрузки UEFI.

coreboot (ранее LinuxBIOS). Высокопроизводительная замена BIOS для персональных компьютеров, которая может содержать ядро.

Linux Kernel EFISTUB. Плагин ядра для загрузки ядра непосредственно из системного раздела EFI/UEFI (ESP).

efilinux. Загрузчик UEFI, предназначенный для применения в качестве модели и эталона для других загрузчиков UEFI.
GNU General Public License

GNU GPL - это свободная лицензия для программного обеспечения, разработанная Free Software Foundation. 

Если коммерческие лицензии запрещают распространять и изменять программное обеспечение, то GNU GPL гарантирует право пользователя на свободное использование программ. 

Большая часть программного обеспечения Free Software Foundation распространяется под лицензией GNU GPL. Любой автор может использовать эту лицензию для своего ПО.

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

И накладывает всего одну обязанность — делиться с общественностью измененными версиями программ (даже если вы переписали две строчки кода, вы обязаны предоставить другим свободный доступ к программе и ее исходному коду).
Как Linux настраивает сетевые карты?

Весь процесс организации сети в Linux состоит из множества движущихся частей и механизмов. 

Как и в Windows, в Linux есть файл конфигурации для каждого сетевого интерфейса. Важно отметить, что сетевой интерфейс может быть либо виртуальным, либо физическим устройством, либо проводным, либо беспроводным устройством. 

Эти файлы конфигурации network-noscripts сообщают операционной системе такие вещи, как имя интерфейса, должен ли он использовать DHCP или должен ли быть включен IPv6.
Файловая система в памяти для начальной инициализации

initramfs - это начальная файловая система в оперативной памяти, основанная на tmpfs. Так же как и initrd, она содержит утилиты и скрипты, требуемые для монтирования файловых систем перед вызовом бинарного файла init, располагающегося на действительной корневой файловой системе. 

Содержимое initramfs делается путем создания cpio-архива. (его можно сравнить с tar архиватором).

Все файлы, утилиты, библиотеки, настройки конфигурации (если они применимы), и т.д. помещаются в cpio-архив. Этот архив затем сжимается с использованием утилиты gzip и сохраняется в том же месте, что и ядро Linux. Далее, загрузчик передаст его ядру Linux во время загрузки, чтобы ядро знало о том, что требуется initramfs.

При его обнаружении, ядро Linux создаст файловую систему tmpfs, извлечет на нее содержимое архива и затем запустит init-скрипт. Этот скрипт примонтирует действительную корневую файловую систему.

Как только корневая файловая примонтирована, init-скрипт переключает root на действительную корневую файловую систему и, в завершение, вызывает /sbin/init на этой системе, для продолжения процесса загрузки.
Лицензии из семейства GNU

GNU GPLv2 — защищает права пользователей и разработчиков свободного программного обеспечения. Разрешает запускать программы в любых целях. Запрещает распространять программу, если она не реализует четыре свободы.

GNU GPLv3 — для того же, для чего и GPLv2, а также для защиты пользователей свободного ПО от патентных исков. Запрещено: использовать DRM (если они есть, то необходимо предоставлять ключи вместе с исходным кодом) и использовать патенты для программ под GPLv3 (так как GPL и патенты несовместимы).

GNU LGPL — для совмещения открытого и проприетарного кода. Если проприетарная программа работает с библиотекой, лицензированной по LGPL, распространитель обязан предоставить исходный код лишь этой библиотеки.

GNU AGPL — для веб-приложений. Разработчик облачного сервиса должен предоставить пользователям его исходный код.

GNU FDL — Для технических и иных документов. На производных документах должно быть указано имя автора исходного документа. Документ под FDL нельзя перелицензировать.
MKINITPCIO

mkinitcpio — это bash-скрипт, используемый для создания начального загрузочного диска системы.

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

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

mkinitcpio создан разработчиками Arch Linux и вкладами сообщества.
Что такое UEFI?

Unified Extensible Firmware Interface — микропрограмма, встроенная в материнскую плату. Пришла на смену БИОС. Как и последний, управляет оборудованием на низком уровне и дает возможность выполнить начальную настройку запуска компьютера.

Основные возможности новой системы:
Встроенный менеджер загрузки.
Наличие графического интерфейса для настройки.
Поддержка загрузки ОС с GPT-дисков.
Хранение дампов после сбоя в NVRAM (при наличие возможности со стороны ОС).

UEFI может мешать загрузки компьютера с флешки или установке ранних версий Windows (7 и ниже) и Linux. В таком случае, его можно отключить. Для этого в UEFI необходимо переключить его в режим Legacy или отключить Secure Boot.
Команда Dracut

Dracut явно используется в Fedora и дистрибутивах, которые могут быть частью семейства Red Hat, но могут использоваться в дистрибутивах сообщества, Gentoo и Arch Linux

Лучший способ создать образ initramfs в Linux — использовать команду Dracut. Команда генерирует фотографии initramfs со всем работоспособным функционалом, обеспечивая установку модулей Dracut и комбинации систем.

Чтобы перезаписать существующее изображение:
sudo dracut -force

Выбрать любое другое имя файла для фотографии:
dracut new_name.img

Чтобы быстро запустить правильную командную строку ядра в вашей системе:
sudo dracut --print-cmdline
rEFInd — что такое? 

rEFInd — это менеджер загрузки для компьютеров, использующих EFI/UEFI (Unified Extensible Firmware Interface). Если у вас есть ноутбук или ПК, выпущенный за последние 10 лет, то он использует EFI вместо BIOS. И EFI, и BIOS — это низкоуровневое программное обеспечение, которое действует как интерфейс между ОС и прошивкой на материнской плате. Прошивка на вашей материнской плате — это еще одно низкоуровневое ПО, которое управляет аппаратными компонентами.

BIOS был разработан в 1970-х годах и преобладал до конца 2000-х, когда его начали постепенно заменять EFI. BIOS предоставляет базовый текстовый интерфейс. С другой стороны, EFI может предоставить полную графическую среду с поддержкой мыши и графических элементов управления.
Параметры ядра

Есть три способа передать параметры ядру и таким образом контролировать его поведение:
 ⁃ При сборке ядра — в конфигурационном файле ядра. 
 ⁃ При запуске ядра — с использованием параметров командной строки (обычно через загрузчик).
 ⁃ Во время выполнения — через файлы в /proc/sys/ (sysctl) и /sys/.

В этих трех методах настраиваемые параметры различаются по доступности, имени и методу, в котором они указаны. 

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

Параметры командной строки ядра имеют формат: parameter или parameter=value.
sbctl - Secure Boot Manager

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

Он написан на Golang с использованием go-uefi для уровня API и не зависит от существующих инструментов безопасной загрузки. Он также интегрирован с tianocore, используя vmtest.

Его возможности:
 ⁃ Управляет безопасными загрузочными ключами
 ⁃ Живая регистрация ключей
 ⁃ База данных для подписи, помогающая отслеживать файлы для подписи
 ⁃ Проверка ESP файлов с отсутствующими подписями
 ⁃ Генерация заглушки EFI
 ⁃ Вывод JSON
Как UEFI заменяет и улучшает BIOS?

UEFI заменяет традиционный BIOS на PC. На существующем PC никак нельзя поменять BIOS на UEFI. Нужно покупать аппаратное обеспечение, поддерживающее UEFI. Большинство версий UEFI поддерживают эмуляцию BIOS, чтобы вы могли установить и работать с устаревшей ОС, ожидающей наличия BIOS вместо UEFI – так что обратная совместимость у них есть.

UEFI может работать в 32-битном или 64-битном режимах и её адресное пространство больше, чем у BIOS – а значит, быстрее загрузка. Также это значит, что экраны настройки UEFI можно сделать красивее, чем у BIOS, включить туда графику и поддержку мыши, но это не обязательно. Многие компьютеры по сию пору работают с UEFI с текстовым режимом, которые выглядят и работают так же, как старые экраны BIOS.

В UEFI встроено множество других функций. Она поддерживает безопасный запуск Secure Boot, в котором можно проверить, что загрузку ОС не изменила никакая вредоносная программа.
Архив CPIO

CPIO — это общая утилита архиватора файлов и связанный с ней формат файла. В основном устанавливается на Unix-подобные ОС

Эта программная утилита изначально задумывалась как программа архивирования лент как часть Programmer's Workbench (PWB/UNIX). Его название происходит от фразы «copy in and out».

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

Использование cpio диспетчером пакетов RPM, в программе initramfs ядра Linux 2.6 и в установщике Apple (pax) делает cpio важным инструментом архивирования.

POSIX отказался от команды cpio в пользу команды pax.
Команда cpio

Команда cpio позволяет использовать утилиту для архивации данных с соответствующим именем. Эта утилита поддерживает как собственный бинарный формат архивов CPIO, так и популярный формат архивов TAR.

Примеры использования:
Извлечение файлов из архива формата CPIO в текущую директорию
cpio -i < archive.cpio

Создание архива формата CPIO с перенаправлением стандартного потока вывода
ls | cpio -o > archive.cpio

Создание архива формата CPIO с указанием имени файла архива
ls | cpio -o -F archive.cpio
Initial RAM Disk 

Сокращение от английского Initial RAM Disk (диск в оперативной памяти для начальной инициализации)  — это временная файловая система, используемая ядром Linux при начальной загрузке. 

Initrd обычно используется для начальной инициализации перед монтированием «настоящих» файловых систем. 

В Linux Kernel HOWTO (руководстве о сборке ядра) пишут, что initrd призван решить проблему курицы и яйца для модульного ядра: для монтирования файловой системы необходим модуль для работы с диском и файловой системой, а для чтения модуля необходима файловая система, с которой этот модуль читается.