Команди *nix систем. Операційна система Термін «UNIX-подібний» та торгова марка 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, Renesas та багато інших.

На відміну від більшості інших операційних систем, 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/com/ 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 libgnuts-dev libicu-dev libcairo-dev libjpeg-dev libpng-dev 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-системи відрізняються гнучкістю - в них завжди є більше одного способу зробити що-небудь.

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

Сьогодні користувачам персональних комп'ютерів надано широкий вибір операційних систем. Безумовно найпоширенішими серед них є операційні системи сімейства 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) завжди можна придбати та встановити на ноутбук самостійно. Якщо у вас вже є, придбана раніше, «Боксова» версія операційної системи, тобто сенс купувати ноутбук без операційної системи, щоб не переплачувати за встановлену ОС.