gladilov.org.ru gladilov.org.ua

36 заметок с тегом

Linux

Элегантная форк-бомба


ВНИМАНИЕ!
Не запускайте эту команду, чтобы «проверить» её, так как у вашего компьютера скорее всего произойдёт сбой, влекущий за собой принудительную перезагрузку системы.

Текст бомбы:

:(){ :|:& };:

Что она делает:
 :() — объявление функции с именем :
 {:|: &} — в теле функции описан запуск её же и отправка вывода снова в функцию : (в фоне)
 ; — разделитель команд, как и &&.
 : — первый запуск функции :

Источник

RHEL прекращает поддержку KDE

С выходом  Red Hat Enterprise Linux 7.6 сообщается о прекращении поддержки KDE Plasma, которая теперь считается устаревшей. Полная поддержка KDE будет прекращена в одном из следующих релизах RHEL. Поддерживать текущие версии Red Hat обещает как минимум до 2024 года. Фокус компании уже давно сосредоточен на Gnome, в разработке которой участвует немалое количество программистов Red Hat.

Какое-то поветрие: сначала  Федора отвалилась, потом  Qubes, теперь вот RHEL...

Источники:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/7.6_release_notes/#chap-Red_Hat_Enterprise_Linux-7.6_Release_Notes-Deprecated_Functionality
https://www.theregister.co.uk/2018/11/02/rhel_deprecates_kde/

Добавление swap-файла в системе Debian

В связи с частыми вылетами демона TTRSS из-за недостатка памяти решил откусить 2 гига от корневой ФС для файла подкачки. Не уверен, что поможет, но попробую...

Создал пустой файл /swapfile размером 2 Гб:

dd if=/dev/zero of=/swapfile bs=1M count=2048

Установил ему права:

chmod 600 /swapfile

Отформатировал этот файл как своп:

mkswap /swapfile

Добавил файл подкачки в систему:

swapon /swapfile

В файле /etc/fstab добавил строку:

/swapfile     swap     swap     defaults     0     0

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

Источники:
https://wiki.debian.org/Swap
https://www.tecmint.com/create-a-linux-swap-file/
http://blog.sedicomm.com/2017/07/26/kak-sozdat-linux-swap-fajl/

LOR’у 20 лет

20 лет назад был зарегистрирован домен linux.org.ru:

Информация по данным whois.nic.ru
domain: LINUX.ORG.RU
nserver: pns1.cloudns.net
nserver: pns2.cloudns.net
nserver: pns4.cloudns.net
nserver: pns5.cloudns.net
nserver: pns7.cloudns.net
state: REGISTERED, DELEGATED
person: Private person
admin-contact: https://www.nic.ru/cgi/whois_webmail.cgi?domain=LINUX.ORG.RU
descr: Information about OS Linux for
descr: russian-speaking linux community
registrar: RU-CENTER
created: 1998.10.21
paid-till: 2018.12.15
source: RU-CENTER

Gratulacje!
!יום הולדת שמח

10 лет назад вышла первая версия платформы Android


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

К 2018 году, то есть спустя 10 лет после старта в свет вышло 17 версий операционной системы и более 40 обновлений.

Показать

Начало разработки новой операционной системы осуществлялось компанией Android Inc., но в 2005 году она была куплена компанией Google. Став владельцем разработчика, Google создал отдельный альянс, который и стал вести дальнейшую разработку операционной системы Android. Этот альянс носит название Open Handset Alliance, и именно он выпустил в свет первую официальную версию ОС Android.

Популярность операционной системы достигла такого уровня, что по данным статистики в 2014 году среди всех реализованных смартфонов более чем в 80% из них была установлена ОС Android.

Начиная с версии 1.5, каждая из них носит собственное кодовое имя. В качестве имён используются названия кулинарных изделий или десертов, причём соблюдается порядок латинского алфавита, когда кодовое имя каждой новой версии начинается на следующую букву: Cupcake, Donat, Eclair, Froyo и т. д. Каждая новая версия или обновление включают в себя исправленные ошибки, выявленные в предыдущем выпуске, а также расширение функциональных возможностей системы. Все обновления, начиная с версии 3.1, выходят каждые полгода.

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

Первым смартфоном с ОC Android стал в сентябре 2008 года НТС Dream, а в России первым появившимся в продаже смартфоном на Android стал Highscreen.

