GNU/Linux | Notes
2.4K subscribers
111 photos
8 files
75 links
Open Source, Dotfiles, Debian/Ubuntu, Software, Linux, Scripts, Notes, Terminal, Shell, Gnu, Tools, Games, Fun, Free Software Movement.

Автор: Кирилл Рехов
Почта: krekhov.dev@gmail.com
Кто я: https://xn--r1a.website/krxnotes/246
GitHub: https://github.com/krekhovx
Download Telegram
Что такое upstream?

Процесс клонирования
— это создание собственного репозитория (Б) на основе существующего (А) с целью добавить к продукту какие-то собственные изменения. Это называется fork (клонирование).

Так вот, (Б) — это форк/клон, а (А) — это upstream.

Создатель форка может быть никак не связан с создателями проекта и обычно может вносить изменения в форк, но не в upstream. В upstream он может только предлагать изменения.

Поддержкой upstream занимаются мейнтейнеры (сопровождающие) проекта. Их версия является "канонической", и все изменения, которые они принимают, обычно в конечном счёте попадают в форки, которые от них зависят. В этом смысле они "выше по течению": те изменения, что они принимают, "растекаются вниз" по форкам. Отсюда и название.

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

#git
👍162🔥1
strace

Отследить работу процесса a.out:
$ strace a.out


Вывод в файл log:
$ strace -o my-log a.out


Отслеживание конкретного процесса:
$ strace -p <pid>


Отследить встроенную команду:
$ strace bash -c 'cd /tmp'


Например, команда 'mount -t nfs ...' возвращает отрицательный статус, можно проанализировать вывод утилиты strace:
$ strace -o mount.strace -s1024 -f -i -k -n mount -t nfs <path> <to-path>


Разбор:
-s1024 длина сообщений будет полная, а не обрезанная (32 длиной).
-f отслеживать дочерние процессы (если они будут созданы - fork()).
-i указатель инструкции во время системного вызова.
-k трассировка выполнения отслеживаемых процессов.
-n номера системных вызовов.

Данные трюки я использовал при отладке ПО. Работая системным программистом часто приходилось пользоваться strace. Если strace не работает, можно обратиться к файлу /proc/sys/kernel/yama/ptrace_scope, про него описано в man 2 ptrace.

#kernel #utils
👍2343
Релиз Debian 13 (Trixie)

Ура! Вышел Debian 13 🥳

После 2 лет, 1 месяца и 30 дней разработки проект Debian с гордостью представляет свою новую стабильную версию 13 (кодовое название Trixie).

Trixie будет поддерживаться в течение следующих 5 лет благодаря совместной работе команды безопасности Debian и команды долгосрочной поддержки Debian.

Debian 13 Trixie поставляется с несколькими окружениями рабочего стола, такими как:

* GNOME 48
* KDE Plasma 6.3
* LXDE 13
* LXQt 2.1.0
* Xfce 4.20

Ссылка: https://www.opennet.ru/opennews/art.shtml?num=63702

Ссылка: https://www.debian.org/News/2025/20250809

#debian
Please open Telegram to view this post
VIEW IN TELEGRAM
27❤‍🔥8👍8🎉6😁2
Как смотреть журналы (dmesg и journalctl)

journalctl
- системный журнал (читает /var/log/journal).

Вывод в реальном времени:
$ journalctl -f


Отобразить сегодняшние записи:
$ journalctl -S today


Вывести только err уровень:
$ journalctl -S today -p err


err, warning уровни:
$ journalctl -S today -p 3..4


Показывает журнал конкретного сервиса:
$ journalctl -u <name>.service


dmesg - системный журнал ядра (читает /var/log/kern.log или напрямую из ядра).

less вывод:
$ dmesg -H


Читабельный формат:
$ dmesg -T


Показывает уровень (приоритет):
$ dmesg -x


Вывод в реальном времени:
$ dmesg -w


В сумме:
$ dmesg -HTx


