Главная » Отношения » Никс система. Что есть *nix и с чем его едят. Что такое Unix

Никс система. Что есть *nix и с чем его едят. Что такое Unix

Если вы недавно начали изучать Linux и осваиваться в этой огромной вселенной, то наверное, часто встречали термин Unix. Звучит очень похоже на Linux, но что же оно значит? Наверное, вам интересно чем отличается unix от linux. Ответ на этот вопрос зависит от того что вы понимаете под этими словами. Ведь каждое из них может интерпретироваться по-разному. В этой статье мы рассмотрим упрощенную историю Linux и Unix чтобы помочь вам понять что это и как они между собой связаны. Как всегда вы можете задавать вопросы или добавить дополнительную информацию в комментариях.

Свою историю Unix начал в конце 1960-х и в начале 1970-х в научно-исследовательских вычислительных лабораториях AT&T Bell Labs в Соединенных штатах. Вместе с MIT и General Electric исследовательская лаборатория Bell Labs начала разработку новой операционной системы. Некоторые исследователи были недовольны ходом разработки этой операционной системы. Они отошли от работы над основным проектом и начали разрабатывать собственную ОС. В 1970 году эта система получила название Unix, а два года спустя она была полностью переписана на языке программирования Си.

Это позволило распространять и портировать Unix на различные устройства и вычислительные платформы.

Так как Unix продолжал развиваться, AT&T начал продавать лицензии на использование ее в университетах, а также в коммерческих целях. Это означало что не все могли, как сейчас, свободно изменять и распространять код операционной системы Unix. Вскоре начало появляться много редакций и вариантов операционной системы Unix, предназначенной для решения различных задач. Самой известной из них была BSD.

Linux похож на Unix по функциональности и возможностям, но не кодовой базой. Эта операционная система была собрана из двух проектов. Первый - проект GNU, разработанный Ричардом Столлманом в 1983, второй - ядро Linux, написанное Линусом Торвальдсом в 1991.

Целью проекта GNU было создать систему похожую на Unix, но не зависящую от него. Иными словами, операционную систему, не содержащую код Unix, которая могла бы свободно распространяться и модифицироваться без ограничений, как свободное программное обеспечение. Так как свободное ядро Linux не могло работать само по себе, проект GNU объединился с ядром Linux, и так родилась операционная система Linux.

Конструировался Linux под влиянием системы Minix, потомка Unix, но весь код был написан с нуля. В отличие от Unix, который использовался на серверах и больших мэйнфреймах различных предприятий, Linux был рассчитан для использования на домашнем компьютере с более простым аппаратным обеспечением.

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

Что такое Unix

Термин Unix может относиться к таким понятиям:

  • Оригинальная операционная система, разработанная в AT&T Bell Labs, на основе которой развиваются другие ОС.
  • Товарный знак, написано заглавными буквами. UNIX принадлежит The Open Group, которая разработала набор стандартов для операционных систем - Single UNIX Specification. Только те системы, которые соответствуют стандартам могут законно называться UNIX. Сертификация не бесплатная и требует от разработчиков платить за использование этого товарного знака.
  • Все операционные системы зарегистрированы с именем Unix. Потому что они соответствуют вышеупомянутым стандартам. Это AIX, A/UX, HP-UX, Inspur K-UX, Reliant UNIX, Solaris, IRIX, Tru64, UnixWare, z/OS и OS X - да, даже те что работают на компьютерах Apple.

Что такое Linux

Термин Linux относится только к ядру. Операционная система не будет полной без настольной среды и приложений. Поскольку большинство приложений были разработаны и сейчас разрабатываются в рамках проекта GNU, полное название операционной системы - GNU / Linux.

Сейчас множество людей используют термин Linux для обозначения всех, основанных на ядре Linux, дистрибутивов. На данный момент самая новая версия ядра Linux - 4.4, версия 4.5 находится на стадии разработки. Смена нумерации релизов ядра с 3.х на 4.х состоялась не так уж давно.

Linux - это Unix подобная операционная система, которая ведет себя как Unix, но не содержит его код. Unix подобные ОС часто называют Un*x, *NIX и *N?X, или даже Юниксоидами. У Linux нет сертификации Unix, а GNU расшифровывается как GNU not Unix, так что в этом отношении Mac OS X больше Unix чем Linux. Но тем не менее ядро Linux и ОС GNU Linux очень похожи на Unix по функциональности, реализуют большинство принципов философии Unix. Это удобочитаемый код, хранение конфигурации системы в отдельных текстовых файлах, а также использование небольших инструментов командной строки, графическая оболочка и менеджер сеансов.

Важно заметить что далеко не все Unix подобные системы получили сертификацию UNIX. В определенном контексте все операционные системы, основанные на UNIX или на его идеях, называются UNIX подобными, независимо от того есть ли у них сертификат UNIX или нет. Кроме того, они могут быть коммерческими и бесплатными.