В 2018 году в свет вышла очередная версия OS Android — 9.0 Pie. Тогда же появились сообщения о том, что Google ведёт разработку новой операционной системы, которая будет носить название  Fuchsia и должна окончательно заменить Android к 2023 году. Так или нет, но пока Android продолжает удерживать в руках пальму первенства среди операционных систем для мобильных устройств.

Линус Торвальдс временно отстранился от разработки ядра Linux

Линус Торвальдс сообщил о временном уходе с поста координатора разработки ядра Linux. До возвращения Линуса его место займёт Грег Кроа-Хартман (Greg Kroah-Hartman), отвечающий за поддержку стабильной ветки ядра. Основной задачей Грега станет доведение до конца разработки выпуска 4.19, который сейчас находится на стадии четвёртого кандидата в релизы. Точных сроков не называется, но предполагается, что Линус вернётся к работе к моменту открытия следующего окна приёма изменений, в рамках которого начнётся формирование ядра 4.20.

Показать

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

На подобные мысли Линуса натолкнула собственная ошибка и реакция на эту ошибку сообщества. Линус перепутал место и время проведения октябрьского саммита мэйнтенеров ядра Linux и запланировал отдых с семьёй на это время. Линус предложил провести саммит без него, но организаторы вошли в положение Линуса и проголосовали за перенос мероприятия из Ванкувера в Эдинбург, чтобы он смог принять участие в саммите без отмены семейной поездки.

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

Кроме того, Линус Торвальдс полностью обновил документ «Code of Conflict», определяющий основные принципы разрешения конфликтных ситуаций между разработчиками ядра. Ранее правила ограничилась краткими рекомендациями по общению в цивилизованном виде без агрессии и оскорблений. Новый вариант основан на рекомендациях «Contributor Covenant», применяемых во многих открытых проектах, включая Eclipse, Freedesktop, GitLab, Ruby и Kubernetes, а также в открытых проектах Google.

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

Источник

Срыв покровов. Продолжение

Продолжение рассказа об особенностях монтирования файловых систем.

В дополнение темы монтирования двух разных ФС в одну точку монтирования имею заявить следующее:

как явствует из манов ([1], [2]), при монтировании файлов используется механизм монтирования через loop-устройство. То есть, сначала устанавливается привязка петлевого устройства /dev/loopX к монтируемому файлу, затем это устройство монтируется на точку монтирования.

Если петлевое устройство явно не указано (как у меня при проведении эксперимента), тогда mount попытается найти свободный loop-device и использовать его. Поэтому, если бы я при монтировании файлов A.img и B.img в одну точку монтирования выполнил команду losetup и cat /etc/mtab, то увидел бы нечто вроде этого: Показать

root@debian:/home/soul# losetup
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         1  0 /home/soul/A.img
/dev/loop1         0      0         1  0 /home/soul/B.img
root@debian:/home/soul# cat /etc/mtab 
rootfs / rootfs rw 0 0
. . .
/dev/loop0 /mnt/A ext2 rw,relatime 0 0
/dev/loop1 /mnt/A minix rw,relatime 0 0
root@debian:/home/soul#

Как по мне, cамый оптимальный вариант решения (подсмотрен тут) — это создать линейный RAID из двух петлевых устройств, привязанных к своим файлам, и смонтировать его в нужную точку монтирования (требует установленного пакета mdadm): Показать

root@debian:/home/soul# losetup /dev/loop0 A.img
root@debian:/home/soul# losetup /dev/loop1 B.img
root@debian:/home/soul# mdadm --build /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
root@debian:/home/soul# mount /dev/md0 /mnt
root@debian:/home/soul#

Срыв покровов

Рассказ об особенностях монтирования файловых систем.

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

Сегодня, найдя свободное время, я попробовал это выяснить опытным путём в  ВиртуалБоксовой машине с установленным  Дебианом, о чём отчитываюсь: Показать

– Создал директории /mnt/A и /mnt/B и файлы A.img и B.img (размером по 10 Мб), отформатировав их в разные файловые системы (ext2 и minix): Показать

