Если вы недавно начали изучать 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. Можно смело сказать что мы все в долгу перед движением свободного программного обеспечения, потому что мир был бы намного хуже без него.

Существует великое множество различных *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-системы отличаются гибкостью - в них всегда есть больше одного способа сделать что-либо.


at - указание времени когда выполняется команда
chown - смена хозяина файла
batch - выполнить команду во время загрузки
telnet - клиент телнет
ftp - клиент фтп
rmdir - удалить каталог
finger/who/users - вывести список работающих в системе.
gcc - компилятор C
ftpwho - фингер для фтп
mv - переместить файл
kill - прекратить процесс
cat - текстовой редактор
ls - просмотр каталога
chmod - смена привилегий файлового доступа
rm - удалить файл
id - просмотр прав, т.е.uid и gid
mail - ну, типа, работа с мылом
cat |less - если терминал не позволяет сделать "прокрутку".
cd - сменить каталог
cron - демон команд at и batch
logname - получение имени регистрации
cp - копирование чего либо.
uname-a - всё о версии системы.
crontab - задать резервы времени между запусками прог.
ps - ознакомление со списком процессов.
pwcheck - просмотр дефолтового файла пароля.
umask - маска для определённого файла.
su - программа su
sleep - преостановить процесс.
passwd - работа с паролем.
news - отображение usenet
write - мессага текущему юзеру.
uux - выполнить комманды на remote компе
nslookup - сводки гидромедцентра о IP
uucp - копирование файл с/на remote комп
uuname - список хостов UUCP
more - вывод текстовика в постраничном режиме
screen - супер удобно если зашли на сервер через ссш и у вас плохая связь.
top - посмотреть загрузку цп процессами.
grep - поиск строки в фйле по заданному ключу
grep -i - то же,без учёта регистра.
uuencode - содание текстовой версии двоичного файла(для мыла)
uudecode - ну, типа противоположность предыдущей.
tar - создание архивов файлов.
uncompress - получение исходного из сжатого файла.
* login- запрос от пользователя имени и пароля (запрос от системы к пользователю) для входа в систему(по умолчанию, при наборе пароля, он не отображается).
* logout -выход из текущего сеанса оболочки.
* startx - команда для запуска графического интерфейса X Window (не путайте с системой Windows.Не бойтесь. Это не она).
* shutdown - останавливает систему и предотвращает повреждение файловой системы при этом, но,используется только при работе в консольном режиме.При работе в режиме X Window, не используйте.
* halt - быстрое и корректное выключение системы.
* poweroff - корректное выключение системы.
* reboot корректное выключение с последущей загрузкой.Перезагрузка.
* vmstat - выдаёт сведения о процессах, памяти и загруженности центрального процессора.
* su - вход в сеанс администратора, но прийдётся ввести пароль.Для выхода из этого сеанса наберите exit и нажмите ENTER.
* apropos - поиск строки в заголовках и названиях документации (дополнительно вводится слово для поиска). Выдаёт список всего найденного.
* cal - форматированный календарь на текущий месяц (добавить y и будет календарь на весь текущий год).
* date - отображает текущие дату и время, по системным часам ядра.
* oclock - простые часы, которые висят на рабочем столе (много дополнительных параметров).
* finger - отображение информации о пользователе, имя которого указано в команде.
* hostname - команда отображает идентификатор данного узла сети (его имя). root - может изменить имя узла на новое.
* hwclock - встроенные часы Вашего компьютера.Для изменения даты и времени и синхронизации с системными часами, необходимы привелегии root.
* pwd - отображает полный путь к текущему каталогу.
* tzselect - запуск утилиты, которая позволяет выбрать часовой пояс.
* uname - выводит информацию об используемой операционной системе (при вводе дополнительных параметров команды, выдаёт довольно много информации).
* uptime - показывает текущее время, продолжительность сеанса, количество пользователей и загруженность процессора.
* users - отображает краткий список пользователей работающих в системе в данный момент.
* w - подробная информация о всех пользователях, работающих в данный момент и также простой, вход в систему и др.Если нужен один пользователь, то указать имя в параметре.
* whatis - поиск по базе данных страниц руководства и отображение краткого описания.
* who - список пользователей работающих в системе в данный момент.
* whereiz находит файлы, страницы справочного руководства для указанной команды.
* which - показывает полный путь к исполняемому файлу команды.
* whoami - показывает текущий идентификатор пользователя, работающего в данном терминале.
* write - отправляет сообщение другому пользователю, находящемуся в системе, путём копирования строк с терминала отправителя на терминал получателя.
* wall - отправляет сообщение на терминал каждого пользователя находящегося в системе в данный момент.
* history - показывает пронумерованный список команд, которые Вы выполняли в этом и предыдущем сеансе. Если в списке историии их довольно много, то увидите последние.
* jobs - выводит список всех выполняемых и приостановленных задач.
* kill - завершить процесс (необходимо указать какой).
* killall - позволят управлять процессами используя их имена или имена файлов, а не идентификаторы как в kill. Завершаются все указанные процессы.
* kernelversion - показывает основную и дополнительную версии ядра.
* nice - позволяет отобразить или настроить приоритет задачи.
* ps - выводит список всех работающих процессов.
* pstree - показывает иерархию процессов системы, что хорошо показывает их взаимозависимость.
* renice - задаёт приоритет для указанной задачи.
* script - позволяет записывать весь вывод с терминала в файл.Что бы остановить запись нажмите Ctrl+d.Если имя файла не указано то записывается в typescript.
* times - показывает полное время выполнения процессов для всей системы и данного пользователя.
* top - запускает программу, которая позволяет управлять процессами.И ещё много дополнительной, полезной информации.
* cd - смена текущего каталога.По умолчанию переходит в домашний каталог текущего пользователя (если без параметров).
* dir - отображает файлы в текущем каталоге в алфавитном порядке и с учётом регистра.
* file - показывает тип содержимого указанного файла(текст, выполняемый, данные).
* find - поиск файлов в текущем каталоге.Если указать путь, можно искать везде.
* free - отображает информацию об оперативной памяти, подкачки, кэше,свободная памать, общая и т.д.
* ls - показывает все файлы в текущем каталоге в алфавитном порядке.Аналогична dir.
* last - показывает список пользователей, которые заходили в систему с момента создания файла /var/log/wtmp.
* lastlog - проверяет историю входа в систему зарегистрированных пользователей.Форматирует и выводит на печать файл /var/log/lastlog.
* logger - посылает запрос демону syslogd с просьбой поместить сообщение в системный журнал.
* lpr - отправляет документ на печать демону печати.
* chmod - изменяет режим доступа к файлу.Символьный или числовой формат.
* chown - смена владельца указанного файла.Требуется доступ root.
* chage - применяется для изменения срока действия учетной записи.Для администрирования.
* chfn - изменяет сведения о пользователе в файле /etc/passwd из которого берёт информацию команда finger .
* chgrp - команда для администратора,для изменения группы владельцев файла.
* clear - очищает экран терминала (если это возможно).
* crontab - обеспечивает возможность выполнения определённых задач по расписанию. Чаще используется администратором, хотя свои задачи могут быть и у пользователей.
* csplit - разбивает файл на несколько частей.Надо задать метод разбивки (строки и т.д.).
* cp - копирует один файл в другой, или несколько файлов в каталог.
* dd - копирование файла с одновременным выполнением различных, дополнительных преобразований.
* dc - калькулятор.
* debugfs - применяется для восстановления файловой системы (ext2,ext3) если недостаточно команды fsck.
* df - показывает количество используемого и свободного дискового пространства для всех подключенных разделов файловой системы.
* du - показывает количество блоков диска, занятых каждым из файлов каталога.
* mc - запускает программу Midnight Commander диспетчер файлов в текстовой консоли. Напоминает MSDOS менеджеры и довольно проста и удобна в использовании.Очень много нужных и удобных функций.
* mkdir - создание указанного каталога.
* man - справочное руководство.
* mcat - копирует необработанные данные на дискету.
* mcopy - использует отформатированную дискету MSDOS для копирования файлов в Линукс и из Линукс без предварительного подключения дискеты к файловой системе.
* mdel - удаляет файл на отформатированной дискете MSDOS.
* mdir - отображает содержимое каталога на дискете MSDOS.
* mdu - показывает дисковое пространство занятое каталогом MSDOS.
* mesg - контролирует доступ к Вашему терминалу, что бы коллеги не могли засыпать Вас сообщениями с помощью команды write
* mformat - создаёт на дискете файловую систему MSDOS.
* mkbootdisk - применяется в некоторых дистрибутивах, для создания загрузочной дискеты, содержащей всё необходимое для аварийной загрузки.
* mktemp - создаёт уникальное имя файла для временной работы.
* mlabel - создаёт метку тома на MSDOS на отформатированной дискете.
* mmd - создаёт подкаталог MSDOS на отформатированной дискете.
* mmount - подключает к файловой системе отформатированное устройство MSDOS.
* mmove - перемещает или переименовывает файл на дискете MSDOS.
* more - средство постраничного просмотра текстового файла.
* mv - переименовывает или перемещает файлы или каталоги.
* rm - удаление указанного файла.Можно и много удалить.
* rmdir - удаление указанного пустого каталога.
* safedelete - удалиние указанного файла в каталог safedelete,где он хранится некоторое время перед необратимым удалением.
* stat - отображение всей доступной информации об указанном файле.
* touch - изменяет время последнего доступа или изменения файла на текущее время.
* undelete - восстанавливает файлы удалённые командой safedelete.
* wc - показывает число строк, слов и символов в файле.
* bunzip2 - распаковывает указанный файл на 30%быстрей чем gzip.
* bzip2 - сжимает указанный файл по ускоренному алгоритму.
* bzip2recover - делает попытку восстановить данные из повреждённого файла сжатого bzip2.
* compress - сжимает указанный файл по другому алгоритму.
* uncompress - распаковывает файл сжатый предыдущей командой.
* cpio - позволяет создавать архивы и извлекать из архивов файлы.Позволяет копировать файлы. Необходимо указывать соответствующие параметры.
* gpg - позволяет зашифровать и расшифровать файл.Метод шифрования открытым ключом. Позволяет создавать электронные подписи.Если этой программы нет у Вас, [Вы должны войти или ]
* gzip - сжимает указанный файл.
* gunzip - распаковывает указанный файл (расширения.Z,.gz,.tgz,.zip).
* gzexe - позволяет сжать исполняемый файл с указанным именем так, что бы он автоматически распаковывался и выполнялся, когда пользователь даёт команду на выполнение сжатого файла.
* gpasswd - устанавливает пароль группы.
* mcrypt - Шифрует указанный файл.Создаётся новый файл в рабочем каталоге с расширением.enc. Вам будет предложено ввести пароль.Не забудьте его.
* mdecrypt - расшифровывает это же файл.Если этих утилит нет, [Вы должны войти или ]
* tar - помещает два и более файлов в новый или существующий архив или извлекает их из архива.При задании каталога, заархивирует все файлы в каталоге и подкаталоге.
* talk - позволяет вести интерактивный диалог с пользователем сети ИНТЕРНЕТ.
* tee - отсылет выходные данные на два устройства вывода.Можно одновременно вывести на экран и в файл.
* toe - выдаёт сведения о существующих терминалах, которые могут быть использованы для дальнейшей работы.
* touch - изменяет время создания файла на текущее.Если файл не существует, то создаёт новый, пустой файл.
* unarj - распаковывает или выводит список содержимого указанного архива в формате.ARJ(формат сжатия MS DOS).
* unzip - распаковывает и извлекает файлы из архивов, созданных утилитами ZIP (Linux,MS DOS,Microsoft Windows).
* zip - архивирует и сжимает файлы.
* zipinfo - отображает информацию о содержимом архива.Если указать имя, то выдаст информацию о конкретном файле.
* zipnote - позволяет вывести и отредактировать комментарии к файлам из архива ZIP.
* zipsplit - позволяет разделить архив zip на достаточно маленькие части, для записи их на сменные носители, и записывает файлы на указанное устройство(дискеты).
* zforce - добавляет расширение.gz ко всем файлам в рабочем каталоге, или к указанному файлу, которые были сжаты, но не имеют расширения.Т.е. предотвращает повторное сжатие.
* uuencode - кодирует двоичный файл для передачи по ASC11сетям.
* uudecode - декодирует выше названный файл.
* autorun - автоматически распознаёт все доступные приводы CDROM в системе, монтирует их при вставке диска и может запускать отдельные приложения (например проигрыватель).Для использования, необходимо добавить параметры в файл привода.
* badblocks- проверить указанное устройство на наличие повреждённых секторов (указать устройство).
* eject - извлекает носитель из указанного устройства.Если устройство смонтировано то команда производит размонтирование перед извлечением носителя.
* e2fsck - проверяет и при необходимости восстанавливает повреждённый том файловой системы (ext2,ext3).
* echo - выводит строку текста на стандартное устройство вывода.
* fdformat - форматирование гибкого диска.Дополнительно вводится имя устройства и необходимый вид форматирования.
* fg - переводит процесс выполняемый в фоновом режиме в приоритетный режим.
* fgconsole - показывает количество активных виртуальных консолей.
* fsck - проверяет и восстанавливает файловую систему.
* mount - монтирование файловой системы.
* umount - отмонтирование файловой системы (в обоих командах необходимо указать, что именно).
* rdev - при вызове без параметров выводит информацию о текущей файловой системе.
* rcp - применяется для копирования файлов с одного компьютера на другой.
* rdate - получает значение даты и времени от другого узла сети.Используется для синхронизации системного времени узлов.
* rename - переименовывает файлы.Очень удобно, когда много файлов.
* resize - изменяет размер окна виртуального терминала в графическом окружении.
* restore - восстанавливает файлы заархивированные с помощью команды dump.
* runlevel - отображает текущий и предыдущий уровни выполнения.
* shred - выполняет безопасное удаление файла предварительно перезаписав его содержимое на другой диск.
* sleep - приостанавливает начало выполнения процесса на заданное количество секунд.
* usleep - приостанавливает на микросекунды.
* sync - очищает буферы файловой системы.
* cmp - производит быстрое сравнение двух указанных файлов.Если они идентичны, то никакие сообщения не выводятся.
* column - форматирует входной текст из указанного файла в список из пяти колонок.
* diff - сравнивает два указанных текстовых файла.Каждое отличие выводится в контексте. Позволяет сравнивать каталоги.
* diff3 - сравнивает три указанных файла и выводит результаты.
* enscript - преобразует указанный текстовый файл в формат Post Script.Вывод может быть направлен на печать или записан в файл.
* fmt - данная утилита производит форматирование каждой строки в указанном файле таким образом, что все строки имеют одинаковую ширину.
* head - утилита выводит первые десять строк файла.Можно и несколько файлов.
* ispell - запуск интерактивной утилиты для проверки орфографии в указанном файле.
* id - отображает действующие значения идентификаторов пользователя и группы для текущего пользователя.
* ifconfig - отображает состояние текущей конфигурации сети или настраивает сетевой интерфейс.
* less - отображает содержимое указанного файла на экране и позволяет удобно просмотреть.
* nl - команда нумерует строки в указанном файле.
* paste - обьединяет соответствующие строки файлов в колонки.При желании можно обьединить несколько файлов.
* pdf2ps - преобразует файл формата PDF в Post Script.Результат записывает на диск.
* pdftotext - преобразует файл из формата PDF в текст и записывает результат на диск.
* pr - подготавливает текст к печати, осуществляя форматирование с разбиением на страницы.Можно подготовить несколько файлов.
* sort - команда позволяет отсортировать строки файла в алфавитном порядке.
* split - разбивает файл на части.
* zcat;zmore- выводит содержимое файла сжатого gzip на экран без распаковки.
* zcmp - сравнивает сжатые gzip два файла без распаковки.
* zdiff - сравнивает сжатые gzip два файла без распаковки.
* zegrep;zfgrep;zgrep- осуществляют поиск указанной строки, выражения в файле сжатом gzip, без распаковки.
* aumix - запускает в интерактивном режиме утилиту, которая управляет различными настройками звуковой карты.
* cdda2wav - утилита предназначена для записи звуковых дорожек с аудиокомпакт диска в файлы формата WAV.Если имя файла не указано, то запись идёт в файл audio.wav в текущем каталоге.
* cdlabelgen- команда предназначена для подготовки обложек к коробкам компакт дисков. Результат в файле формата Post Script.Требуется наличие интерпретатора языка Perl не ниже 5.003 версии.
* cdp- запуск проигрывателя аудиокомпакт дисков в текстовом режиме.
* cdparanoia- считывает звуковые дорожки с аудиокомпактов и записывает в файлы WAV,AIFF,RAW.
* combine- обьединяет два и более графических файла в один.Огромное количество спецэффектов.Является частью пакета Image Magick их можно взять [Вы должны войти или ]
* convert- преобразует указанный входной графический файл, в выходной.Распознаёт множество форматов. Скачать так же как и предидущую.
* identify- определяет формат и характеристики графического файла и проверяет целостность и наличие ошибок.
* mogrify- преобразует графический файл и перезаписывает исходный.
* montage- преобразование нескольких файлов в обьединённое изображение.[Вы должны войти или ]
* mpg123- воспроизводит на основном устройстве воспроизведения аудио файл в формате MP3. Вписывается имя файла или его адрес в Интернет.Чтобы остановить воспроизведение Ctrl+c.Что бы остановить и выйти из программы Ctrl+c нажать дважды.
* play- воспроизводит звуковой файл с указанным именем.Автоматически распознаёт тип файла. Позволяет добавлять различные звуковые эффекты к воспроизводимым файлам.
* playmidi -воспроизводит зуковые файлы в формате MIDI.
* rec- записывает входной сигнал с микрофона или других входов в звуковой файл. Тип файла следует указать с помощью параметра (type).Есть возможность добавить звуковые эффекты.
* sox -преобразует сэмплы из формата входного сигнала, на выходной с добавлением эффектов.
* emacs- запуск текстового редактора Emacs.
* joe- простой в использовании редактор работающий в текстовом режиме.
* pico- простой и удобный в использовании текстовый редактор.Удобен для редактирования конфигурационных и простых файлов.
* vi- запуск классического текстового редактора VI для UNIX систем.
* dmesg- выводит на экран сообщения ядра, включая отображаемые при запуске и потом. Что бы удобней читать, вводите dmesg|less.
* groupadd- создание группы пользователей с указанным именем.
* groupdel- удаляет группу с указанным именем.
* groupmod- изменяет параметры группы с указанным именем.
* mkpasswd- создаёт высококачественный пароль, состоящий по умолчанию из девяти символов и содержащий по крайней мере буквы в разном регистре и цифры.
* passwd -позволяет пользователю с указанным именем изменять пароль своей учётной записи. root может изменить пароль любого пользователя.
* pwgen -создаёт высококачественный пароль,который хорошо запоминается.Длинна пароля указывается числом. Если этой утилиты нет,
* quota- показывает текущую статистику использования диска и текущие ограничения для пользователя или группы с указанным именем.
* quotacheck- исследует файловую систему на предмет использования дискового пространства.
* quotaon- включает и отключает ограничения на использование дискового пространства.
* rpm запускает менеджер пакетов, утилиту,позволяющую устанавливать, проверять и обновлять пакеты с расширением rpm.
* rpmfind- поиск нужного пакета в базе пакетов RPM через ИНТЕРНЕТ.
* tmpwatch- удаление всех файлов в указанном каталоге, если к ним не осуществлялся доступ в течении последних n часов.Очищает временные каталоги.
* useradd- создание нового пользователя с указанным именем.
* userdel- удаляет пользователя с указанным именем.
* usermod - изменяет параметры пользователя с указанным именем.
* fetchmail - утилита получения почты.Роботает в фоновом режиме.Скачивает почту с указанного сервера. Если её нет, [Вы должны войти или ]
* ftp -устанавливает соединение с указанным узлом и позволяет скачивать или закачивать файлы.
* lynx- запуск консольного WEBброузера.
* mail -утилита редактирования и просмотра электронной почты.Отправка и получение писем.
* netstat- вывод информации о сетевой подсистеме.Очень много настроек и параметров.
* ping -отправка на указанный адрес пакетов для проверки возможности соединения с этим узлом.
* telnet -открывает окно терминала на удалённом узле и запускает интерактивный сеанс.
* wvdial- программа подключается к ИНТЕРНЕТ по протоколу PPP с использованием параметров, хранящихся в файле /etc/wvdial.conf
* wvdialconf- осуществляет поиск модема, определяет порт, к которому он подключен, его строку инициализации и максимальную скорость передачи данных.Эта информация автоматически записывается в файл (смотри выше).Требуется доступ root.
* ar- средство архивирования, предназначено для создания и распаковки архива.
* arch- отображает данные об архитектуре центрального процессора.
* at -ставит задания в очередь для последующего выполнения в указанное время.
* atq- показывает список заданий которые поставлены в очередь на выполнение.

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

  • Windows 7 Starter – Операционная система для нетбуков. Отличается исключительно 32-битным исполнением, ограниченным функционалом интерфейса Windows Aero, отсутствием функции быстрого переключения между пользователями, невозможностью сменить фон рабочего стола и не поддерживающая 64-битные процессоры. Эта операционная система продается только в виде предустановленной ОС, купить ее в коробочной версии невозможно.
  • Windows 7 Домашняя Базовая – недорогая операционная система для использования в домашних условиях. В ней все еще отсутствуют встроенный Windows Media Center Edition (MCE), поддержка Windows Aero и поддержка Мультитач. Зато присутствует стандартный интерфейс Windows и быстрое переключение между пользователями. Эту операционную систему можно приобрести в коробочной версии.
  • Windows 7 Домашняя Расширенная – система для продвинутого для домашнего использования с расширенными возможностями. Обладает встроенным Windows MCE, поддержкой до 4-х TV-тюнеров, полноценного интерфейса Windows Aero, совместима с Dolby Digital и поддерживает мультитач. В боксовой версии присутствуют сразу 2 DVD диска - с 32 и 64-бит версиями дистрибутива. Эту ОС можно устанавливать на 2-х процессорные рабочие станции.
  • Windows 7 Профессиональная – операционная система для работы с расширенными возможностями. Еще более надежная система (за счет некоторых функций) для бизнес пользователей. Обладает расширенными сетевыми возможностями. Также может похвастаться лицензией на XP Mode и умением искать предпочтительный принтер для выбранных сетей. В комплекте ноутбука с такой операционной системой часто можно найти дистрибутив Windows XP.
  • Windows 7 Максимальная – название говорит за себя – универсальная система для выполнения любых задач. Идеально подходит для предприятий. При желании нужную операционную систему (кроме Windows Starter) всегда можно приобрести и установить на ноутбук самостоятельно. Если у вас уже есть, приобретенная ранее, «Боксовая» версия операционной системы, то есть смысл приобретать ноутбук без операционной системы, чтобы не переплачивать за предустановленную ОС.

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

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

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

«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 используют дистрибутивы. Дистрибутив - это не просто набор программ, а ряд решений для разных задач пользователей, объединённых едиными системами установки, управления и обновления пакетов, настройки и поддержки.