Надеюсь, теперь стало более понятно, чем отличается unix от linux. Но пойдем еще дальше и подведем итоги.

Основные отличия

  • Linux - свободная операционная система с открытым исходным кодом, а оригинальная Unix - нет, кроме некоторых ее производных.
  • Linux - это клон оригинального Unix, но он не содержит его код.
  • Главное отличие unix от linux, в том что Linux - это только ядро, в то время как Unix была и есть полноценной операционной системой.
  • Linux был разработан для персональных компьютеров. А Unix ориентирован в первую очередь на крупные рабочие станции и сервера.
  • Сегодня Linux поддерживает больше платформ чем Unix.
  • Linux поддерживает больше типов файловых систем чем Unix.

Как видите, путаница обычно возникает из-за того, что linux vs unix могут означать совершенно разные вещи. Какое бы значение ни имелось в виду, факт остается фактом - Unix был первым, а Linux появился позже. Linux родился из стремления к свободе программного обеспечения и мобильности, вдохновленный подходом Unix. Можно смело сказать что мы все в долгу перед движением свободного программного обеспечения, потому что мир был бы намного хуже без него.

Военно-технический университет при Федеральной службе специального строительства РФ

Институт промышленного, гражданского и транспортного строительства

Реферат по предмету информатика на тему:

«UNIX-подобные операционные системы»

Москва 2009-10 гг.

Введение

История образования и раскол

Обзор BSD-подобных систем

Обзор файловых систем unix-подобных операционных систем

Extended File System

Third Extended File System

Табл. 1 Ограничения размеров

Fourth Extended File System

Journaled File System

Особенности

Unix File System

Ядро linux-kernel-2.6.xx

Среды рабочего стола

Текстовые редакторы

Заключение

Список литературы

Введение

UNIX - группа переносимых, многозадачных и многопользовательских операционных систем.

Первая система UNIX была разработана в 1969 г. в подразделении Bell Labs компании AT&T. С тех пор было создано большое количество различных UNIX-систем. Юридически лишь некоторые из них имеют полное право называться «UNIX»; остальные же, хотя и используют сходные концепции и технологии, объединяются термином «UNIX-подобные» (Unix - like ). Для краткости в данной статье под UNIX-системами подразумеваются как истинные UNIX, так и UNIX-подобные ОС.

Основные отличительные признаки UNIX-систем включают в себя:

· использование простых текстовых файлов для настройки и управления системой;

· широкое применение утилит, запускаемых в командной строке;

· взаимодействие с пользователем посредством виртуального устройства - терминала;

· представление физических и виртуальных устройств и некоторых средств межпроцессового взаимодействия как файлов;

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

В настоящее время UNIX используются в основном на серверах, а также как встроенные системы для различного оборудования. На рынке ОС для рабочих станций и домашнего применения лидером является Microsoft Windows, UNIX занимает только второе (Mac OS X) и третье (GNU/Linux) места.

UNIX-системы имеют большую историческую важность, поскольку благодаря им распространились некоторые популярные сегодня концепции и подходы в области ОС и программного обеспечения. Также, в ходе разработки Unix-систем был создан язык Си.

История образования и раскол

В 1957 году в Bell Labs была начата работа по созданию операционной системы для собственных нужд. Под руководством Виктора Высотского была создана система BESYS. Впоследствии он возглавил проект Multics, а затем стал главой информационного подразделения Bell Labs.

В 1964 году появились компьютеры третьего поколения, для которых возможности BESYS уже не подходили. Высотский и его коллеги приняли решение не разрабатывать новую собственную операционную систему, а подключиться к совместному проекту General Electric и Массачусетского технологического института Multics. Телекоммуникационный гигант AT&T, в состав которого входили Bell Labs, оказал проекту существенную поддержку, но в 1969 году вышел из проекта, поскольку он не приносил никаких финансовых выгод. Первоначально UNIX была разработана в конце 1960-х годов сотрудниками Bell Labs, в первую очередь Кеном Томпсоном, Денисом Ритчи и Дугласом МакИлроем. В 1969 году Кен Томпсон, стремясь реализовать идеи, которые были положены в основу MULTICS, но на более скромном аппаратном обеспечении (DEC PDP-7), написал первую версию новой операционной системы, а Брайан Керниган придумал для неё название - UNICS (UNIplexed Information and Computing System) - в противовес MULTICS (MULTIplexed Information and Computing Service). Позже это название сократилось до UNIX.

В ноябре 1971 года вышла версия для PDP-11, наиболее успешного семейства миникомпьютеров 1970-х (в СССР его аналоги, выпускавшиеся Министерством Электронной Промышленности были известно как СМ ЭВМ и «Электроника», позже ДВК, производились в Киеве, Воронеже, Зеленограде). Эта версия получила название «первая редакция» (Edition 1) и была первой официальной версией. Системное время все реализации UNIX отсчитывают с 1 января 1970.