soul@debian:~$ sudo -s
root@debian:/home/soul# fallocate -l 10M A.img
root@debian:/home/soul# fallocate -l 10M B.img
root@debian:/home/soul# ls /mnt
root@debian:/home/soul# mkdir /mnt/A
root@debian:/home/soul# mkdir /mnt/B
root@debian:/home/soul# mkfs.ext2 A.img
mke2fs 1.42.12 (29-Aug-2014)
Discarding device blocks: done
Creating filesystem with 10240 1k blocks and 2560 inodes
Filesystem UUID: 866d1e35-dad7-466a-990a-411601395777
Superblock backups stored on blocks:
        8193

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

root@debian:/home/soul# mkfs.minix B.img
3424 inodes
10240 blocks
Firstdatazone=112 (112)
Zonesize=1024
Maxsize=268966912

root@debian:/home/soul#

– Смонтировал их в разные директории (A.img в /mnt/A, B.img в /mnt/B): Показать

root@debian:/home/soul# mount -o loop A.img /mnt/A
root@debian:/home/soul# ls /mnt/A
lost+found
root@debian:/home/soul# mount -o loop B.img /mnt/B
root@debian:/home/soul# ls /mnt/B
root@debian:/home/soul#

– Отмонтировал B.img от /mnt/B и примонтировал к /mnt/A, создал каталог /mnt/A/test1: Показать

root@debian:/home/soul# umount /mnt/B
root@debian:/home/soul# mount -o loop B.img /mnt/A
root@debian:/home/soul# mkdir /mnt/A/test1
root@debian:/home/soul# ls /mnt/A
test1
root@debian:/home/soul#

– Перемонтировал A.img и B.img и примонтировал их к разным директориям, посмотрел результат создания каталога: Показать

root@debian:/home/soul# umount /mnt/A
root@debian:/home/soul# umount /mnt/A
root@debian:/home/soul# mount -o loop A.img /mnt/A
root@debian:/home/soul# mount -o loop B.img /mnt/B
root@debian:/home/soul# ls /mnt/A
lost+found
root@debian:/home/soul# ls /mnt/B
test1
root@debian:/home/soul# umount /mnt/A
root@debian:/home/soul# umount /mnt/B
root@debian:/home/soul#

– Повторил эксперимент в другой последовательности: Показать

root@debian:/home/soul# mount -o loop B.img /mnt/A
root@debian:/home/soul# mount -o loop A.img /mnt/A
root@debian:/home/soul# ls /mnt/A
lost+found
root@debian:/home/soul# mkdir /mnt/A/test2
root@debian:/home/soul#

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

root@debian:/home/soul# umount /mnt/A
root@debian:/home/soul# umount /mnt/A
root@debian:/home/soul# mount -o loop A.img /mnt/A
root@debian:/home/soul# mount -o loop B.img /mnt/B
root@debian:/home/soul# ls /mnt/A
lost+found  test2
root@debian:/home/soul# ls /mnt/B
test1
root@debian:/home/soul#

– Отмонтировал всё, удалил ненужные файлы и каталоги: Показать

root@debian:/home/soul# umount /mnt/A
root@debian:/home/soul# umount /mnt/B
root@debian:/home/soul# rm A.img
root@debian:/home/soul# rm B.img
root@debian:/home/soul# rmdir /mnt/A
root@debian:/home/soul# rmdir /mnt/B
root@debian:/home/soul# ^D
exit
soul@debian:~$

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

P. S. Здесь речь идёт о стандартных решениях, всякие там LVM, ZFS, btrfs и unionfs не рассматриваются.

Информация о системе: Показать

soul@debian:~$ uname -a
Linux debian 3.16.0-6-amd64 #1 SMP Debian 3.16.56-1 (2018-04-28) x86_64 GNU/Linux
soul@debian:~$ cat /etc/issue.net
Debian GNU/Linux 8
soul@debian:~$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
soul@debian:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.10 (jessie)
Release:        8.10
Codename:       jessie
soul@debian:~$

Ядру Linux исполнилось 27 лет