Зачистить dmesg:
$ dmesg -C


#kernel #utils
👍22103❤‍🔥1🤔1
X clipboards

Primary
Старый и традиционный вид буфера. Копирование в Primary: с помощью мыши. Вставка из Primary: Middle click, Shift + insert.

Clipboard
Более современный буфер обмена. Копирование в Clipboard: Ctrl + C. Вставка из Clipboard: Ctrl + V.

Secondary
Используется реже и имеет меньшее значение в повседневной работе. Его использование зависит от конкретных приложений и инструментов.

Работа с буферами обмена через утилиту xsel:

Зачистка clipboard буфера:
$ xsel -b -c


Зачистка primary буфера:
$ xsel -p -c


Вставка в clipboard буфер:
$ echo "this is clipboard" | xsel -b -i


Вставка в primary буфер:
$ echo "this is primary" | xsel -p -i


#utils
👍18
Executable and Linkable Format (ELF)

Файл ELF является выходным файлом компилятора или линкера и имеет двоичный формат. Вместо того чтобы напрямую использовать язык CPU, мы используем ЯП, имеющий стандартные функции. Компилятор транслирует эти функции в объектный код. Этот объектный код затем линкуется в полную программу (с помощью ld). Результатом является двоичный файл, который может быть выполнен на конкретной платформе и конкретном типе CPU. Объектные файлы, библиотеки, дампы ядра, a.out файлы, всё это ELF файлы.

$ file a.out

a.out: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=7478e8fc71c172b058f3633fabcafb3b110c00a0, for GNU/Linux 3.2.0, not stripped

#build #theory
👍7
Компилятор, основные термины

Компилятор распознает язык по расширению файла.

Исходник
Исходный файл содержит код на языке Си, файл оканчиваются на .c, например file.c

Компиляция
Исходный код пропускается через компилятор, проверка на ошибки и т.д.

Результат
Бинарный файл.

Компилятор создает новый файл (исполняемый файл/бинарник), содержит машинный код, поток единиц и нулей, понятные ПК, это и есть программа.

Кодирование - бинарный код (текст воспроизводится в бинарный код (0/1)).

Декодирование - бинарный код воспроизводится в текст.

Трансляторы:
Компилятор -> СКОРОСТЬ
Интерпретатор -> ГИБКОСТЬ

#build #theory
👍14👎4🦄43
gcc (GNU Compiler Collection)

Получение объектного файла (-с (compile) означает только компиляция - без компоновки):
$ gcc -c main.c


Процесс сборки, получение бинарного файла (-o задает имя исполняемого файла):
$ gcc -o exe a.o b.o


Компиляция одиночного файла:
$ gcc main.c -o program


Поместить отладочную информацию в объектный/исполняемый файл:
$ gcc -g<level>
$ gcc -g3 main.c


Удалить отладочную информацию из ELF файла:
$ strip -s a.out


Различные уровни оптимизации 0-3, 0 - НЕ оптимизировать код:
$ gcc -O0 main.c


-O3 означает оптимизировать код (улучшает его производительность, уменьшает размер кода и т.д.) Даже если программа собрана с -O3, volatile все равно говорит компилятору - НЕ оптимизировать код.

Вывод сообщений о всех предупреждениях или ошибках, возникающих во время компиляции:
-Wall


Дополнительные предупреждения:
-Wextra


Эти флаги служат для поиска библиотек, передается компоновщику:
-L<путь> -l<библ>


Для поиска заголовочных файлов -I/usr/local/include
-I<путь>


В этой команде линкуется (связывается) exe с библиотекой math
gcc -o exe sums.c -lm


Бывают случаи когда нужной библиотеки нет в стандартной библиотеке и компиляцию придется осуществлять с дополнительным флагом, например так:
$ gcc main.c -lpthread


#utils #build
👍1052❤‍🔥2
GNU GPL License и коммерческие компании (продажа)