Первые версии UNIX были написаны на ассемблере и не имели встроенного компилятора с языком высокого уровня. Примерно в 1969 году Кен Томпсон при содействии Дениса Ритчи разработал и реализовал язык Би, представлявший собой упрощённый вариант разработанного в 1966 языка BCPL. Би, как и BCPL, был интерпретируемым языком. В 1972 году была выпущена вторая редакция UNIX, переписанная на языке Би. В 1969-1973 годах на основе Би был разработан компилируемый язык, получивший название Си (C).

В 1973 году вышла третья редакция UNIX, со встроенным компилятором языка Си. 15 октября того же года появилась четвёртая редакция, с переписанным на Си системным ядром (в духе системы Multics, также написанной на языке высокого уровня ПЛ/1), а в 1975 - пятая редакция, полностью переписанная на Си. С 1974 года UNIX стал бесплатно распространяться среди университетов и академических учреждений. С 1975 года началось появление новых версий, разработанных за пределами Bell Labs, и рост популярности системы. В том же 1975 году Bell Labs выпустила шестую редакцию, известную по широко разошедшимся комментариям Джона Лайонса. К 1978 году система была установлена более чем на 600 машинах, прежде всего, в университетах. Седьмая редакция была последней единой версией UNIX. Именно в ней появился близкий к современному интерпретатор командной строки Bourne shell.

С 1978 года начинает свою историю BSD UNIX, созданный в университете Беркли. Его первая версия была основана на шестой редакции. В 1979 выпущена новая версия, названная 3BSD, основанная на седьмой редакции. BSD поддерживал такие полезные свойства, как виртуальную память и замещение страниц по требованию. Автором BSD был Билл Джой. В начале 1980-х компания AT&T, которой принадлежали Bell Labs, осознала ценность UNIX и начала создание коммерческой версии UNIX. Эта версия, поступившая в продажу в 1982 году, носила название UNIX System III и была основана на седьмой версии системы.

Важной причиной раскола UNIX стала реализация в 1980 году стека протоколов TCP/IP. До этого межмашинное взаимодействие в UNIX пребывало в зачаточном состоянии - наиболее существенным способом связи был UUCP (средство копирования файлов из одной UNIX-системы в другую, изначально работавшее по телефонным сетям с помощью модемов).

Было предложено два интерфейса программирования сетевых приложений: Berkley sockets и интерфейс транспортного уровня TLI. Интерфейс Berkley sockets был разработан в университете Беркли и использовал стек протоколов TCP/IP, разработанный там же. TLI был создан AT&T в соответствии с определением транспортного уровня модели OSI и впервые появился в системе System V версии 3. Хотя эта версия содержала TLI и потоки, первоначально в ней не было реализации TCP/IP или других сетевых протоколов, но подобные реализации предоставлялись сторонними фирмами. Реализация TCP/IP официально и окончательно была включена в базовую поставку System V версии 4. Это, как и другие соображения, вызвало окончательное размежевание между двумя ветвями UNIX - BSD и System V (коммерческая версия от AT&T).

Впоследствии, многие компании, лицензировав System V у AT&T, разработали собственные коммерческие разновидности UNIX, такие, как AIX, CLIX, HP-UX, IRIX, Solaris.

В середине 1983 года была выпущена версия BSD 4.2, поддерживающая работу в сетях Ethernet и Arpanet. Система стала весьма популярной. Между 1983 и 1990 годом в BSD было добавлено много новых возможностей, таких как отладчик ядра, сетевая файловая система NFS, виртуальная файловая система VFS, и существенно улучшены возможности работы с файловыми сетями.

Тем временем AT&T выпускала новые версии своей системы, названной System V. В 1983 была выпущена версия 1 (SVR1 - System V Release 1), включавшая полноэкранный текстовый редактор vi, библиотеку curses, буферизацию ввода-вывода, кеширование inode. Версия 2 (SVR2), выпущенная в 1984, реализовывала монопольный доступ к файлам (file locking), доступ к страницам по требованию (demand paging), копирование при записи (copy-on-write). Версия 3 вышла в 1987 году и включала, среди прочего, TLI, а также систему поддержки удалённых файловых систем RFS. Версия 4 (SVR4), разработанная в сотрудничестве с фирмой Sun и вышедшая 18 октября 1988, поддерживала многие возможности BSD, в частности TCP/IP, сокеты, новый командный интерпретатор csh. Кроме того, там было много других добавлений, таких как символические ссылки, командный интерпретатор ksh, сетевая файловая система NFS (заимствованная у SunOS) и т. д.

Современные реализации UNIX, как правило, не являются системами V или BSD в чистом виде. Они реализуют возможности как System V, так и BSD.

Обзор GNU/Linux-подобных систем

