+22620.23
Рейтинг
61736.74
Сила

Мифы о пингвинах

Введение

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

ОС Linux нет

Для начала давайте разберемся в терминологии и как работает компьютер. У нас есть программы. Их работу обеспечивает операционная система (ОС). Работу операционной системы обеспечивает ядро ОС. Вот такая матрешка: Ядро -> ОС -> Программы.
По большому секрету, с тем что “я поставлю себе Linux” есть большая терминологическая путаница. Верно говорить, например, “я поставлю себе Debian GNU/Linux”.
Дело в том, что Linux — это универсальное ядро ОС. Оно может работать с любой ОС совместимой с ним. Короче Linux — это только ядро.
Операционная система, к которой мы все привыкли и которая стоит на наших серверах и десктопах называется GNU. GNU совместим с ядром Linux и именно эта ОС идет в паре с этим ядром в большинстве дистрибутивов.
А что же такое дистрибутив? Дистрибутив — это готовый набор “Ядро+ОС+Программы”. Каждый дистрибутив — это просто хорошо собранный и отлаженный пазл из ядра Linux + ОС GNU + набора программ. Например Debian GNU/Linux.

Кстати тот же Debian есть в варианте с другим ядром, сборка имеет ключевое слово kfreebsd — это Debian GNU с ядром от FreeBSD.

В общем ОС Linux нет, есть ядро, классное красивое и универсальное. На этом ядре делают ОС для мейнфреймов (1 место в мире), для серверов (1 место в мире), десктопов (3 место в мире) и сетевого оборудования (например для домашних роутеров).

С чего все начинается?

Помимо того что у нас есть уже установленный Debian GNU/Linux, он должен как то запускаться. Вернее кто то должен его запускать. Вместе с Debian идет универсальный загрузчик ОС — GRUB. Grub может запускать не только Linux, но и любую ОС поддерживающую протокол multiboot — freebsd, netbsd, openbsd, любой Linux+GNU, а можно и без GNU. Помимо этого Grub может запустить MacOS и Windows без multiboot.

Так как же стартует наш компьютер с Linux?
Сперва запускается материнская плата и её встроенные программы. Они организуют доступ процессора к коду BIOS и запускают процессор (CPU). CPU начинает выполнять код BIOS.
Единственная задача BIOS в этом случае — найти и запустить загрузчик. Он находит загрузчик на одном из дисков. Вот то, что нашел BIOS — это не сам GRUB, это boot-загрузчик размером 512 байт. Он называется stage1. Этот маленький 512 байт загрузчик, единственное что делает — загружает GRUB с того же диска.
Ну вот GRUB загрузился и у нас на экране есть приветствие с выбором варианта загрузки ОС и обратный отсчет до загрузки в режиме “по умолчанию”. Мы ждем эти три секунды…
Далее GRUB делает следующее.
Он загружает в память ядро Linux и так называемый initramfs. initramfs — это минимальный образ системы GNU, необходимый для того, чтобы загрузить саму систему. В этом образе собраны драйвера для работы с железом и имеются настройки необходимые для запуска ОС.
Ядро и initramfs загружены и GRUB передает управление в точку входа в ядре. Ядро инициализируется. Запускает модули, находит и регистрирует оборудование, файловые системы, сетевые интерфейсы и прочее. Когда ядро завершит свою прелюдию — оно запускает /sbin/init из initramfs. Эта программа делает одну задачу — подготовку к запуску ОС — сборку RAID, LVM, монтирование файловых систем.
Когда /sbin/init сделал свое дело происходит магическая операция — Change Root. Ядро убивает загруженный в память образ initramfs и монтирует корневую файловую систему нашей ОС.
После, управление передается в /sbin/init уже из нашей “настоящей” системы. Он выполняет тоже только одну задачу — запускает программы из списка запуска.
Программы запускаются, настраивается сеть, запускается графическая оболочка.
Ну вот, наша ОС загружена.

Коротко, обо всех шагах загрузки GNU/Linux:
  1. BIOS — загружает boot-loader
  2. boot-loader 512 байт — загружает grub
  3. GRUB — загружает ядро и initramfs
  4. Ядро ищет и стартует оборудование
  5. initramfs (/sbin/init) готовит всё для запуска ОС
  6. Change Root на настоящую систему
  7. /sbin/init настоящей системы запускает программы
  8. Мы видим приветствие для входа в систему (одна из запущенных на шаге 7 программ, например gdm)

Зачем всё так сложно?

Да нет! Всё только кажется сложно — каждая отдельная часть проста и выполняет маленькую свою задачу, каждая часть простая как пробка. Не верите?

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