Если компания взяла программу под GNU GPL лицензией, внесла в неё изменения и начала продавать, но при этом ограничила доступ к своим измененным исходным кодам, она нарушает принципы данной лицензии. GNU GPL обязывает распространять исходный код программы и любые изменения к нему под той же лицензией, чтобы сохранить свободу программы для всех пользователей. Такие действия могут привести к правовым последствиям и претензиям со стороны сообщества свободного программного обеспечения. Для коммерческого ПО открывать исходники всем - это не принято, НО придется бесплатно предоставлять исходники проекта конечным получателям, даже если вы распространяете продукт за деньги. Да, продажа программы лицензией вполне разрешена. Предоставлять исходники можно как вместе с программой, так и отдельно.

#misc #opensource
👍63
Интересные мысли из лекций Ричарда Столлмана

Кто задает инструкции вашему компьютеру? Пользователь или корпорации? В большинстве случаев CPU обрабатывает огромное кол-во инструкций необходимых именно корпорациям, а не пользователю. ПК не подчиняется вашим инструкциям. ПК выполняет пользовательские инструкции в той мере, в которой ему позволяют корпорации. Либо пользователь контролирует программы, либо программы контролируют пользователя. Корпорации превращают пользовательские данные в звонкую монеты, они жадные, и найдут способы как саботировать пользователя и создать из этого прибыль. Большие компании делают большие деньги контролируя пользователей.

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

Хороший пример с человеческим организмом, люди контролируют свое питание, прием жидкости, витаминов, фруктов и т.д, а почему вычисления компьютера нельзя контролировать? Это несправедливо. Корпорации чувствуют власть над пользователями и поэтому злоупотребляют ей, они лучше знают как надо пользователю (видите ли), они постоянно испытывают искушение плохо обращаться с пользователями, таким образом корпорации внедряют различные зловредные функции (шпионаж) и пользователи не смогут это исправить, ведь ПО несвободное. В проприетарном ПО слежка уже является нормой. Windows, Mac OS, Android, IOS, Amazon - главные шпионы. Но люди все равно будут соглашаться на слежку, потому что уже не представляют свою жизнь без этих коммерческих продуктов.

Данные пользователей отправляются на сервер, который контролирует корпорация. Затем корпорация может извлекать от туда данные и делать с ними все что угодно, например, продавать другим компаниям (рекламным) и т.д. Если производитель закрытого ПО закроет свои сервера, пользователь не сможет пользоваться приложениями без них. Потому что данные передаются круглосуточно.

Почему корпорации делают все вышеописанное? Что дает им мотивацию? Прибыль, деньги. На слежке, на контроле пользователей можно делать деньги, и они это отлично понимают. Иногда корпорации творчески притворяются, что уважительно относятся к пользователю, но это не так, это уловка.

Свободное ПО, как правило, честное.
А проприетарное ПО, как правило, вредоносное.

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

#people
👍3174💯4👻2🤪21😁1
Если в /etc/apt/sources.list прописаны несколько deb-src разных релизов (например, sid, bookworm, bullseye, buster и т.д.) и нужно скачать конкретную версию пакета, например, из buster:

1. Узнаём, какие версии пакета доступны:
$ apt-cache madison mc


2. Скачиваем исходники нужной версии (например, 3:4.8.22-1 из buster):
$ apt-get source mc=3:4.8.22-1


В результате будут скачаны исходные файлы пакета mc нужной версии из соответствующего репозитория.

#debian #utils
👍12🔥52
JPG (JPEG) — не поддерживает прозрачность, сжимает файлы с потерей качества (lossy), лучше для фотографий и больших картинок.

PNG — поддерживает прозрачность, не теряет качество (без потерь), лучше для графики, иконок, скриншотов и логотипов.

#misc
19👍11🤔4👻2👎1😁1
LFS (Linux From Scratch)

LFS (Linux From Scratch) — это проект (и книга), который учит создавать Linux-дистрибутив буквально с нуля — вы компилируете и собираете каждый компонент вручную, начиная с ядра, libc, bash, gcc и далее.

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