Linux работает на множестве архитектур процессора таких как Intelx86, x86-64, PowerPC, ARM, AlphaAXP, SunSPARC, Motorola 68000, HitachiSuperH, IBMS/390, MIPS, HPPA-RISC, AXISCRIS, RenesasM32R, AtmelAVR32, RenesasH8/300, NECV850, TensilicaXtensa и многих других.

В отличие от большинства других операционных систем, Linux не имеет единой «официальной» комплектации. Вместо этого Linux поставляется в большом количестве так называемых дистрибутивов, в которых ядро Linux соединяется с утилитами GNU и другими прикладными программами (например, X.org), делающими её полноценной многофункциональной операционной средой.

Наиболее известными дистрибутивами GNU/Linux являются Arch Linux, CentOS, Debian, Fedora, Gentoo, openSUSE, Red Hat, Slackware, Ubuntu. Более полный список и процент использования можно посмотреть на distrowatch.com

В отличие от коммерческих систем, таких как Microsoft Windows или Mac OS X, Linux не имеет географического центра разработки. Нет и организации, которая владела бы этой системой; нет даже единого координационного центра. Программы для Linux - результат работы тысяч проектов. Некоторые из этих проектов централизованы, некоторые сосредоточены в фирмах. Пользователи принимают участие в тестировании свободных программ, общаются с разработчиками напрямую, что позволяет быстро находить и исправлять ошибки и реализовывать новые возможности.Большинство пользователей для установки Linux используют дистрибутивы. Дистрибутив - это не просто набор программ, а ряд решений для разных задач пользователей, объединённых едиными системами установки, управления и обновления пакетов, настройки и поддержки.

Существует великое множество различных *nix-систем и дистрибутивов Linux/BSD. Бывает, что той или иной функции или программы, к которой ты привык в твоей любимой системе, вдруг по каким-то причинам нет в другой. Есть ли аналоги или способ заставить ее заработать?

Запуск Skype под FreeBSD

Известно, что версия Skype из портов, мягко говоря, устарела - к примеру, нет возможности совершать видеозвонки. Использовать Windows-версию через wine не вариант - под вайном он не запускается. Но выход есть - установить слой совместимости с Linux, затем, после наложения патча на ядро и последующей его перекомпиляции, уже ставить Skype. Опишем, как именно это сделать.

Первым делом необходимо собрать порт emulators/linux-base-c6 - при этом, если необходим Flash-плагин, нужно произвести некоторые действия, а именно в makefile данного порта закомментировать следующую строчку:

CONFLICTS=linux_base-gentoo* linux_base-f* linux-glib2-*

Затем набрать команды:

# sysctl compat.linux.osrelease=2.6.18 # make patch

Первая установит версию ядра в 2.6.18 (затем нужно будет прописать эту переменную в /boot/loader.conf , чтобы после перезагрузки она не сбрасывалась), а вторая применяет патч, который мы только что сделали. После этого скопируем следующие библиотеки из каталога work в /compat/linux/ :

Lib/ld-2.12.so lib/ld-linux.so.2 lib/libc-2.12.so lib/libc.so.6 lib/libdl-2.12.so lib/libdl.so.2 lib/libgcc_s-4.4.6-20110824.so.1 lib/libgcc_s.so.1 lib/libglib-2.0.so.0 lib/libglib-2.0.so.0.2200.5 lib/libpthread-2.12.so lib/libpthread.so.0 usr/lib/libstdc++.so.6 usr/lib/libstdc++.so.6.0.13

Создадим симлинк с usr/lib/libtiff.so.3 на libtiff.so.4:

# ln -s libtiff.so.3 libtiff.so.4

Все эти действия необходимы, только если тебе нужен порт www/linux-f10-flashplugin .

Следующим этапом будет замена заголовочного файла для поддержки видеовызовов (необходимо, если версия FreeBSD ниже девятки):

# cd /usr/ports/multimedia/linux_v4l2wrapper-kmod # make patch # mv -i /sys/compat/linux/linux_videodev2.h{,.bak} # cp -i work/linux_v4l2/linux_videodev2.h /sys/compat/linux

и пересобираем ядро. Это нужно для того, чтобы вызовы ioctl Linux нормально транслировались в вызовы FreeBSD.

Также придется поставить порт multimedia/webcamd:

# cd /usr/ports/multimedia/webcamd # make install clean

И теперь наконец можно ставить Skype - но не абы какую версию, а конкретную. Берем отсюда , распаковываем в свой домашний каталог и, если все настроено правильно, наслаждаемся.

Запуск приложений OS X в Linux

Под OS X есть немало интересных приложений. Однако формат исполняемых файлов Mach-O, используемый в ОС от Apple, отличается от ELF, да и API, хоть и POSIX-совместимый, все же с Linux несовместим. В конце 2012 года был представлен проект Darling, который позиционируется разработчиками пока как средство для запуска инструментов разработки. На данный момент поддерживается совсем немного приложений (по большей части консольных), но хочется надеяться, что их количество будет неуклонно расти. Проект, в частности, использует GNUStep - свободную реализацию API Cocoa, которая применяется в OS X.

