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

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

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

Независимый дистрибутив Linux, который использует диспетчер пакетов X Binary Package System (XBPS), который был разработан и реализован с нуля, и систему runit init. За исключением двоичных больших объектов ядра, базовая установка полностью состоит из бесплатного программного обеспечения.

Void Linux был создан в 2008 году Хуаном Ромеро Пардинес, бывшим разработчиком NetBSD, для тестирования менеджера пакетов XBPS.

Void был первым дистрибутивом, который по умолчанию включил LibreSSL в качестве библиотеки системной криптографии. В феврале 2021 года команда Void Linux объявила о возвращении на OpenSSL 5 марта 2021 года. Среди причин были проблемный процесс установки исправлений на программное обеспечение, которое в первую очередь было написано для работы с OpenSSL, поддержка некоторых оптимизаций и более ранний доступ к новым алгоритмам.
Komikku — для всех любителей манги!

Komikku — это программа для чтения манги с открытым исходным кодом, доступная только для Linux.

Прежде всего, он предназначен для работы в среде рабочего стола GNOME, но вы можете использовать его в дистрибутивах Linux, работающих под управлением других сред рабочего стола.

Komikku можно использовать для просмотра манги онлайн и офлайн. 

Komikku доступен на Flathub. Однако вам необходимо настроить Flatpak и включить репозиторий Flathub в вашей системе. После этого вы можете установить его со своего терминала:
flatpak install flathub info.febvre.Komikku
Недостатки линукса

Как и все, Linux не является безупречным выбором.

Трудности при освоении
Когда вы вступаете в мир Linux, вы должны быть готовы приложить немного усилий для изучения неочевидных вещей.

Разнообразие
У линукса очень много всевозможных дистрибутивов, в которых обычный новичок может просто не справится. Хоть большинство и рекомендует использовать лучшие дистрибутивы Linux, предназначенные для начинающих, выбор того, что вам может понравится, иногда ошеломляет.

Отсутствие проприетарного ПО
Не все заинтересованы в переносе своих инструментов/приложений в Linux. Следовательно, вы можете не найти все приложения, которыми вы раньше пользовались в Windows/macOS. 

ОС не для игр
Если вы хотите играть на своем компьютере, Windows остается лучшим вариантом благодаря поддержке новейшего оборудования и технологий.
Когда дело доходит до Linux, есть много «если» и «но» для четкого ответа.
Команда dos2unix

Команда, которая пытается помочь с кросс-платформенной совместимостью. Текстовые файлы часто имеют невидимые «управляющие» символы в конце строк, которые препятствуют синтаксическому анализу в Linux. Именно здесь команда dos2unix спешит исправить такие вещи. 

Dos2unix удаляет эти управляющие символы ^M и ^V, расположенные в конце строк, которые вы могли видеть, когда вы выполняете vi/vim файла. Конечно, вы можете удалить их, если знаете, как глобально заменить такие символы на vi, но в противном случае это проблематично.

dos2unix some_file.txt
Как создать открытый и закрытый ключи в Linux

Генерация ключей происходит с помощью команды ssh-keygen. В консоле набираем:
ssh-keygen -t rsa

Также можно создать ключ, используя технологию DSA:
ssh-keygen -t dsa

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

Далее предлагают указать место для хранения нашего ключа. По умолчанию это будет папка .ssh в вашей домашней директории. Для того, чтобы согласиться с настройками по умолчанию, просто нажимаем «Enter».

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

Теперь открытый и закрытый SSH-ключи могут быть сгенерированы. И если вы перейдете в директорию .ssh, там будут два файла: id_rsa(закрытый) и id_rsa.pub(открытый)
5 причин почему Ubuntu лучше Windows

 1. Безопасность.
Система Windows изначально была спроектирована как однопользовательская операционная система, поэтому все дополнительные механизмы добавления поддержки нескольких пользователей дорабатывались потом. 
 2. Обновления.
Пользуясь Windows вы, наверное, не раз сталкивались с ситуацией, когда система в самый неподходящий момент предлагала обновиться.
 3. Настраиваемость.
Наверное многие из пользователей Windows пытались настаивать расположение панели, шрифты, иконки, курсоры. Это довольно сложно.
 4. Легковесность.
Windows позиционируется как полноценная современная операционная система и для её работы необходимо современное оборудование и большой объем памяти.
 5. Контроль над системой.
Windows пытаются принимать решения за пользователя и скрывают множество процессов. На первый взгляд, это облегчает работу с ОС. Но если у вас что-то перестает работать и надо разобраться почему, то сделать это не так просто.
Дистрибутивы похожие на Windows

Zorin OS
Основывается на Ubuntu и использует оболочку GNOME. Стоит отметить, что внешний вид существенно отличается как от классического GNOME, так и от Ubuntu. Присутствует привычное стартовое меню. В этом плане переход c Windows не потребует долгого привыкания.

Linux LITE
Использует оболочку Xfce. Хоть она и имеет несколько устаревший внешний вид, но работает довольно хорошо. Её можно использовать на относительно слабых компьютерах. Xfce довольно популярная, и для неё можно найти темы в стиле Windows 10.

Kali Linux
Это специфичный дистрибутив. Он был создан в качестве рабочего инструмента для выявления уязвимостей. Достаточно запустить Kali Undercover Mode и Linux замаскируется под Windows

LinuxFX
LinuxFX от бразильских разработчиков представляет собой значительно переработанный дистрибутив Ubuntu. Его создатели постарались воссоздать Windows не только внешне. В качестве оболочки используется Cinnamon.
Инсталляция модуля 

Инсталляция модуля, если говорить о инсталляции как о создании цели в Makefile, должна состоять в том, чтобы: 
 1. Скопировать собранный модуль в его местоположение в иерархии модулей в исполняющейся файловой системе (часто это каталог
/lib/modules/`uname -r`/misc). 
 2. обновить информацию о взаимных зависимостях модулей (в связи с добавлением нового), что делает утилита depmod

Но если создаётся цель в Makefile инсталляции модуля, то обязательно должна создаваться и обратная цель деинсталляции: лучше не иметь оформленной возможности инсталлировать модуль (оставить это на ручные операции), чем иметь инсталляцию не имея деинсталляции!
Права доступа к файлам

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

Изначально каждый файл имел три параметра доступа:
 1. Чтение - разрешает получать содержимое файла, но на запись нет. 
 2. Запись - разрешает записывать новые данные в файл или изменять существующие, а также позволяет создавать и изменять файлы и каталоги;
 3. Выполнение - вы не можете выполнить программу, если у нее нет флага выполнения. 

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

 ⁃ Владелец - набор прав для владельца файла, пользователя, который его создал или сейчас установлен его владельцем.
 ⁃ Группа - любая группа пользователей, существующая в системе и привязанная к файлу. 
 ⁃ Остальные - все пользователи, кроме владельца и пользователей, входящих в группу файла.
Команда 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 и вкладами сообщества.