boot-loader, который загружает GRUB просто до невозможного — он даже весит всего 512 байт. Я его писал несколько раз — поверьте 40 минут для этого хватит “за глаза”. Он очень прост.

GRUB единственное, что умеет — загружать ОС. Кстати GRUB внутри разбит на мелкие и простые кусочки.

Ядро — единственное, что умеет — работать с железом и файловыми системами. Оно кстати тоже внутри разбито на мелкие кусочки — модули. Каждый модуль — выполняет только свою задачу.

Initramfs — проста до безобразия — в ней только файлы с модулями ядра нужными для работы с железом и файловыми системами. И маленький /sbin/init, который написан на bash и просто собирает RAID так, как написано в конфиге, который тоже прост до безобразия.

Change Root — операция, которая написана в коде ядра Linux, выглядит магической, но поверьте — она проста до безобразия — грохнуть несколько страниц памяти и воспользоваться уже запущенными модулями, чтобы смонтировать корневую FS.

/sbin/init из настоящей системы? Да это просто цикл for, который пройдет по файлам из директорий /etc/rc*.d в нужном порядке и запустит каждый файл.

ОС не сложна. Сложны программы в ней. Сам GNU/Linux прост и прозрачен. Ядро максимально отделено от системы, загрузчик отделен от всего остального. Каждый делает свое маленькое дело и в результате получается гибкая и универсальная система. Это и есть пример правильной и красивой архитектуры ОС.

Ядро и модули

Ядро Linux — не монолит. Оно было бы слишком сложным, а никто этого не любит (м.б. кроме индусов из “некоторых компаний”). Оно разбито на модули. Каждый модуль умеет работать с чем то одним — с какой то одной железкой или файловой системой или еще чем то одним.

Я не раз писал модули ядра и это действительно просто, т.к. большую часть за тебя уже сделали и тебе просто нужно сделать “свою часть”.

И как я это всё себе установлю? Я не умею!

А ничего уметь и не надо. Установочная программа, того же Debian GNU/Linux сама найдет ваши диски и предложит настроить FS. Вообще настройка FS — это единственное что придется настроить при установке Linux. На эту FS и ваши диски она сама поставит GRUB и boot-loader, сама установит ОС и ядро, сама сделает образ initramfs.

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

Как этим управлять то потом?

Это тоже не сложно. Обычному пользователю из управления системой нужно всего две команды:
apt-get install программа
apt-get remove программа

Debian GNU/Linux настолько прост в использовании, что Вам даже не придется искать нужный софт — всё уже нашли за Вас, дали название и положили в репозиторий.
Вы просто скажите ОС — “поставь мне chromium“ (apt-get install chromium) и через несколько секунд у Вас уже будет скачан и установлен Ваш любимый браузер.

Я хочу тоже писать Linux!

Linux — как ядро, GNU — как ОС, Debian — как дистрибутив — полностью открытое ПО. Каждый желающий может написать что то свое, отладить “на себе” или “на кошках” и отправить патч (или ныне модный pull-request) меинтейнерам. Они посмотрят Ваш код и идею и если это действительно нужная людям вещь — включат её в ядро, в ОС или дистрибутив (смотря что вы там написали).

Откуда истории о бубнах и ”сексе с Linux”

Таких историй масса и выражают они свое негодование. А причина негодования проста — я хочу настраивать (я же админ!), но не хочу читать документацию. Вообще в Linux и GNU всё стандартизировано и описано. Если вы, простите, извращенец и хотите запустить Linux на какой то странной файловой системе — прочитайте — умеет ли её GRUB. Вы поймете, сможет ли GRUB запустить вашу ОС (прочитать файл с ядром и initramfs). В той же документации прочитайте, возможно в GRUB нужно будет добавить специальный модуль для вашей “странной” FS.

Вторая причина бубнов — тоже не читают документацию, только к железу. Сейчас на рынке масса железа. Не всё железо поддерживается всеми ОС. Не верите? Windows работает везде? Поставьте Windows 7 на IBM System-Z, а я посмеюсь. Это беда некоторых производителей железа — отсутствие открытой документации и в следствие чего отсутствие драйверов. Сейчас Linux можно запустить на любом железе. Странности возникают с нестандартным (или очень редким оборудованием), обычно приобретаемом дополнительно от компьютера. Такие вещи как web-камеры или графические планшеты уже давно не проблема для Linux — почти все производители подобного оборудования либо сами написали драйвера, либо открыли документацию и это сделал разработчики Linux. Но всё же, прежде чем купить железку — убедитесь, что Linux с ней знаком.

Всё идеально? Но есть же сложности

Сложности есть — единственная сложность, которую до сих пор мне приходится обходить — форматы офисных документов. К сожалению MS, как монополист рынка офисного ПО пожелал не раскрывать эти форматы. Но я выхожу из ситуации легко — Google Docs, это даже удобнее чем MS Office.