Сборка Darling потребует установки множества пакетов, в том числе компилятора clang:

$ sudo apt-get install git cmake clang nasm g++ checkinstall libxml2-dev libgnutls-dev libicu-dev libcairo-dev libjpeg-dev libpng-dev libtiff-dev libbsd-dev libudev-dev liblcms-dev libkqueue-dev libssl-dev libbz2-dev uuid-dev libncurses-dev libxrandr-dev

Получаем из Git-репозитория утилиту GNUStep Make, компилируем и ставим:

$ git clone https://github.com/gnustep/gnustep-make.git $ cd gnustep-make $ CC=clang CXX=clang++ ./configure $ sudo make install

Собираем библиотеку поддержки Objective-C - GNUstep Libobjc2:

$ git clone https://github.com/gnustep/gnustep-libobjc2.git $ cd gnustep-libobjc2 $ OBJCFLAGS=-fblocks CC=clang CXX=clang++ cmake . $ rm GNUmakefile $ make $ sudo make install

Затем базовую часть GNUStep:

$ git clone https://github.com/gnustep/gnustep-base.git $ cd gnustep-base $ OBJCFLAGS=-fblocks CC=clang CXX=clang++ ./configure $ make $ sudo make install

$ git clone https://github.com/gnustep/gnustep-gui.git $ cd gnustep-gui $ OBJCFLAGS=-fblocks CC=clang CXX=clang++ ./configure $ export LD_LIBRARY_PATH=/usr/local/lib $ echo export LD_LIBRARY_PATH=/usr/local/lib >> ~/.bashrc $ make $ sudo make install

GNUStep CoreBase, являющийся аналогом CoreFoundation, тоже необходим:

$ git clone https://github.com/gnustep/gnustep-corebase.git $ cd gnustep-corebase $ OBJCFLAGS=-fblocks CC=clang CXX=clang++ ./configure $ make $ sudo make install

Отвечающий за рендеринг аналог Quartz 2D - Opal тоже необходимо собрать:

$ git clone https://github.com/gnustep/gnustep-opal.git $ cd gnustep-opal $ OBJCFLAGS=-fblocks CC=clang CXX=clang++ make $ sudo make install

Наконец, нужно скомпилировать собственно Darling:

$ git clone https://github.com/LubosD/darling.git $ cd darling $ CC=clang CXX=clang++ cmake . $ make

Все, можно запускать приложения OS X, введя команду:

./dyld <аргументы>

Установка пакетов deb в Red Hat подобных системах

Форматы пакетов RPM и deb друг с другом несовместимы - и в одной системе эти два пакетных менеджера не уживаются. Как правило, необходимость устанавливать пакеты неродной системы встречается редко. Но если она возникла, можно использовать средство для конвертации пакетов alien. Конечно, это не панацея - с его помощью можно конвертировать отнюдь не все пакеты, да и использовать его нужно с осторожностью. Скачаем его исходники, распакуем и установим:

# wget http://ftp.de.debian.org/debian/pool/main/a/alien/alien_8.88.tar.gz # tar xzvf alien_8.88.tar.gz && cd alien # make && make install

Опишу некоторые опции командной строки, относящиеся к конвертации в RPM.

  • -r - собственно конвертация в RPM;
  • -i - устанавливает получившийся в результате конвертации пакет и удаляет файл пакета из системы;
  • -g - создает необходимый каталог с файлами, но не создает сам пакет;
  • -c - конвертирует скрипты. Использовать эту опцию нужно с осторожностью, поскольку скрипты для Ubuntu не подойдут к RHEL.

В качестве примера сконвертируем пакет zsh и установим его:

# wget http://goo.gl/Fykuzu # alien -r ./zsh_4.3.17-1_i386.deb # rpm -ivh --nodeps ./zsh-4.3.17-2.i386.rpm

Мы устанавливаем данный пакет принудительно - alien в данном случае довольно странно сконвертировал зависимости. Если говорить конкретнее, то для установки пакета зачем-то понадобился файл /bin/zsh , в то время как его же мы и устанавливаем. Также стоит обратить внимание, что имена файлов пакета тоже преобразуются и последняя цифра версии преобразованного пакета инкрементируется на единичку.

В моем случае пакет установился нормально и zsh запустился без проблем. Но нелишним будет еще раз предупредить, что этот метод нужно использовать с осторожностью.



Обновление ядра без перезагрузки

В Linux существует два решения, позволяющих свести к минимуму количество аппаратных перезагрузок, - kexec и ksplice. Системный вызов kexec появился в mainline-версии ядра в июне 2005-го. Предназначается он для загрузки нового ядра прямо из существующего. Работает данная технология таким образом:

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

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