25 августа 1991 года после пяти месяцев разработки 21-летний студент Линус Торвальдс объявил в телеконференции comp.os.minix о создании рабочего прототипа новой операционной системы  Linux, для которой было отмечено завершение портирования bash 1.08 и gcc 1.40. Первый публичный выпуск ядра Linux был представлен 17 сентября. Ядро 0.0.1 имело размер 62 Кб в сжатом виде и содержало около 10 тысяч строк исходного кода. Современное ядро Linux насчитывает более 25 млн строк кода. По данным исследования, проведённого в 2010 году по заказу Евросоюза, приблизительная стоимость разработки с нуля проекта, аналогичного современному ядру Linux, составила бы более миллиарда долларов США, по другим оценкам — более 3 миллиардов.

Ядро Linux было создано под впечатлением от операционной системы  MINIX, которая не устраивала Линуса своей ограниченной лицензией. Впоследствии, когда Linux стал известным проектом, недоброжелатели пытались обвинить Линуса в прямом копировании кода некоторых подсистем MINIX. Нападение отразил Эндрю Таненбаум, автор MINIX, который поручил одному из студентов провести детальное сравнение кода Minix и первых публичных версий Linux. Результаты исследования показали наличие только четырёх несущественных совпадений блоков кода, обусловленных требованиями POSIX и ANSI C.

Показать

Первоначально Линус задумал назвать ядро Freax, от слов «free», «freak» и X (Unix). Но имя «Linux» ядро получило с лёгкой руки Ари Лемке (Ari Lemmke), который по просьбе Линуса разместил ядро на FTP-сервере университета, назвав директорию с архивом не «freax», как просил Торвальдс, а «linux». Примечательно, что предприимчивый делец Вильям Делло Крок (William Della Croce) сумел зарегистрировать торговую марку Linux и хотел со временем собирать отчисления, но позднее передумал и передал все права на торговую марку Линусу. Официальный талисман Linux-ядра, пингвин Tux, был выбран в результате соревнования, состоявшегося в 1996 году. Имя Tux расшифровывается как Torvalds UniX.

Прогресс развития ядра:

– Linux 0.0.1 — сентябрь 1991, первый публичный выпуск, поддерживающий только CPU i386 и загружающийся с дискеты;
– Linux 0.12 — январь 1992, код начал распространяться под лицензией GPLv2;
– Linux 0.95 — март 1992, обеспечена возможность запуска X Window System, реализована поддержка виртуальной памяти и раздела подкачки.
– Linux 0.96-0.99 — 1992-1993, началась работа над сетевым стеком. Представлена файловая система Ext2, добавлена поддержка формата файлов ELF, представлены драйверы для звуковых карт и контроллеров SCSI, реализована загрузка модулей ядра и файловой системы /proc.
– В 1992 году появились первые дистрибутивы  SLS и  Yggdrasil. Летом 1993 года были основаны проекты  Slackware и  Debian.
– Linux 1.0 — март 1994, первый официально стабильный релиз;
– Linux 1.2 — март 1995, существенное увеличение числа драйверов, поддержка платформ Alpha, MIPS и SPARC, расширение возможностей сетевого стека, появление пакетного фильтра, поддержка NFS;
– Linux 2.0 — июнь 1996 года, поддержка многопроцессорных систем;
– Март 1997: основан LKML, список рассылки разработчиков ядра Linux;
– 1998 год: запущен первый попавший в список Top500 кластер на базе Linux, состоящий из 68 узлов с CPU Alpha;
– Linux 2.2 — январь 1999, увеличена эффективность системы управления памятью, добавлена поддержка IPv6, реализован новый межсетевой экран, представлена новая звуковая подсистема;
– Linux 2.4 — февраль 2001, обеспечена поддержка 8-процессорных систем и 64 Гб ОЗУ, файловая система Ext3, поддержка USB, ACPI;
– Linux 2.6 — декабрь 2003, поддержка SELinux, средства автоматического тюнинга параметров ядра, sysfs, переработанная система управления памятью;
– В 2005 году представлен гипервизор Xen, который открыл эру виртуализации;
– В сентябре 2008 года сформирован первый релиз платформы  Android, основанной на ядре Linux;
– В июле 2011 года после 10 лет развития ветки 2.6.x осуществлён переход к нумерации 3.x. Число объектов в Git-репозитории достигло 2 млн;
– В 2015 году состоялся выпуск ядра Linux 4.0. Число git-объектов в репозитории достигло 4 млн;
– В апреле 2018 года преодолён рубеж в 6 млн git-объектов в репозитории ядра.

Источник

Бонус:

Ранее Ctrl + ↓
Наверх