Послесловие
Система GNU, ядро Linux и многочисленные дистрибутивы — просты. В этой статье мне удалось быстро и кратко рассказать об одной из основных задач системы — её загрузке. И вы поняли! Это говорит о том, что все не так сложно и не нужно этого боятся.

Удачи тебе, начинающий Linuxоид (а может и будущий разработчик этой прекрасного ядра и ОС GNU).

Источник: geektimes.ru/post/247134/

Печатаем ушки на 3D принтере или наш Котэ против японской MiMi

Аниматроника — создание подвижных роботов, которые имитируют движения живых существ настоящих или вымышленных.



Чуть больше года назад мне показали концепт видео с «necomimi» – откровенно фриковский гаджет. Это кошачьи ушки, управляемые с помощью сигналов мозга считываемых с помощью двух нейросенсоров. Очень эмоциональная игрушка. Сначала хотелось купить её разобрать и собрать как-то по другому. Почему по другому? Я посмотрел в сети очень много видео про эти «мими» и понял, что во первых уши двигаются только в одной плоскости, что выглядит как-то скованно. Настоящие кошарики двигают ушами во всех степенях свободы. А во вторых вот эти нейросигналы с нейродатчиками какая-то сомнительная технология. Мелким девчонкам с трудом удавалось пошевелить ушками, как бы они не морщили свой лобик, пытаясь представить рожок мороженого. Одна даже плакала.

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

Что нам понадобится?

1. Микроконтроллер Arduino Nano или MP1511 от МастерКит
2. Четыре сервомашинки. Микро или мини. На 180 градусов.
3. Пять кнопок и включатель
4. Источник питания в 5-6 В (четыре пальчиковые батарейки или ещё лучше повербанк для смартфона)
5. Немного проводов, паяльник
6. Нитка с иголкой
7. Два лоскута фетровой ткани разных цветов
8. Пару часов свободного времени
9. Но самое главное – доступ к 3D принтеру. На нем то и будем печатать каркас ушей и кинематику.
10. Свободный вечер ))

Файлы ушек, каркаса и ободка для крепления сервомашинок выложены в виде STL-файлов на нашем сайте на этой странице. Они адаптированы для печати на MC3. Но, впрочем, их можно печатать на любом 3D принтере. Корпус для контроллера и кнопок каждый может придумать сам.

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

Скрепляем винтом с гайкой детали для сервомоторчиков как показано на рисунке. Должны получиться два симметричных каркаса:




Читать дальше →

Биокомпьютерная музыка

Интересный эксперимент на стыке музыки, биологии и инженерии проводится в Междисциплинарном Центре Исследований Компьютерной Музыки в Университете Плимута (ICCMR).



Эдуардо Миранда (композитор и директор ICCMR) и его команда собрали биокомпьютер на основе лесной слизистой плесени Physarum polycephalum и разработали интерфейс для ее взаимодействия с пианино.

Вся установка представляет из себя систему с обратной связью.

Биокомпьютер — это аналоговая схема с пакетиками плесени, к которой подключены проводки для электрической стимуляции организма и для замера ответных микротоков в его тканях. На деке пианино закреплены электромагниты, которые работают как звукосниматели и бесконтактные медиаторы. Человек играет на инструменте, выходные сигналы звукоснимателей преобразуются в импульсы, посылаемые плесени. Плесень «слушает» и «отвечает», ее ответ интерпретируется схемой как набор нот и преобразуется обратно в ток для колебания струн. Так получается аккомпанемент.

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

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

По сути, ответный звук производится тем же пианино, но звукоизвлечение далеко и от традиционного, и от авангардного.
Эдуардо Миранда утверждает, что процесс создания музыки посредством такой системы имеет совершенно новые свойства. Это, возможно, так. Было бы интересно разобраться в конструкции биокомпьютера более детально, чтобы понять, не эквивалентна ли схема с плесенью генератору шума, пропущеному через софтовый фильтр для гармонизации звучания, и присутствуют ли в ответе Physarum polycephalum закономерности, позволяющие назвать этот ответ аккомпанементом.

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

Источник: geektimes.ru/post/247120/

Астронавты NASA будут использовать очки дополненной реальности в космосе

NASA объединилась с производителем электроники для военной промышленности Osterhout Design Group, чтобы с помощью дополненной реальности сделать работу астронавтов удобнее и эффективнее. Очки от ODG построены на базе Qualcomm Snapdragon 805, оснащены камерой, модулями Wi-Fi, Bluetooth, гироскопами, и работают под управлением специальной версии Android. По словам разработчика, они позволяют делать почти все, на что способен обычный планшет.




Читать дальше →