Для практического применения kexec необходимо ядро с включенной опцией (CONFIG_KEXEC=Y) и пакет kexec-tools. Ручная загрузка ядра (в случае с Ubuntu) осуществляется следующими двумя командами:

# kexec -l /vmlinuz --initrd=/initrd.img --reuse-cmdline # kexec -e

Первая команда грузит ядро в память, а вторая передает ему управление. При этом используется текущая строка параметров ядра. Чтобы использовать свои параметры, задай их в опции --cmdline="".

В Ubuntu можно также использовать kexec для быстрой перезагрузки - для этого установи параметр LOAD_KEXEC в файле /etc/default/kexec равным true, и после этого все стандартные процедуры перезагрузки будут осуществляться через него.

Ksplice же, по утверждениям его разработчиков, позволяет накладывать патчи безопасности на ядро на лету. При этом все работающие приложения работают по-прежнему, без необходимости их перезапускать. Проект был куплен Oracle, и для RHEL, из-за конкуренции фирм, патчи платные. Это, однако, ничуть не мешает раздавать патчи для Ubuntu. Качаем и устанавливаем пакет (для версии 12.04):

$ wget http://goo.gl/MHAZ6c $ sudo dpkg -i ./ksplice-uptrack.deb $ sudo apt-get -f install

Применение всех доступных патчей выполняется одной простой командой:

$ sudo uptrack-upgrade -y

Для удаления же всех патчей используется команда

$ sudo uptrack-remove --all -y

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

Модули ядра NetBSD в Linux

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

Разработчикам удалось подгружать модули, собранные для ядра NetBSD, путем использования так называемых RUMP-ядер (Runnable Userspace Meta Programs). RUMP-ядро представляет собой сверхлегковесное ядро, запускающееся в режиме пользователя. Существует три реализации выполнения подобных ядер:

  • реализация в виде процесса POSIX. Является основной и позволяет запускать RUMP-ядра как пользовательские процессы в POSIX-совместимых системах;
  • реализация для Xen, позволяющая запустить RUMP-ядро напрямую в DomU, без необходимости ставить полноценную ОС и уже в ней запускать его;
  • реализация в ядре Linux, служащая для запуска RUMP-ядер прямо в пространстве ядра.

Замечу, что RUMP-ядра не являются виртуализацией - предназначены они для выполнения исключительно модулей ядра, и процессы из хостовой системы могут их использовать. В результате таких архитектурных решений RUMP-ядро получилось действительно легковесное - оно занимает в памяти около 100 Кб. Преимущества же, по словам разработчиков, таковы:

  • многие вещи, такие как стек TCP/IP, могут использовать RUMP-ядра, не требуя наличия полноценной ОС;
  • возможность запустить несколько RUMP-ядер с различным функционалом - к примеру, тот же стек TCP/IP может быть запущен для разных целей и, соответственно, по-разному будет оптимизирован;
  • безопасность - каждое RUMP-ядро запускается в своем адресном пространстве, и риск взлома (в случае с NetBSD и так не очень большой в силу ее малой распространенности), к примеру, через уязвимые драйверы ФС, становится еще более маловероятным;
  • возможность разрабатывать и тестировать код ядра в режиме пользователя, что куда более удобно, чем использование виртуальных машин.

Однако это все теория, и пора переходить к практике. Для компиляции RUMP-ядра необходимо получить инструмент buildrump.sh, для чего используем Git:

$ git clone https://github.com/anttikantee/buildrump.sh.git $ cd buildrump.sh $ ./buildrump.sh

Затем нужно получить архив с модулями ядра. Поскольку он находится в снапшоте, а его дата постоянно меняется, точный адрес я дать не могу, но в моем случае команда для его получения была следующей:

$ wget http://goo.gl/gNCALo

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


Использование сетевых драйверов Windows с помощью NDISWrapper

Современный Linux может работать с огромным количеством наименований сетевого оборудования. Тем не менее отдельные сетевые устройства (такие как беспроводные адаптеры) в Linux либо не совсем корректно работают, либо вовсе имеют драйвер только под Windows. Но есть способ запустить Windows-версии некоторых сетевых драйверов в Linux. Для этого нужно использовать NDISWrapper.

Как следует из названия, это инструмент-«обертка» для NDIS-совместимых драйверов. Он предоставляет им минимально необходимый набор функций ntoskrnl и hal. И что самое удивительное, все это работает.

Для того чтобы его использовать, установим соответствующий пакет:

$ sudo apt-get install ndiswrapper-common ndiswrapper-dkms cabextract

Затем заносим родной для Linux драйвер (в качестве примера далее будет использоваться один из чипсетов Broadcom) в черный список - чтобы не возникло конфликта:

/etc/modprobe.d/blacklist.conf # <...> blacklist bcm43xx