- Процесс долгий, требует глубокого понимания Linux, компиляции, зависимостей.

- Система после сборки обычно не содержит ничего лишнего, только самые необходимые компоненты — всё остальное вы добавляете самостоятельно.

- LFS не предназначен для повседневного использования как обычный дистрибутив — это, прежде всего, учебный и исследовательский проект.

- На основе LFS можно строить свои собственные дистрибутивы, полностью контролируя набор программ и конфигураций.

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

Ссылка: https://www.linuxfromscratch.org

Ссылка: https://ru.wikipedia.org/wiki/Linux_From_Scratch

Перевод книги на русский: https://book.linuxfromscratch.ru

#kernel #books #build
👍23173🔥1😱1
Сценарии командной оболочки.pdf
6.4 MB
Рекомендую отличную книгу для освоения Bash. По ней я учился писать свои первые сценарии =) Всё объясняется понятно, много практики и примеров для автоматизации задач в Unix. Если хотите уверенно работать с командной строкой — обязательно посмотрите!

#books #shell
👍2974
Командная строка Linux.pdf
5.2 MB
Это база. Книга, которая отлично подходит для всех, кто хочет научиться уверенно пользоваться командной строкой в Linux. В ней подробно и понятно объясняются основные команды, приёмы работы с файлами, процессами и многое другое. Если хотите разобраться в Linux с нуля или углубить знания — очень советую!

#books #shell
👍2352
Ричард Столлман является основателем движения свободного ПО (СПО). Автор концепции «копилефта», призванной защищать идеалы движения; эту концепцию он с помощью юристов позже воплотил в лицензии GNU General Public License (GNU GPL) для ПО. Ранее также известный программист. Из авторских программ можно отметить GNU Emacs, Коллекция компиляторов GNU (GCC) и Отладчик GNU (GDB). С середины 1990-х годов Столлман стал программировать значительно меньше, посвятив себя распространению идей свободного ПО.

#people
❤‍🔥23👍119🥰1
Ричард Столлман считает, что закрытое ПО приведет мир к тотальной слежке и бесконтрольной передаче данных 3 лицам. Он считает, что закрытые программы ограничивают свободу пользователей и подвергают их контролю со стороны разработчиков.

"Программное обеспечение, которое не является свободным, это инструмент контроля над нами. Это нас унижает и лишает свободы". Это война с корпорациями зла Google, Microsoft. Не стоит закрывать глаза на дыры в своей безопасности. Данные, информация, это очень важно.

Ричард Столлман неоднократно подвергался давлению среди данных корпораций. Он невыгоден системе. Американское сообщество натравили на него ЛГБТ сообщества, лесбиянок, геев, трансгендеров, и пытались добиться его ухода из сообщества СПО. Отличный пример того как работает американская система.

#people
❤‍🔥52👍22🔥16💯73🤣3👎1


Нас стало более 2000 человек. Спасибо всем за внимание и активность. Для роста канала я покупал рекламу, потому что без неё довольно сложно продвигаться. Итого на рекламу потрачено 215,000 рублей. Хорошего дня!

#info
👍39🤯37🔥18🏆8😱5🤔42🤨2👎1😁1🌭1
😁67❤‍🔥3🤣1
vcmi

Это игровой движок с открытым исходным кодом, созданный для запуска и улучшения культовой игры "Герои Меча и Магии III" (Heroes of Might and Magic III). Он позволяет играть на современных операционных системах, включая Linux, и предоставляет мощную поддержку для пользовательских модификаций (модов), которые могут добавлять новые города, героев, монстров и другие игровые элементы. Проект разрабатывается сообществом энтузиастов, что способствует его развитию и интеграции новых функций. Для запуска vcmi необходимы файлы ресурсов из любой купленной версии "Герои Меча и Магии III".

Установка:
$ apt-get install -y vcmi


> GitHub
> Salsa
> Сайт

#games #opensource
🔥15👎1