ГНУ Херд
Разработчик | Проект GNU Томас Бушнелл Роланд МакГрат Маркус Бринкманн Нил Уолфилд Сэмюэл Тибо |
---|---|
Написано в | Сборка , С |
Семейство ОС | Unix-подобный |
Рабочее состояние | Текущий |
Исходная модель | Бесплатное программное обеспечение |
Первоначальный выпуск | 1990 год |
Последний выпуск | 0.9 [1] / 18 декабря 2016 г. |
Репозиторий | |
Платформы | x86-64 , IA-32 , i686 , ARM [2] |
ядра Тип | Многосерверное микроядро |
Лицензия | GPL-2.0 или новее [3] |
Официальный сайт | www |
GNU Hurd — это набор серверов микроядра , написанных как часть GNU для микроядра GNU Mach . Он разрабатывается с 1990 года проектом GNU Project Фонда свободного программного обеспечения и предназначен для замены ядра Unix . [4] и выпущено как бесплатное программное обеспечение под лицензией GNU General Public License . Когда ядро Linux оказалось жизнеспособным решением, развитие GNU Hurd замедлилось, временами чередуясь между застоем и возобновлением активности и интереса. [5]
Конструкция Hurd состоит из набора протоколов и серверных процессов (или демонов , в терминологии Unix), которые работают на микроядре GNU Mach. [4] Hurd стремится превзойти ядро Unix по функциональности, безопасности и стабильности, оставаясь при этом в значительной степени совместимым с ним. Проект GNU выбрал многосерверное микроядро [6] для операционной системы из-за очевидных преимуществ по сравнению с традиционной архитектурой монолитного ядра Unix , [7] точка зрения, которую отстаивали некоторые разработчики в 1980-х годах. [5]
Название и логотип
[ редактировать ]В декабре 1991 года главный архитектор Херда описал это название как взаимно рекурсивный акроним : [8]
Пришло время объяснить значение слова «Хёрд». «Хёрд» означает «Хирд демонов, заменяющих Unix». И затем «Хирд» означает «Хёрд интерфейсов, представляющих глубину». Насколько мне известно, у нас есть первое программное обеспечение, названное парой взаимно рекурсивных сокращений.
Поскольку и hurd, и hird являются омофонами английского слова herd , полное название GNU Hurd также представляет собой игру слов herd of gnus , отражающую принцип работы ядра. [9]
Логотип называется « Коробки Херда» и также отражает архитектуру. Логотип представляет собой граф, где узлы представляют серверы ядра Hurd, а направленные ребра — это IPC . сообщения [8]
История развития
[ редактировать ]Ричард Столлман основал проект GNU в сентябре 1983 года с целью создания свободной операционной системы GNU . Первоначально были написаны компоненты, необходимые для разработки ядра: редакторы , оболочка , компилятор , отладчик и т. д. К 1989 году лицензия GPL , и единственным важным компонентом, отсутствовавшим, было ядро. появилась [10] [11]
Разработка Hurd началась в 1990 году после отказа от попытки создания ядра в 1986 году на основе исследовательской операционной системы TRIX, разработанной профессором Стивом Уордом и его группой в Массачусетского технологического института Лаборатории компьютерных наук (LCS). [12] По словам Томаса Бушнелла , первоначального архитектора Hurd, их первоначальный план заключался в адаптации ядра 4.4BSD -Lite, и, оглядываясь назад, «теперь для меня совершенно очевидно, что это было бы великолепно, и мир стал бы совсем другим местом. сегодня." [13] В 1987 году Ричард Столлман предложил использовать микроядро Маха, разработанное Ричардом Рашидом в Университете Карнеги-Меллон . Работа над этим была отложена на три года из-за неуверенности в том, выпустит ли CMU код Маха под подходящей лицензией. [12]
С выпуском ядра Linux в 1991 году основным пользователем компонентов пользовательского пространства GNU вскоре стали операционные системы, основанные на ядре Linux ( дистрибутивы Linux ), что привело к появлению термина GNU/Linux .
Разработка Hurd шла медленно. Несмотря на оптимистичное заявление Столлмана в 2002 году, предсказывающее выпуск GNU/Hurd позднее в том же году, [14] Hurd по-прежнему не считается подходящим для производственных сред. Разработка в целом не оправдала ожиданий, и по-прежнему существует значительное количество ошибок и недостающих функций. [15] В результате продукт получился хуже, чем многие, включая Столлмана, ожидали. [16] В 2010 году, после двадцати лет разработки, Столлман сказал, что он «не очень оптимистичен в отношении GNU Hurd. Он добился некоторого прогресса, но для того, чтобы стать действительно превосходным, потребуется решить множество глубоких проблем», но добавил, что «завершить его». не имеет решающего значения» для системы GNU, поскольку свободное ядро уже существовало ( Linux ), и завершение Hurd не решило бы главную оставшуюся проблему свободной операционной системы: поддержку устройств. [17]
Проект Debian , среди прочих, работал над проектом Hurd по созданию двоичных дистрибутивов операционных систем GNU на основе Hurd для систем, совместимых с IBM PC .
После нескольких лет застоя разработка снова активизировалась в 2015 и 2016 годах: за эти два года было выпущено четыре релиза. [18] но с тех пор больше нет.
20 августа 2015 года, во время Google Summer of Code , было объявлено, что GNU Guix был портирован на GNU Hurd. [19]
Архитектура
[ редактировать ]В отличие от большинства Unix-подобных ядер, Hurd использует архитектуру сервер-клиент , построенную на микроядре , которое отвечает за предоставление самых основных служб ядра — координацию доступа к оборудованию : ЦП (посредством управления процессами и планирования ), ОЗУ (через управление памятью ) и другие различные ввода-вывода устройства (посредством планирования ввода-вывода ) для звука, графики, запоминающих устройств и т. д. Теоретически конструкция микроядра позволит построить все драйверы устройств как серверы, работающие в пользовательском пространстве . но сегодня большинство драйверов такого типа все еще содержатся в GNU Mach пространстве ядра . [20]
По мнению разработчиков Hurd, основным преимуществом проектирования на основе микроядра является возможность расширения системы: разработка нового модуля не потребует глубоких знаний остальной части ядра, а ошибка в одном модуле не приведет к сбою всей системы. . Херд предлагает концепцию трансляторов — структуру модулей, используемых для расширения функциональности файловой системы. [21]
С самого начала Hurd разрабатывался с использованием GNU Mach в качестве микроядра. Это было техническое решение, принятое Ричардом Столлманом , который думал, что это ускорит работу за счет экономии значительной ее части. Он признал, что ошибался в этом вопросе. [22] Другие Unix-подобные системы, работающие на микроядре Mach, включают OSF/1 , Lites и MkLinux . macOS и NeXTSTEP используют гибридные ядра на базе Mach.
Другие микроядра
[ редактировать ]Начиная с 2004 года, предпринимались различные попытки перенести Hurd на более современные микроядра. Микроядро L4 было первоначальным выбором в 2004 году, но прогресс замедлился и остановился. Тем не менее, в 2005 году разработчик Hurd Нил Уолфилд завершил первоначальную структуру управления памятью для порта L4/Hurd, а Маркус Бринкманн портировал важные части glibc ; а именно, заставить код запуска процесса работать, позволяя запускать программы, что позволяет запускать первые пользовательские программы (тривиальные, такие как программа hello world ) на C.
С 2005 года Бринкманн и Уолфилд начали исследовать Coyotos как новое ядро для HURD. [23] [24] В 2006 году Бринкманн встретился с Джонатаном Шапиро (главным архитектором операционной системы Coyotos), чтобы помочь и обсудить использование ядра Coyotos для GNU/Hurd. В ходе дальнейшего обсуждения разработчики HURD поняли, что Coyotos (как и другие подобные ядра) не подходят для HURD. [25]
В 2007 году разработчики Hurd Нил Уолфилд и Маркус Бринкманн выступили с критикой архитектуры Hurd, известной как «критика». [26] и предложение о том, как можно спроектировать будущую систему, известное как «документ с изложением позиции». [27] В 2008 году Нил Уолфилд начал работу над микроядром Viengoos как современным родным ядром для HURD. По состоянию на 2009 год [update], разработка Viengoos приостановлена из-за того, что Уолфилду не хватает времени на работу над ним. [28]
Тем временем другие продолжают работать над вариантом Херда, разработанным Маха. [29]
Расширения Unix
[ редактировать ]Ряд традиционных концепций Unix заменены или расширены в Hurd.
В Unix каждая запущенная программа имеет связанный с ней идентификатор пользователя , который обычно соответствует пользователю, запустившему процесс . Этот идентификатор во многом определяет действия, разрешенные программе. Ни один внешний процесс не может изменить идентификатор пользователя запущенной программы. С другой стороны, процесс Hurd выполняется под набором идентификаторов пользователей, которые могут содержать несколько идентификаторов, один или ни одного. Процесс с достаточными привилегиями может добавлять и удалять идентификаторы другого процесса. Например, существует сервер паролей, который будет выдавать идентификаторы в обмен на правильный пароль для входа.
Что касается файловой системы , то подходящая программа может быть назначена транслятором отдельного файла или всей иерархии каталогов. Каждый доступ к переведенному файлу или файлам ниже иерархии во втором случае фактически обрабатывается программой. Например, переводчик файлов может просто перенаправить операции чтения и записи в другой файл, например, по символической ссылке Unix . Эффект монтирования Unix достигается за счет настройки транслятора файловой системы (с помощью команды settrans). Переводчики также могут использоваться для предоставления услуг пользователю. Например, переводчик ftpfs позволяет пользователю инкапсулировать удаленные FTP-сайты в каталог. Затем стандартные инструменты, такие как ls , cp и rm, можно использовать для управления файлами в удаленной системе. Еще более мощными переводчиками являются такие, как UnionFS , который позволяет пользователю объединить несколько каталогов в один; таким образом, список единого каталога раскрывает содержимое всех каталогов.
Hurd требуется мультизагрузочный Для загрузчик , такой как GRUB .
Архитектура серверов
[ редактировать ]Согласно документации Debian, существует 24 сервера (18 основных серверов и 6 серверов файловой системы), названных следующим образом: [30]
Основные серверы
[ редактировать ]- auth ( сервер аутентификации ): Получает запросы и пароли от программ и присваивает им идентификатор, который меняет привилегии программы.
- сбой ( сервер сбоя ): обрабатывает все фатальные ошибки.
- eieio (сервер переводов): TODO
- exec (сервер выполнения): преобразует исполняемый образ (в настоящее время ELF и a.out ) в исполняемый образ в памяти. поддерживаются
- fifo ( переводчик FIFO ): реализует именованные каналы.
- new-fifo (новый сервер FIFO): альтернативный сервер для именованных каналов.
- Firmlink (переводчик твердых ссылок): реализует твердые ссылки ‒ «на полпути между символической ссылкой и жесткой ссылкой ». [31]
- fwd (сервер пересылки): перенаправляет запросы на другие серверы, используемые серверами fifo и символических ссылок.
- hostmux (хост-сервер-мультиплексор)
- ifsock (сервер для интерфейса сокетов): помогает с адресами сокетов домена UNIX.
- init ( сервер инициализации ): базовая загрузка и настройка системы.
- Magic ( магический сервер): сигнализирует о том, что поиск имени должен быть разрешен внутри процесса, если результат включает состояние процесса.
- null (нулевой сервер): реализует /dev/null и /dev/zero.
- pfinet (сервер pfinet): реализует семейство протоколов PF_INET.
- pflocal (сервер pflocal): реализует сокеты домена UNIX .
- proc (сервер процессов): назначает PID и управляет действиями на уровне процесса.
- symlink ( переводчик символических ссылок ): реализует символические ссылки для файловых систем, которые их не поддерживают.
- термин (сервер терминалов): терминал POSIX .
- usermux (сервер-мультиплексор пользователей): вызывает трансляторы, специфичные для пользователя.
Серверы файловой системы
[ редактировать ]- ext2fs
- Переводчик файловой системы ext2 . Он получает дисковые блоки от микроядра и передает приложениям файлы и каталоги.
- isofs
- Переводчик файловой системы ISO 9660 . Преобразует блоки CD или DVD в файлы и каталоги для приложений.
- нфс
- См. Сетевая файловая система .
- ftpfs
- протокола передачи файлов . Транслятор файловой системы
- магазин
- Переводчик памяти.
Серверы совместно реализуют POSIX API , причем каждый сервер реализует часть интерфейса. Например, каждый из различных серверов файловой системы реализует вызовы файловой системы. Сервер хранения будет работать как оберточный уровень, аналогичный блочному уровню Linux. Эквивалент VFS в Linux достигается с помощью библиотек libdiskfs и libpager.
Дистрибутивы GNU, использующие Hurd
[ редактировать ]на основе Hurd Дистрибутивы GNU включают:
- Арч Херд
- Bee GNU/Hurd (снято с производства) [32]
- Debian GNU/Хёрд
- Gentoo GNU Hurd (снято с производства)
- Живой компакт-диск GNU/Hurd [33] (снято с производства) [ не удалось пройти проверку ]
- Система Guix (в разработке)
См. также
[ редактировать ]- Сравнение ядер операционных систем
- Дистрибутивы GNU
- Виртуальная машина на основе ядра (KVM)
- Linux-libre – бесплатная версия ядра Linux.
- Спецификация мультизагрузки
Ссылки
[ редактировать ]- ^ «Выпущены GNU Hurd 0.9, GNU Mach 1.8, GNU MIG 1.8» . Проверено 11 мая 2018 г.
- ^ «GNU Hurd портирован на AArch64 и другие новости Hurd» . osnews.com . Проверено 22 апреля 2024 г.
- ^ «КОПИРОВАНИЕ — hurd/hurd.git — Hurd» . Git.savannah.gnu.org . Проверено 25 февраля 2019 г.
- ^ Перейти обратно: а б «Что такое GNU Hurd?» . ГНУ . Проверено 4 марта 2010 г.
- ^ Перейти обратно: а б Тоцци, Кристофер (20 апреля 2015 г.). «30 лет спустя, HURD жив: GNU обновляет ядро Unix с открытым исходным кодом» . Парень из ВАР . Архивировано из оригинала 24 апреля 2015 г.
- ^ «Что такое мультисерверное микроядро?» . ГНУ. 13 апреля 2013 г. Проверено 11 августа 2015 г.
- ^ "преимущества" . ГНУ . Проверено 7 декабря 2011 г.
- ^ Перейти обратно: а б Вервлёсем, Коэн (7 июля 2010 г.). «The Hurd: поиски GNU идеального ядра» . LWN.net . Проверено 5 октября 2012 г.
- ^ «GNU Hurd: Происхождение названия» . ГНУ . Проверено 4 марта 2010 г.
- ^ Хиллесли, Ричард (30 июня 2010 г.). «GNU HURD: измененные видения и потерянные обещания» . Проверено 1 октября 2012 г.
- ^ «Linux и проект GNU» . ГНУ . 26 января 2010 г. Проверено 4 марта 2010 г.
- ^ Перейти обратно: а б «История GNU Hurd, «Как это началось» » . ГНУ . Проверено 27 августа 2006 г.
- ^ Салюс, Питер . «Демон, GNU и Пингвин» . Проверено 8 августа 2006 г.
- ^ Рибейро, Джон (11 марта 2002 г.). «Свободное программное обеспечение видит отсутствие GNU в Linux» . Мир ПК . Архивировано из оригинала 22 сентября 2016 г. Проверено 5 октября 2012 г.
- ^ «Статус» . ГНУ . Проверено 4 марта 2010 г.
- ^ Столлман, Ричард (9 марта 2006 г.). «Движение за свободное программное обеспечение и будущее свободы» (ogg) . Фонд свободного программного обеспечения . Загреб .
Еще в 1990 году люди считали этот способ самым чистым из возможных способов проектирования ядер. Ну, потребовалось много-много лет, чтобы это ядро вообще заработало, и оно до сих пор работает не очень хорошо, и это Похоже, что в этой конструкции могут быть фундаментальные проблемы, о которых еще в 1990 году никто не знал.
- Ричард Столлман. «Движение за свободное программное обеспечение и будущее свободы; 9 марта 2006 г.» . Европейский фонд свободного программного обеспечения (Стенограмма лекции). Архивировано из оригинала 12 января 2007 г.
- ^ Столлман, Ричард (29 июля 2010 г.). «РМС АМА» . Реддит . Проверено 7 декабря 2011 г.
- ^ «Фонд свободного программного обеспечения меняет приоритеты — SD Times» . СД Таймс . 17 января 2017 г. Проверено 17 апреля 2017 г.
- ^ Рагкусис, Манолис (20 августа 2015 г.). «[Обновление GSoC] Портирование Guix на GNU/Hurd» (список рассылки). guix-devel . Проверено 20 августа 2015 г.
- ^ Косулос, Константин (21 марта 2007 г.). "Re: Драйверы устройств в Маха?" . bug-hurd (список рассылки).
- ^ Доппнер, Томас В. (20 декабря 2010 г.). Подробно об операционных системах: проектирование и программирование . Джон Уайли и сыновья. п. 160. ИСБН 978-0-471-68723-8 . Проверено 29 ноября 2012 г.
- ^ Столлман, Ричард (12 октября 2000 г.). «В защиту Красной шляпы» . Линукс сегодня . Проверено 7 декабря 2011 г.
Я беру на себя полную ответственность за техническое решение о разработке ядра GNU на основе Маха, решение, которое, по-видимому, было причиной медленности разработки. Я думал, что использование Маха ускорит работу и сэкономит нам большую часть работы, но я ошибался.
- ^ Шапиро, Джонатан С. (27 октября 2005 г.). "Re: Комментарий по поводу смены ядер" . l4-hurd (список рассылки).
- ^ Бахманн, Том (7 июля 2006 г.). «Re: seL4, L4.sec и беспорядок с койотами» . l4-hurd (список рассылки).
- ^ «Портирование Херда на другое микроядро» . ГНУ Херд . Фонд свободного программного обеспечения . Проверено 6 мая 2017 г.
- ^ Уолфилд, Нил Х.; Бринкманн, Маркус (июль 2007 г.). «Критика многосерверной операционной системы GNU Hurd» (PDF) . ГНУ . Проверено 7 декабря 2011 г.
- ^ Уолфилд, Нил Х.; Бринкманн, Маркус (4 января 2007 г.). «Улучшение удобства использования посредством декомпозиции доступа и уточнения политики» (PDF) . ГНУ . Проверено 7 декабря 2011 г.
- ^ "виенгус" . ГНУ . Проверено 4 марта 2010 г.
- ^ «Что случилось с микроядрами L4/Coyotos/viengoos?» . ГНУ . Проверено 7 января 2011 г.
- ^ «Предварительное описание пользовательского интерфейса GNU/Hurd» . Дебиан . 10 октября 1996 г. Проверено 4 марта 2010 г.
- ^ «GNU/Hurd — Документация» . Дебиан. 10 октября 1996 г. Проверено 12 июля 2012 г.
- ^ «GNU Hurd/hurd/run/distrib» . ГНУ . 03.05.2015 . Проверено 21 сентября 2017 г.
- ^ «GNU Hurd/hurd/running/live cd» . ГНУ . 9 апреля 2013 г. Проверено 21 сентября 2017 г.