В случае если драйвер находится в exe- или cab-архиве, может понадобиться cabextract.

$ cabextract setup.exe

Берем файлы драйвера и устанавливаем его с помощью ndiswrapper:

$ sudo ndiswrapper -i bcnwl5.inf

Прописываем модуль ядра в автозагрузку, добавив строку ndiswrapper в файл /etc/modules и загружаем его:

$ sudo modprobe ndiswrapper

Если все настроено нормально, сеть заработает.


Горячее переключение видеокарт

Современные видеоадаптеры поддерживают горячее подключение - естественно, при условии наличия второго адаптера. Linux (а если точнее, X.Org) с недавнего времени также поддерживает данную технологию. Это не потребует особых телодвижений со стороны пользователя - все, что ему нужно сделать, заключается в простом подключении устройства. При этом, разумеется, должна быть установлена последняя версия X.Org с драйвером xf86-video-modesetting. Тем не менее стоит чуть более подробно описать, как именно это работает.

При запуске X-сервера данный драйвер грузится с помощью udev. При этом вместо фактического отображения экрана X-сервер создает абстракцию Screen, а уж на нее проецирует DrvScreen, который как раз и является физическим устройством. При подключении второй видеокарты создается еще один экземпляр DrvScreeen, и вся деятельность на Screen дублируется на оба устройства.

В отличие от подобной же технологии Xinerama, эта технология работает не на уровне протокола X11, а на уровне взаимодействия с оборудованием. При этом можно не заботиться о том, с какого адаптера сформирован вывод, - можно выполнять все ресурсоемкие действия на одной, более мощной видеокарте, а затем передавать изображение на маломощную.

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

Перенос ПО с использованием Docker

Есть множество путей для создания и изолированного запуска приложений в Linux. Некоторые из них сложные, некоторые попроще, но многие требуют развертывания ФС, что может занять длительное время. Относительно недавно компания DotCloud, предоставляющая облачный хостинг, открыла проект Docker. Он написан на языке Go и предназначен для управления контейнерами LXC, расширяя и дополняя их базовые возможности. Он позволяет изолировать не всю систему, а лишь отдельные процессы и клонировать/переносить их на другие компьютеры (естественно, с той же аппаратной архитектурой). Проект предназначен для переноса проектов, всевозможного развертывания и автоматизации распределенных систем. Основные его особенности:

  • возможность размещения в контейнере различной нагрузки - скриптов, бинарников, библиотек, Jar-файлов…
  • переносимость - он запускается на любом современном x64-процессоре с новыми ядрами Linux (рекомендуется ядро не ниже 3.8 с поддержкой AUFS);
  • изоляция процессов от основной системы и от других изолированных процессов;
  • поскольку каждый контейнер использует свою ФС, не важно, в каком окружении он запускается;
  • из-за того, что эта изоляция достаточно высокоуровневых сущностей, не теряется машинное время на виртуализацию.

Установка на Ubuntu 12.04 потребует обновления ядра до версии 3.8, которое, к счастью, бэкпортировано из 13.04:

# apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring # reboot

После перезагрузки добавим PPA с Docker и установим его:

# apt-get install python-software-properties && add-apt-repository ppa:dotcloud/lxc-docker # apt-get update # apt-get install lxc-docker

Docker установлен.

Приведу наиболее часто применяемые команды:

  • docker pull - получить образ из репозитория;
  • docker run - запустить какое-либо приложение в контейнере;
  • docker ps - просмотреть исполняемые контейнеры;
  • docker diff - просмотреть изменения в файловой системе контейнера;
  • docker commit - сохранить изменения в образ.

В качестве примера давай установим демон Redis. Первым делом запустим Docker в режиме демона и получим базовый образ.

$ sudo docker -d & $ sudo docker pull ubuntu

Запуск через sudo здесь нужен по той причине, что демон запускается от root и использует UNIX-сокет, владельцем которого является тоже root. Если создать группу docker и включить в нее себя, то это не понадобится. В дальнейшем предполагается, что именно так и сделано.

Запускаем оболочку и устанавливаем Redis:

$ docker run -i -t ubuntu /bin/bash # apt-get update # apt-get install redis-server # exit

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

$ docker ps -a

Полученный ID нужно использовать в следующей команде:

$ docker commit 691b3214f7de rom/redis

Наконец, запускаем Redis в фоновом режиме, пробрасывая порт 6379 в контейнер:

$ docker run -d -p 6379 rom/redis /usr/bin/redis-server

Redis готов к использованию.

INFO

Скомпилированные пакеты Docker есть только для платформы x64, для x86 они отсутствуют.

Заключение

В статье было описано несколько способов сделать то, что, казалось бы, невозможно. Однако все сценарии рассмотреть довольно затруднительно, тем более что *nix-системы отличаются гибкостью - в них всегда есть больше одного способа сделать что-либо.

Термин «UNIX-подобный» и торговая марка UNIX

С 2007 года ведётся спор между Wayne R. Gray и The Open Group, в котором обсуждается использование слова UNIX как торгового знака. По словам Trademark Trial and Appeal, Board Grау со своей компанией требует от The Open Group предоставить ему документацию для их требований к торговой марке.

Также, в 2007 году The Open Group настояла на том, чтобы немецкий Университет Касселя не использовал «UNIK» в качестве сокращения.

Категории

Развитие UNIX-подобных систем

UNIX-системы начали появляться с поздних 1970-х и ранних 1980-х. Много проприетарных версий, таких как Idris (1978), Coherent (1983), и UniFlex (1985), ставили целью обеспечить нужды бизнеса функциональностью, доступной обученным пользователям UNIX.

Когда AT&T разрешила коммерческое лицензирование UNIX в 1980-х, множество разработаных проприетарных систем основывались на этом, включая AIX , HP-UX , IRIX , Solaris , Tru64 , Ultrix и Xenix . Это во многом вытесняло проприетарных клонов. Растущая несовместимость между системами привела к созданию стандартов взаимодействия, в том числе POSIX и Единой спецификации UNIX.

Между тем, в 1983 году был запущен проект GNU , благодаря которому удалось сделать операционную систему, которую все пользователи компьютера могли свободно использовать, изучать, исправлять, пересобирать. Различные UNIX-подобия разрабатывались аналогично GNU, часто с теми же основными компонентами. Они прежде всего служили дешёвым замещением UNIX и включали 4.4BSD , Linux и Minix . Некоторые из них послужили основой для коммерческих UNIX-систем, таких как BSD/OS и Mac OS X . Примечательно, что Mac OS X 10.5 (Leopard) сертифицирован Единой спецификацией UNIX.

Примеры

Большинство производителей открытых UNIX-систем не добиваются сертификации UNIX для своего продукта даже в качестве компромата: стоимость сертификации считается недопустимой. Для таких систем обычно используют термин Freenix . Примером являются GNU , Linux , Minix , OpenSolaris , Plan 9 и BSD со своими потомками, такими как FreeBSD , NetBSD и OpenBSD .

Есть множество запатентованных UNIX-подобий, таких как AIX , HP-UX , IRIX , Mac OS X , LynxOS , QNX , SCO OpenServer , Solaris , Tru64 UNIX (based on OSF/1), UnixWare , Xenix и VxWorks .

См. также

Примечания

Ссылки

  • UNIX-like Definition (англ.) by The Linux Information Project
  • история UNIX (англ.)
  • Grokline’s UNIX Ownership History Project (англ.)

Wikimedia Foundation . 2010 .

Смотреть что такое "Unix-подобная операционная система" в других словарях:

    Генеалогическое древо UNIX подобных операционных систем UNIX подобная операционная система (иногда сокр. как *nix) операционная система, которая образовалась под влиянием … Википедия

    Генеалогическое древо UNIX систем UNIX (читается юникс) семейство переносимых, многозадачных и многопользовательских … Википедия

    Генеалогическое древо UNIX систем UNIX (читается юникс) группа переносимых, многозадачных и многопользовательских операционных систем. Первая система UNIX была разработана в 1969 г. в подразделении Bell Labs компании AT T. С тех пор было создано … Википедия

    Генеалогическое дерево Unix подобных ОС Unix подобная (иногда сокр. *nix) операционная система это система, которая образовалась под влиянием Unix. Термин включает свободные / открытые операционные системы, образованные от Unix компании Bell… … Википедия

    Генеалогическое дерево Unix подобных ОС Unix подобная (иногда сокр. *nix) операционная система это система, которая образовалась под влиянием Unix. Термин включает свободные / открытые операционные системы, образованные от Unix компании Bell… … Википедия

    Генеалогическое дерево Unix подобных ОС Unix подобная (иногда сокр. *nix) операционная система это система, которая образовалась под влиянием Unix. Термин включает свободные / открытые операционные системы, образованные от Unix компании Bell… … Википедия

    Генеалогическое дерево Unix подобных ОС Unix подобная (иногда сокр. *nix) операционная система это система, которая образовалась под влиянием Unix. Термин включает свободные / открытые операционные системы, образованные от Unix компании Bell… … Википедия

    Генеалогическое дерево Unix подобных ОС Unix подобная (иногда сокр. *nix) операционная система это система, которая образовалась под влиянием Unix. Термин включает свободные / открытые операционные системы, образованные от Unix компании Bell… … Википедия

    Генеалогическое дерево Unix подобных ОС Unix подобная (иногда сокр. *nix) операционная система это система, которая образовалась под влиянием Unix. Термин включает свободные / открытые операционные системы, образованные от Unix компании Bell… … Википедия



Предыдущая статья: Следующая статья:

© 2015 .
О сайте | Контакты
| Карта сайта