MD to HTML with MS VSC +
Markdown All in One by Yu Zhang
Table Prettifier by Krisztian Daroczi
Markdown+Math by goessner
Google Chrome -> print to pdf -> A4, Portrait,
Margins: top, bottom .4" left, right 0", Scale 130%
[ ] Headers and Footers
[ ] Background Graphics
234567891123456789212345678931234567894123456789512345678961
--------|---------|---------|---------|---------|---------|-
$\qquad\qquad\qquad\qquad$ ~= 13.7
REV. N07
ORIGIN: 201304280646
+-------------------------------+
| LIVE FREE OR DIE |
| |
| UNIX* |
| |
| *TRADEMARK OF BELL LABS |
+-------------------------------+
До 2010 года изучение Unix-like операционных систем имело исключительно важное значение в определении структуры интеллектуальной пирамиды. Действовавшая тогда структура:
человеческая личность ->
распределенный разум ->
животные -> ...
похоже, сменилась. В сегодняшней структуре человеческая личность более не занимает верхнюю ступеньку:
распределенный разум* ->
человеческая личность ->
животные -> ...
Технические решения, создаваемые распределенным разумом работоспособны, но настолько объемны, что не помещаются целиком в сознании одного человека** (даже с предельными интеллектуальными способностями -- так называемого динозавра). Однако любая небольшая часть проекта, как правило, прозрачна и может быть легко осмыслена. Молодое поколение с энтузиазмом восприняло окончание эры динозавров***. В частности, в качестве доказательства силы распределенного разума, с целью включения механизма поддержки SMP (symmetric multiprocessing) было успешно переписано ядро операционной системы FreeBSD, в четвертой версии все еще содержавшее код, созданный одним из авторов UNIX -- Кеном Томпсоном. Одновременно, для 64-х битных систем была снята "проблема" конца света 2037 года, когда в античных UNIX ядрах наступит переполнение счетчика UNIX-time ведущего отсчет от 1 января 1970 года.
Примечания:
*) Распределенный разум -- это потомок коллективного разума, усиленного поисковыми службами, экспертными системами и другими возможностями глобальных компьютерных сетей.
Переживать по этому поводу бесполезно, так как большинству людей образовавшийся симбиоз нравится (Jaan Kikas, ETV Ringvaade 2012-09-24 19:15) а негативные последствия редки (Китайский участник ролевой интернет-игры убил соотечественника за виртуальный меч, 31.03.2005, 23:36:04, http://lenta.ru/news/2005/03/31/sword/e)
**) Впрочем, стремление к простоте не чуждо и современным разработчикам. Таковы, например, новая иерархическая файловая система от фирмы Apple в которой нет иерархии, и новая операционная система Windows RT 8, в которой нет окон (метро). [примечание автора]
Mountain Lion’s New File System by Oliver Reichenstein. Apple has been working on its file system and with iOS it had almost killed the concept of folders -- before reintroducing them with a peculiar restriction: only one level! With Mountain Lion it brings its one folder level logic to OSX.. (http://informationarchitects.net/blog/mountain-lions-new-file-system/)
***) Остается непонятным, кем или чем был вызван названный эмоциональный подъем, так как к указанному периоду средства пиара, рекламы и развлечений эффективно управляли желаниями масс. [примечание автора]
Определимся с вопросом о том, зачем и в каком объеме следует освоить UNIX. Установим (верхний по списку ниже) мотиватор на отметку 100 баллов сложности.
Отличительная особенность оригинального UNIX в том, что при (большом) желании система может быть понята от начала до конца одним человеком (примеры: Кен Томпсон Kenneth Thompson (1943), Линус Торвальдс Linus Torvalds (1969) возможно Стив Джобс (Steve Jobs, 1955-2011) , Эндрю Стюарт Таненбаум (Andrew Stuart Tanenbaum, 1944), Джон Лайонс (John Lions, 1937-1998) и другие).
Система UNIX исключительно легко переносится на новые архитектуры электронных вычислительных машин (ЭВМ), (например, на уникальную архитектуру ARM с полностью асинхронным ядром. До 20121025 UNIX доминировал на рынке процессоров с ядром ARM: SoC Tegra 3, SoC Qualcom Snapdragon, Cortex-A15 MPCore, Apple A6 и другие. В настоящее время UNIX-подобная, но сильно фрагментированная ОС Андроид v.2.3, v.3.1, v.4.1, v.4.2 и менее UNIX-подобная iOS-6, теснится недавно вышедшей на рынок ARM системой Windows 8 RT, и, находящейся в разработке, Windows Blue ARM)
Тем не менее UNIX, в значительной мере, сохраняет за собой высокие позиции по количеству пользователей благодаря:
невысокой цене кода, закупаемого разработчиками
понятной схеме оплаты, когда:
предустановке бесплатно распространяемого программного обеспечения на новые приобретаемые устройства (компьютеры, медиа-проигрыватели, дигибоксы, сетевое оборудование и т.д.)
UNIX-системы доминируют на рынке серверов.
UNIX-системы установлены почти на все суперкомпьютеры. (для работы современного суперкомпьютера может потребоваться миллион и более лицензий ОС -- по количеству процессоров).
Примеры UNIX-like систем.
Изучать работу UNIX удобно в следующей последовательности (сверху вниз)
Классический UNIX 197x годов (простота, доступны исходные коды, есть симуляторы, легендарная книга "Lions Book")
Linux (либо FreeBSD)
коммерческая ОС (MacOSX, Android)
|------|-----|--------------------------------------------|
|Неделя|Часов|Тема, описание |
|----|---|------------------------------------------------|
| 1. | 4 | Введение. Операционные системы. UNIX-like |
| | | операционные системы. Дистрибутивы. Версии |
| | | ядра. Типы лицензий. Преимущества и недостатки |
| | | системы Unix. Области применения системы UNIX. |
| | | Интернет, файл- и принт- серверы. Серверы |
| | | приложений и СУБД. Кластеры и облака. |
| | | Суперкомпьютеры. Рабочие станции. Планшеты и |
| | | смартофоны. Настольные компьютеры и ноутбуки. |
| | | Обзор железа (hardware). Процессор (CPU) |
| | | Оперативная память (RAM). Жесткий диск.| |
| | | Материнская плата (чипсет, контроллер |
| | | периферии, шины (PCIe, SATAx, USBx), |
| | | видеокарты, сетевые карты. Установка UNIX |
| | | (Linux, FreeBSD, OpenSolaris, Android-x86, |
| | | Darwin). Логическая структура информации на |
| | | диске и ее редактирование (PartED). Установка |
| | | с носителя (CD/DVD/USB). Установка по сети. |
| | | Клонирование. |
| 2. | 4.| Линукс для user'а. Shell, консоль, виртуальные |
| | | терминалы (alt-f*), ядро. Начало и конец |
| | | сессии. Получение подсказки. Основные команды |
| | | (BASH, SH). Shutdown. Дерево каталогов. |
| | | Команды pwd, cd, mkdir. rmdir, ls. |
| | | Метасимволы. Вывод содержания текстовых и |
| | | бинарных файлов на консоль, поиск информации в |
| | | теле файла (grep). Регулярные выражения. |
| | | Поиск файлов (find). Жесткие и софт-линки. |
| | | Атрибуты файлов. Владелец, группа, специальные |
| | | атрибуты и их редактирование. Редактирование |
| | | файлов (ed, vi. emacs и др.). |
| | | Администрирование файловой системы. Папка /dev |
| | | Типы файловых систем. Монтирование. Работа с |
| | | внешними носителями (CD/DVD), память |
| | | подключаемая по USB. Вывод на консоль |
| | | свободного места на диске (df,du), проверка и |
| | | исправление ошибок файловой системы (fsck). |
| | | Квота. SH shell. Потоки и файлы. |
| | | Перенаправление STDIN, STDOUT, STDERR. Трубы |
| | | (pipes). Переменные окружения. Скрипты. |
| | | Инициализация системы. |
| 3. | 4.| Процесс загрузки. Bootloader'ы LILO, GRUB, |
| | | GRUB 2. Runlevel. Файл /etc/inittab. Upstart. |
| | | Автостарт демонов. Процессы. Вывод списка |
| | | процессов на консоль. Уничтожение процессов. |
| | | (kill). Системные вызовы fork и exec. |
| | | Процессы на заднем и переднем плане (bg, fg) |
| | | Приорететы. Запуск процессов согласно графику |
| | | работ (crond ja atd). Администрирование LOG- |
| | | файлов (dmesg, syslogd ja klogd). Фильтры и |
| | | шаблоны. Администрирование пользователей. |
| | | Создание, изменение, уничтожение учетных |
| | | записей пользователей, смена паролей. Группы |
| | | пользователей. Права пользователей. |
| 4. | 4.| Подсистема X-windows. Запуск и остановка. |
| | | Конфигурирование и утилиты настройки X-windows |
| | | Настройка печати. CUPS. Архивирование и |
| | | создание резервных копий. (compress, gzip, |
| | | bzip2, tar, cpio, dump/restore, cdrecord/wodim |
| | | ). Программные пакеты. Компилирование из |
| | | исходников. Введение в средства программирова- |
| | | ния - gcc, gdb, make, strip. Структура скрипта |
| | | make. Конфигурирование ядра, патчи, |
| | | компиляция ядра. Команды загрузки и удаления |
| | | модулей ядра, их конфигурационные файлы |
| 5. | 4.| Настройка сети. протокол TCP/IP. Классы |
| | | адресов и сегменты (подсети). Конфигурирование |
| | | сетевой карты (NIC). DNS. Настройка сетевого |
| | | интерфейса со статическим и динамическим |
| | | адресом IP. Команды ifconfig, route. Клиенты |
| | | telnet, ftp, ssh, mail. Настройка NFS на |
| | | стороне клиента. |
| 6. | 6.| Сетевые службы. Start, stop, restart, status. |
| | | Местоположение конф.-файлов и их структура. |
| | | Webmin. Демоны sshd, telnetd, ftpd. |
| | | Безопасность сети. Iptables. Настройка |
| | | брандмауера (Firewall). Sniffing. |
| | | Snord. Обнаружение атак. |
Редактор vi. Создание файла в домашней папке.
Переходим в домашнюю папку
$ cd ~
Убедимся, что мы находимся в домашней папке
$ pwd
/home/user
Если вас зовут user то домашней будет папка /home/user
Запускаем текстовый редактор.
$ vi lesson1.txt
Наименьшее количество проблем возникнет, если удастся свыкнуться с мыслью, что на клавиатуре есть только кнопки основной группы:
[ESC][1][2][3][4][5][6][7][8][9][0][-][=][ <-- ]
[Q][W][E][R][T][Y][U][I][O][P][[][]]
[A][S][D][F][G][H][J][K][L][;]['] [Enter]
[Shift] [Z][X][C][V][B][N][M][,][.][/]
[ Space ]
Peдактор имеет три режима работы
Переход между режимами:
В -> П Esc
В -> К Esc :
П -> В i (insert, вставка) или a (append, дополнить)
П -> К :
К -> В Esc i
К -> П Esc
Перемещаться по тексту следует в режиме правки кнопками. В этом же режиме осуществляется простое редактирование.
h - влево, "а не в Хвост строки"
j - вниз, "а не Йог левитирующий"
k - вверх, "а не Копать"
l - вправо, "a не наЛево"
x - удалить текущий символ "крест поставить"
r - заменить текущий "replace"
Шутки, заключенные в кавычки призваны помочь запомнить кнопки редактора vi-vi-vi. Текущий объект отмечен курсором (чтобы не утек).
Oперации с текущей строкой.
dd - (delete) удалить и забрать в буфер
yy - (yank) забрать в буфер текущую строку
p - (paste) поместить содержимое буфера обмена
под текущей строкой.
Сохранить файл можно командой (переходим в командный режим)
w или
w имя_файла
Выход из редактора также осуществляется в командном режиме
q выход
wq выход с сохранением
q! выход без сохранения
Ссылки и литература на русском языке
https://www.ibm.com/developerworks/ru/edu/l-vi/index.html
1. Введение
Выбираем из следующих возможностей:
Использовать дистрибутив Fedora Live CD (Gnome)
Самый простой способ для новичка.
Установить ОС на виртуальную машину (ВМ).
Легкий способ одновременно использовать несколько ОС на одном компьютере.
Зарезервируйте компьютер только под Linux.
Хороший вариант для тех, кто имеет соответствующий компьютер.
Установить ОС на освобожденное дисковое пространство.
NB! В связи с риском потери имеющейся информации, рекомендуется пользователям, знакомым с компьютерами.
Первое знакомство
Большинство ознакомительных экспериментов будет проводиться в командной строке, так что было бы хорошо выяснить, где находится окно вашего терминала.
В ОС Fedora Gnome есть несколько возможностей открыть окно терминала.
- Applications -> Sеarch -> Terminal
- Alt-F1 (Alt-F2, ALT-F3 и т.д.) открывает Virtual Console.
Вернуться в графику - Alt-F7
1 Login и logout. Помощь.
Открыть виртуальную консоль (Alt-F1)
login: user-name password: user-password
$ man intro
знакомит с главными командами и структурой подсказки (фрагмента сказки, man).
$ exit
Командой exit
закончим сессию.
Права администратора могут быть получены с помощью команды
$ su -
или войдя в систему с именем пользователя root
Логин: root
Пароль: root-password
#
приглашение в виде решетки (#
) напоминает вам, что вы root.
+----------------------------+
| дацзыбао 0. ВСЁ ЕСТЬ ФАЙЛЫ |
+----------------------------+
В Unix-подобных системах, устройства, папки и даже некоторые системные таблицы и структуры данных в оперативной памяти по сути, являются файлами.
1.2.1 Формат команды
В темноте командной строки вы можете оглядеться вокруг с помощью команд. Формат команды чаще всего такой:
команда -a -b --long_key0 argument0 arg1 .. argN
где дефис используется для однобуквенных ключей, и два дефиса для длинных ключей.
1.2.2 Вывод рабочей папки (pwd -- print work directory)
Отображает текущую папку в дереве каталогов (сразу после входа в систему, пользователь с именем "user" находится в папке /home/user а суперпользователь с именем "root" - в папке /root
$ pwd
Все файлы образуют древовидную структуру, растущую из папки с именем "/" (корневой каталог). В корневой папке находятся такие важные каталоги, как:
/bin программы
/boot kernel (ядро)
/grub bootloader (мультизагрузчик)
/etc конфигурационные файлы
/X11 графика
/home домашние папки пользователей
/lib библиотеки (libraries)
/mnt монтировать здесь
/root домашний каталог пользователя "root"
/sbin системные программы
/tmp временные файлы
/proc таблицы ядра, переключатели, отчеты (в ОЗУ)
/usr уровень 2
/bin
/sbin
/lib
/local уровень 3
/bin
/lib
/sbin
/src
/var log файлы, кэш (cache) ...
1.2.3. Изменение каталога (cd).
Можно перемещаться из одной папки в другую командой cd
. Помогают в этом специальные имена папок:
. - Текущий каталог
.. - Одну директорию вверх. (корень дерева в мире UNIX
находится вверху, а крона дерева внизу)
~ - Наша домашняя папка (здесь мы были сразу после
входа в систему)
~foo - домашний каталог пользователя "foo"
/ - Корневой каталог (корень файлового дерева)
/root - домашний каталог суперпользователя
Пример 1
pwd находимся в папке /home/user
cd /usr/share/doc находимся в папке /usr/share/doc
cd .. находимся в папке /usr/share
cd ../.. находимся в папке /
cd boot находимся в папке /boot
cd /grub такой папки здесь нет, ошибка.
Мы там, где мы были (/boot)
cd grub находимся в папке /boot/grub
cd ~ Мы вернулись домой (/home/user)
1.2.4 List files (ls ( -l, -d, -a)
Пример 1. Зайти в папку /boot. Оглядеться вокруг.
$ cd /boot
$ ls
config-2.6.26.5.fc9.i686 memtest86+-2.01
efi System.map-2.6.26.5.fc9.i686
grub vmlinuz-2.6.26.5.fc9.i686
initrd-2.6.26.5.fc9.i686.img
Пример 2. Сделать длинный обзор папки /home/user/Desktop
$ ls -l /home/user/Desktop/
total 8
-rw-rw-r-- 1 user user 5701 2008-10-21 21:53 penguin
Показанная строка содержит не только имя файла, но и его атрибуты
r - владелец файла имеет право читать (r read) этот файл
w - владелец имеет право писать (w write) в этот файл
- - владельцу не разрешено запускать (x execute) этот файл
r - члены группы имеют право читать файл
w - члены группы имеют право писать в этот файл
- - члены группы не имеют права запустить этот файл
r - другие пользователи могут читать файл
- - Другие пользователи не имеют права писать в этот файл
- - Другие пользователи не имеют права запустить этот файл
1 - у файла единственное имя, нет алиасов (жестких ссылок)
user - user владелец файла
user - владелец файла принадлежит к группе user
5701 - размер файла 5701 байт
2008-10-21 - последнее изменение: 21 октября 2008
21:41 - в 21:41
penguin - penguin это имя файла
Пример 2. Сделать длинный обзор папки /home/user
, показать скрытые файлы.
$ ls -la /home/user
total 152
drwx------ 26 user user 4096 2008-10-21 22:08 .
drwxr-xr-x 3 root root 4096 2008-09-20 18:00 ..
-rw------- 1 user user 392 2008-10-12 22:42 .bash_history
-rw-r--r-- 1 user user 18 2008-02-29 16:27 .bash_logout
-rw-r--r-- 1 user user 176 2008-02-29 16:27 .bash_profile
-rw-r--r-- 1 user user 124 2008-02-29 16:27 .bashrc
...
-rw------- 1 user user 1324 2008-10-21 20:00 .xsession-errors
Если имя файла начинается с точки, то это скрытый файл. Такие файлы обычно используются для настройки среды (обитания).
Маски имен файлов используются для ограничения вывода из ls.
* любые символы
? любой символ
[A-D] большими буквами от А до D
Пример 4. Показать все файлы в папке /usr/bin, которые начинаются с x, t, или z буквы и заканчиваются буквой d
$ ls /usr/bin/[xtz]*d
/usr/bin/tload /usr/bin/xfd /usr/bin/xload
/usr/bin/xwud /usr/bin/xclipboard /usr/bin/xkbevd
/usr/bin/xwd /usr/bin/xxd
d - ключ используем в том случае, если хотим знать атрибуты папки
Пример 5. Показать атрибуты папки /etc/X11
$ ls -ld /etc/X11
drwxr-xr-x 6 root root 4096 2008-10-12 11:33 /etc/X11
1.2.5. Сколько свободной оперативной памяти ОЗУ (free)
Показывает, сколько свободной оперативной памяти можно использовать
Пример 1. 46MB свободной памяти RAM
$ free
total used free shared buffers cached
Mem: 319904 273792 46112 0 12148 111132
-/+ buffers/cache: 150512 169392
Swap: 337356 0 337356
1.2.6. Свободное пространство на диске. disk free (df)
Показывает количество свободной памяти на дисках.
Пример 1. 1.4GB свободны на первом разделе
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 3793824 2330412 1463412 62% /
tmpfs 159952 48 159904 1% /dev/shm
gvfs-fuse-daemon 3793824 2330412 1463412 62% /home/u/.gvfs
1.2.7. disk usage (du)
Показывает, сколько дискового пространства используется для хранения папок.
Пример 1.
# du -s /home/user
8868 /home/user/
Пример 2.
# du /etc/
8 /etc/cron.d
8 /etc/bash_completion.d
4 /etc/alternatives
28 /etc/yum.repos.d
.. ....
92 /etc/ppp
196 /etc/mail
88424 /etc
1.3. кроме файлов, здесь есть хотя-бы что-то еще?
1.3.1. Оболочка и переменные среды.
Небольшие количества информации можно временно хранить в оперативной памяти в виде переменных. Теперь и далее будем считать, что мы выбрали оболочку BASH, которая выбрана по умолчанию во многих Linux дистрибутивах.
+----------------------------------------------------------+
| дацзыбао 1. ЗНАЧЕНИЯ ПЕРЕМЕННЫХ BASH - ЭТО ВСЕГДА СТРОКИ |
+----------------------------------------------------------+
Пример 1. Создание, чтение переменных и присваивание им значений.
# MY_NUMBER=123
# MY_NAME=user
# echo $MY_NUMBER $MY_NAME
123 user
# unset $MY_NUMBER
# echo $MY_NUMBER $MY_NAME
user
1.3.2. Процессы (ps)
Знакомясь с Linux, операционная система видит меня как процесс - исполняемый файл, который ОС загрузила в ОЗУ и передала ему управление. В данном случае я - это оболочка Bash (/bin/bash). Для того, чтобы сама ОС не потеряла контроль над процессами используется разделение времени - каждому из процессов дается короткий период времени (1-100 мс), после чего ОС возвращает управление себе и переключает активную задачу. Этот механизм позволяет параллельно запустить сотни и тысячи процессов.
Познакомимся с нашими соседями.
Пример 1. ps этот процесс запустил я сам. Он больше мой ребенок (bash's child), чем соседский.
$ ps
PID TTY TIME CMD
1887 pts/0 00:00:00 bash
2028 pts/0 00:00:00 ps
Пример 2. Все процессы.
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME
COMMAND
root 1 0.0 0.2 1948 740 ? Ss 15:49 0:01
/sbin/init
root 2 0.0 0.0 0 0 ? S< 15:49 0:00
[kthreadd]
...
user 1846 1.3 6.9 85732 22340 ? Sl 15:51 0:14
gnome-terminal
user 1848 0.0 0.1 2776 632 ? S 15:51 0:00
gnome-pty-helper
user 1849 0.0 0.4 5716 1512 pts/0 Ss 15:51 0:00
bash
user 1895 4.0 0.2 5512 940 pts/0 R+ 16:10 0:00
ps aux
USER - каждый процесс имеет владельца
PID - ОС назначает каждому процессу уникальный номер
%CPU - сколько процессорного времени выделено процессу
%MEM - сколько оперативной памяти выделено процессу
VSZ - виртуальной памяти в килобайтах
RSS - резидентная (не выгружаемая) часть
TTY - используемый терминал
STAT - статус, смотри man ps
START - время запуска процесса
TIME - длительность выполнения процесса
COMMAND - файл и аргументы, запущенные для создания процесса
1.3.3 Backslash ()
Обратная косая -- это очень популярный символ в UNIX-мире в разных программах роль которого различна. Оболочка SH использует "" как символ продолжения строки.
Пример 1.
$ ls -la \
> /boot
total 5864
drwxr-xr-x 4 root root 4096 2008-10-12 23:48 .
drwxr-xr-x 21 root root 4096 2008-10-22 18:50 ..
-rw-r--r-- 1 root root 88852 2008-09-20 10:54
config-2.6.26.5-45.fc9.i686
drwxr-xr-x 3 root root 4096 2008-05-08 04:41 efi
drwxr-xr-x 2 root root 4096 2008-10-12 23:48 grub
-rw------- 1 root root 2713893 2008-10-12 11:30
initrd-2.6.26.5-45.fc9.i686.img
-rw-r--r-- 1 root root 112076 2008-04-04 00:16
memtest86+-2.01
-rw-r--r-- 1 root root 916225 2008-09-20 10:54
System.map-2.6.26.5-45.fc9.i686
-rwxr-xr-x 1 root root 2125408 2008-09-20 10:54
vmlinuz-2.6.26.5-45.fc9.i686
1.3.4 echo
echo
-- это простая команда, которая печатает свои аргументы на экране
Пример 1. echo
$ echo hello unix
hello unix
-n
говорит о том, что в конец строки символ новой строки т.е. не добавляй (\n - 0x0a)
в конец строки.
Пример 2. echo -n
$ echo -n hello unix
hello unix$
1.3.5 Wormhole
Если все управляющие и видимые символы не помещаются в алфавит ограниченного размера, используются wormholes (в разное время русский эквивалент слова имел различное звучание, поэтому здесь применяется оригинал). Для этого один символ резервируется для того, чтобы войти в расширенный (extended) алфавит. Часто таким зарезервированным символом является "\
" обратная косая черта (backslash). Старое значение зарезервированного символа переносится в расширенный алфавит. Тогда "\\
" это видимая обратная косая черта (два движения: 1 - "\
" провалиться в расширенный алфавит, 2 - "\
" отобразить видимый символ backslash).
Добавим в расширение алфавита следующие символы: t, n, с 000 по 377 в восьмеричной системе:
\t табулятор (tab)
\n новая строка (new line)
\000, \001, .. \007, \010, .. \377 ASCII символ в 8-ном коде
Пример 3. backslash, echo and wormhole
$ echo -e "\074welcome to unix\076"
<welcome to unix>
$ echo -e \074welcome to estonia\076
074welcome to estonia076
$ echo -e \\074welcome to my nightmare\\076
<welcome to my nightmare>
$
-e
(extended) ключ разрешает использовать символы расширенного алфавита, проникая в него через wormhole (backslash).
** 1.3.6 STDIN STDOUT, STDERR. cat**
Программы (любые) предназначены для обработки информации. Для этого программа:
Оболочка (shell) всегда держит открытыми три файла
Перенаправление потока информации в
STDOUT с помощью >, >>, 1> 1>>, |, 1|
STDERR с помощью 2>, 2>>, 2|
Перенаправление потока информации из (читать из) STDIN
STDIN с помощью <, 0<
<
чтение из файла>
запись в файл>>
добавление в файл|
соединить трубой (pipe)Пример 1. Читаем X --help используя фильтр "less" (постраничный показ, возможность поиска (/
) и перелистывания (space, enter, Up, Down, PageUp, PageDown). Выпускает из себя кнопкой q (quit).
X --help 2>&1 | less
Синтаксис 2>&1
перенаправляет STDERR в STDOUT.
Пример 2.
$ echo one > report
$ echo -n two 1>> report
$ echo -e \\ntree >> report
$ cat report
One
Two
Tree
Программа cat выводит на STDOUT содержимое файлов, идущих списком аргументов этой команды.
Пример 3.
$ cat -n raport
1 one
2 two
3 tree
Если STDOUT нужно подставить на место имени файла, используется псевдоимя "-
".
Мы можем сразу начать строить очень простой текстовый редактор для того, чтобы описать другу свою новую жизнь UNIX процессом.
Пример 4.
$ cat - > message0
Здравствуй друг !
Жизнь здесь интересная, но я все еще не умею практически
ничего. Я даже сомневаюсь, правда ли то, что написано в man:
что написанное можно сохранить одновременно нажав кнопки
"Ctrl" и "D"
до лучших времен !
Ваш кот дочь Баша (сat bash's child process -
дочерний процесс).
$
2.1 Наведение порядка в домашней папке (mkdir
, rm -rf
).
Пример 1. Создаем папки в домашнем каталоге
$ cd ~
$ mkdir school
$ mkdir job
$ mkdir relax
$ cd relax
$ mkdir audio
$ mkdir video
$ mkdir photo
$ cd ../school
$ mkdir lesson1
$ mkdir lesson1/a
$ mkdir lesson1/b
Пример 2. Стираем папку lesson1 и все что в ней лежит из каталога school.
$ rm -rf /home/kasutaja/school/lesson1
-r
recursive-f
force2.2 Запасная копия (backup) на устройство внешней flash-памяти
Для того, чтобы смонтировать flash-брелок, нужно в каталоге /mnt создать папку, куда монтировать файловую систему внешнего носителя.
$ su -
# mkdir /mnt/usb
# mount /dev/sdb1 /mnt/usb
# exit
Новая команда mount монтирует устройство /dev/sdb1 в папку /mnt/usb
+------------------------------------------------------------+
| дацзыбао 2. КОМАНДЫ С ДВУМЯ АРГУМЕНТАМИ: |
| ПЕРВЫМ АРГУМЕНТОМ ЯВЛЯЕТСЯ ТО, ЧТО СУЩЕСТВУЕТ. |
| ВТОРЫМ АРГУМЕНТОМ ЯВЛЯЕТСЯ ТО, ЧТО СОЗДАЕТСЯ. |
+------------------------------------------------------------+
Теперь архивируем все содержимое архива /home/user на USB-flash.
cd ~/..
tar cv user | bzip2 > /mnt/usb/user-$(date +%Y%m%d).tar.bz2
Команда tar (tape archive) отправляет результат на STDOUT.
c - создать
v - рассказывать, что делаешь
|
соединяем выход tar со входом пакующего фильтра bzip2. bzip2 выдаст результат на STDOUT.
>
перенаправление в файл с именем 20121025.tar.bz2 (25 октября 2012 года). штамп времени добавляется к имени автоматически - $(date +%Y%m%d)
.
Команда date +F вернет штамп времени (timestamp) F :
%Y
- номер года (от рождества Христова) - 4 позиции%m
- номер месяца (январь = 1) - 2 позиции%d
- число месяца (первое = 1) - 2 позицииПеред тем как вынуть flash из USB, ее следует размонтировать
$ su -
# umount /dev/sdb1
# exit
2.3 sudo
# su -
# echo 'user ALL=(ALL) ALL' >> /etc/sudoers
** 2.4 mv (move), cp (copy) и patch**
для команд mv и cp справедливо правило двух аргументов (дацзыбао 2).
Пример 1. Компилируем оригинал ядра (vanilla kernel)
cd /usr/src
wget -c http://kernel.org/ ... /linux-2.6.27.tar.bz2
wget -c http://kernel.org/ ... /patch-2.6.27.4.bz2
tar xf linux-2.6.27.tar.bz2
mv linux-2.6.27 linux-2.6.27.4
cd linux-2.6.27.4
bzip2 -dc ../patch-2.6.27.4.bz2 | patch -p1
cp /boot/config-2.6.26.6-79.fc9.i686 .config
make oldconfig
make
make modules_install
make install
2.5 install
Пример 1. VirtualBox
# wget -c http://download.me/VirtualBox.rpm
# yum install qt qt-x11 SDL
# rpm -Uvh VirtualBox.rpm
# rm -f VirtualBox.rpm
Загружаем пакет (wget).
yum установит заказанную и подчиненнык программы используя распределенную базу пакетов - репозиторий. Важнейшие запросы к yum это:
yum search package_name
yum install package0 package1 ... packageN
yum remove package0 package1 ... packageN
yum clean all
rpm -Uvh packages(s).rpm install/upgrade package file(s)
rpm -e package remove package
rpm -qa '*spell*' show all packages whose names
containing the word spell
rpm -q package show version of package installed
rpm -q -i package show all package metadata
rpm -q -f /path/file what package does file belong
rpm -q -l package list where files were installed
rpm -q -l -p package.rpm list where files would be
installed
rpm -q --requires package list files/packages that package
needs
rpm -q --whatrequires pack list packages that need package
pack
2.5 Последовательный терминал
$ ln /dev/ttyS0 /dev/modem
$ yum install minicom
$ minicom
Пример настройки:
** 3.0 Обработка текста. Регулярные выражения и фильтры.**
Never write it in 'C' if you can do it in 'awk';
Never do it in 'awk' if 'sed' can handle it;
Never use 'sed' when 'tr' can do the job;
Never invoke 'tr' when 'cat' is sufficient;
Avoid using 'cat' whenever possible.
--Taylor's Laws of Programming
regexp ^ $ . [A-Za-z] [0123] [^A] () |
grep (-i, -v, -r, -l) 'regexp'
find
sed ja ed
cat (-n), wc (-l, -c, -w), less, more, head (-n 3), tail (-n)
tr, sed, gawk '{ print $3,$1 }', sort, uniq (-u), paste
Основные команды UNIX
01. Файлы и папки
pwd, cd ( . , .. , ~ , ~user), mkdir (-p)
ls ( -l, -d, -a, -i, -1, --color)
ln ( -s)
cp, mv, rm ( -f, -r), touch
cmp, diff, patch (-pN)
find
Файловое дерево
/ root directory
/bin programs
/boot kernel
grub bootloader
/etc configuration files
X11 graphics
/home users home
/lib libraries
/mnt mount here
/root root's home
/sbin system programs
/tmp temporary
/proc some kernel tables, switches, report (in RAM)
/usr level 2
bin
sbin
lib
local level 3
bin
lib
sbin
src
var log files, cache, chrooted files, ...
02. Свойства и права пользования файлами и папками
chown, chgrp, chmod (744, +x, +s)
-rw------- 1 user user 289 2008-09-21 17:27 .bash_history
drwxr-xr-x 2 root root 80 2008-10-12 14:00 bsg
lrwxrwxrwx 1 root root 3 2008-10-12 14:00 cdrom -> sr0
brw-rw---- 1 root floppy 2, 0 2008-10-12 14:00 fd0
srw-rw-rw- 1 root root 0 2008-10-12 14:00 log
crw-rw---- 1 root uucp 4, 64 2008-10-12 14:00 ttyS0
03. stdin, stdout, stderr
>, >>, <, |, (0<, 1>, 2>), |&, >&, >>& (2>&1), tee
04. Архивирование
tar (c v f x j z), bzip2 (-d), gzip (-d), cpio
7za (p7zip), unrar
05. Файловые системы
fdisk, mkfs.ext3, mkswap, fsck,
dd ( if=/dev/zero if=/dev/random if=/dev/sda if=/dev/sdb1,
of=/dev/null bs=512 count=63)
df, du ( -s),
mount (-o, -t, /etc/fstab), umount
/etc/fstab
/dev/sda1 / ext3 defaults 1 1
/dev/sda2 swap swap defaults 0 0
06. Текстовые редакторы
vi, ed, nano
07. Написание скриптов
#!/bin/bash,
переменные окружения,
"", '', ``
test (-lt -le -eq -ge -gt),
if .. ; then .. ; fi
while .. ; do .. ; done
for $x in .. ; do .. ; done
seq,
expr (index length match substr)
08. Фильтры и логи
grep (-i, -v, -r, -l -n -H) 'regexp' [filename]
( ^ $ . [A-Za-z] [0123] [^A] () | )
cat (-n), wc (-l, -c, -w), less, more, head (-n 3), tail (-n)
tr, sed, gawk '{ print $3,$1 }', sort, uniq (-u), paste
/var/log/messages,
/var/log/Xorg ...
09. Юзеры
useradd, userdel, passwd, su (-)
/etc/passwd
root:x:0:0:root:/root:/bin/bash
kasutaja:x:500:500::/home/kasutaja:/bin/bash
/etc/group
root:x:0:root
kasutaja:x:500:
10. Процессы
ps (-A), kill (-9), killall, top, nice, job, fg, bg
11. Загрузка
dmesg, uname (-a, -r), /etc/issue
init (0, 1, 2, 3, 4, 5, 6)
ntsysv, rcconf
/boot/grub/menu.lst
/etc/inittab
12. Сеть
ping, traceroute, ifconfig, route, nslookup, dig
/etc/resolv.conf
nameserver 193.40.160.3
13. Программирование
gcc, gdb, cpp, make, strip
14. Инсталляция
yum (install remove search), rpm (-q -a -i -e -v -h -U) rpm -Uvh
zypper (install, remove, search)
apt-get (install, remove, autoremove), apt-cache search, apt-src
dpkg (-i, -r), dpkg-query
15. Разное
crontab, mail
В 1940 году Уоррен Маккалок и Уолтер Питтс моделировали нейроны с помощью теории конечных автоматов (для описания нервной системы). В 1956 году, для описания этих моделей, Стив Клини создал математическую абстракцию, называемую регулярными множествами.
Регулярное выражение это способ задания набора строк. Так как набор может содержать бесконечно много членов, мы не можем просто пронумеровать (enumerate) их.
Есть четыре операции для создания регулярных выражений
Таблица ниже иллюстрирует названные операции на примерах.
Операция Регулярное выражение Да Нет
............................................................
Репликация ab * a aa ab
(Замыкание Клини) аба
abba
Логическое ИЛИ aa | baab aa любaя другая
(Чередование) Baab строка
Koнкатенация aabaab aabaab любaя другая
строка
Группирование a(a|b)aab aaaab любaя другая
abaab строка
* Оператор имеет наивысший приоритет, затем |, затем
конкатенация.
Если мы хотим, чтобы cоздать набор строк: a, aba, ababa, abababa, и так далее, мы должны написать (ab)*a
, чтобы указать, что шаблон ab должен быть реплицирован с набором a.
Роберт Седжвик, Кевин Уэйн, Принстонский университет, 2004
Полезные расширения:
.
" соответствует любому символу$
" соответствует концу строки^
" соответствует началу строки[Ci-Cj]
" соответствует упорядоченному списку символов от Ci доCj
" (включая Ci, Cj)?
" предшествующий символ встречается 0 или 1 раз*
" предшествующий символ встречается 0 или более раз+
" предшествующий символ встречается 1 или более раз{n}
" предшествующий символ встречается точно n раз{n, m}
" предшествующий символ встречается по крайней мере n раз, но не более m раз\
" backslash (http://ru.wiktionary.org/wiki/червоточина) переключение между обычным и расширенным алфавитом (метасимволы). Например $ означает доллар, но не конец cтроки, а $ означает конец cтроки, но не доллар.Итак, мы познакомились с юниксом в объеме одного пункта из ста. Найти материал для дальнейшего изучения в требуемом объеме не составит труда. Много ценного материала изложено по-английски, все-таки родина UNIX (у них). Сегодня, при наличии роботов-переводчиков
и других, легко начать с изучения упрощенного языка наподобие basic english, pidgin english, voa english (voice of america), globish etc.
demo people
username userpassword surname firstname
...
pupsik kudaidemm6sp2ta4kom sidorov petr
#!/bin/sh
group=demo
exec < demo_people
while read user pass surname name
do
useradd $user -g demo -c $surname"_"$name
echo $user":"$pass | chpasswd
mkdir /home/$user/public_html
chown $user:$group /home/$user
chown $user:$group /home/$user/public_html
chmod 755 /home/$user
chmod 755 /home/$user/public_html
cp index.php /home/$user/public_html/
chmod 755 /home/$user/public_html/index.php
chown $user:$group /home/$user/public_html/index.php
done
Шведский социолог: через 20 лет Эстония станет богатой англоязычной страной
18.10.2012 в 09:59 http://rus.postimees.ee/1010342/shvedskij-sociolog-cherez-20-let-jestonija-stanet-bogatoj-anglojazychnoj-stranoj/
Выступивший в Эстонии в рамках конференции "Шведская бизнес-награда – 2012" шведский музыкальный педагог, социолог и мыслитель Александер Бард считает, что в будущем страны Балтии станут англоязычныим, а через 20 лет они будут богатейшими в Европе.
Как сообщает ERR Uudised, в интервью программе "Terevisioon" на ETV он заявил, что готов биться об заклад, что в Эстонии именно так и будет, потому что за этим умозаключением стоит разумная теория: инвестиции в широкополосный интернет и образование и все, что с этим связано, – сегодня то же самое, что в XIX веке инвестиции в железные дороги, которые осуществили Северная Америка, Япония и Западная Европа, которые через 50 лет стали богатейшими в мире.
В отношении английского языка социолог сказал, что везде, особенно в малых странах, вроде Швеции и Эстонии, элита очень хорошо говорит на английском языке, у этих людей есть друзья и связи в других странах, и общение ведется на английском.
Бард отметил, что есть проблема с "отстающими", с теми, у кого мало друзей или только местный круг общения, – но в перспективе говорить на глобальном языке и на местном будет преимуществом, и в этом смысле лучше быть эстонцем, чем, скажем, англичанином.
Александер Бард является автором книги "Нетократия – новая властная элита и жизнь после капитализма", в которой проводится связь идей Ницше, Дарвина и постструктурализма с кибернетикой; кроме того он считает, что в эмиграции нет ничего плохого, потому что когда исчезают физические границы, уехавшие люди позже принесут знания и инвестиции обратно.
Китайский участник ролевой интернет-игры убил соотечественника за виртуальный меч 31.03.2005, 23:36:04
http://lenta.ru/news/2005/03/31/sword/
Житель Шанхая убил своего соотечественника за "украденный" виртуальный меч, существующий лишь в онлайновой ролевой игре "Legend of Mir 3", сообщает агентство Reuters со ссылкой на китайскую газету China Daily.
Как известно, ролевые интернет-игры (MMORPG) получают все большую популярность, и относительно давно существует рынок виртуальных предметов, существующих только в рамках игр, которые могут продаваться "в оффлайне" за реальные деньги. В конце прошлого года американские ученые-экономисты подсчитали, что оборот глобального рынка несуществующих вещей составляет около 100 миллионов американских долларов. В декабре некий житель Австралии установил рекорд по сумме сделки подобного рода, купив за 26,5 тысяч долларов остров, существующий только в игре Project Entropia. Приобретение может принести ему прибыль, так как он может зарабатывать деньги, взимая их с других игроков, поселившихся на его острове, а игровая валюта может конвертироваться в реальные денежные единицы.
В рамках игры "Legend of Mir 3" участники зарабатывают игровые активы, которые позволяют им получить больше игровых возможностей. Одним из таких активов является виртуальный меч, который в феврале был получен в ходе игры одним из участников - 41-летним Цю Ченвэем - и впоследствии одолжен его другу - Чжу Цаоюаню. Однако тот вскоре продал меч "в реальной жизни" за 7200 юаней (около 870 долларов США), что и вызвало недовольство хозяина оружия. Он пришел к Чжу Цаоюаню, чтобы разобраться и сильно ударил его, что привело к смерти.
Впоследствии Цю Ченвэй добровольно сдался полиции и признал свою вину. Ему было предъявлено обвинение в умышленном нанесении телесных повреждений, но об окончательном вердикте точно неизвестно, так как китайское правосудие решает, какие именно законы могут быть применимы в данной нештатной ситуации.
Ветви Unix
Дистрибутивы Ubuntu и Fedora Linux
Fedora 17 (Beefy Miracle)
Fedora 16 (Verne)
Fedora 15 (Lovelock)
Fedora 14 (Laughlin)
Fedora 13 (Goddard)
Fedora 12 (Constantine)
Fedora 11 (Leonidas)
Fedora 10 (Cambridge)
Fedora 9 (Sulphur)
Fedora 8 (Werewolf)
Fedora 7 (Moonshine)
Fedora Core 6 (Zod)
Fedora Core 5 (Bordeaux)
Fedora Core 4 (Stentz)
Fedora Core 3 (Heidelberg)
Fedora Core 2 (Tettnang)
Fedora Core 1 (Yarrow)
Ubuntu 4.10 (Warty Warthog)
Ubuntu 5.04 (Hoary Hedgehog)
Ubuntu 5.10 (Breezy Badger)
Ubuntu 6.06 LTS (Dapper Drake)
Ubuntu 6.10 (Edgy Eft)
Ubuntu 7.04 (Feisty Fawn)
Ubuntu 7.10 (Gutsy Gibbon)
Ubuntu 8.04 LTS (Hardy Heron)
Ubuntu 8.10 (Intrepid Ibex)
Ubuntu 9.04 (Jaunty Jackalope)
Ubuntu 9.10 (Karmic Koala)
Ubuntu 10.04 LTS (Lucid Lynx)
Ubuntu 10.10 (Maverick Meerkat)
Ubuntu 11.04 (Natty Narwhal)
Ubuntu 11.10 (Oneiric Ocelot)
Ubuntu 12.04 LTS (Precise Pangolin)
Ubuntu 12.10 (Quantal Quetzal)
Ubuntu 13.04 (Raring Ringtail)
Bourne Shell scripts
Language Dazibao:
Comments
#!/bin/bash
#
# first row is telling to the system which shell should be
# implemented with this script
Constant data in code
Strings 'this is $strong quoting' # no substitution
"this is $weak quoting" # values substituted
`expr 2 + 3` # 5 result redirected
$(expr 2 + 3) # 5, with XML flavour
Variable data in code
All primary types of data:
- boolean,
- bit set,
- finite integer,
- floating point number
are stored as formatted strings (in human readable form).
Variables does not require declaration.
Newer versions of bash support one-dimensional arrays, aka (a[3]=Abcd
)
Structures and Containers are not available.
% VAR = "My variable" # create / write
% echo $VAR # read
% unset $VAR # free memory allocated to $VAR
Special variables
$? return code of the last command
$# number of command line arguments
$* whole string of arguments as one string
$0 script filename
$1 .. $n command line arguments
Expressions
Expressions are evaluated using expr utility.
Numeric expressions with integers: (+ - * / %
)
+ plus
- minus
* multiplication
/ division
% modulo (returns the remainder
of an integer division)
% expr 18 + 4
String manipulations: (index match length substr)
# index: position in string of first character
# in substring that matches.
# substr: print substring, start & length specified
# length: length of string. 'match' operations
similarly to 'grep': a=1234zipper43231
# index: position in string of first character
# in substring that matches.
b=`expr index $a 23`
# echo numerical position of first 2 in $a is $b.
# substr: print substring, start & length specified
b=`expr substr $a 2 6`
# echo substring of $a, starting at 2 and 6 chars long is $b
# length: length of string
b=`expr length $a`
echo length of $a is $b.
# 'match' operations similarly to 'grep'
b=`expr match $a [0-9]*`
# echo number of digits at the beginning of $a is $b.
b=`expr match $a '\([0-9]*\)'`
# echo the digits at the beginning of $a are $b.
Strings concatination:
% a="Uno"; b="Duo"; c=$a$b; echo $c # UnoDuo
% d="Just${c}Between"; echo $d # JustUnoDuoBetween
5. Flow control
Use "test" named tool to evaluate expression to boolean. Result is returned in exit code: 0 - true, 1 - false and is stored in $? special variable.
Logical operations with exit codes
! logical NOT
&& logical AND
|| logical OR
cp file1 $var || exit 1
if [ -e file1 ] && [ -e file2 ]
then
echo "both files exists"
fi
String comparison
-z string is "null", that is, has zero length
-n string is not "null".
= is equal to ($a = $b)
!= is not equal to ($a != $b)
\< is less than, in ASCII alphabetical order
($a \< $b). Note that the "<" needs to be escaped.
\> is greater than, in ASCII alphabetical order
($a \> $b). Note that the ">" needs to be escaped.
Filesystem
-e file exists
-f file is a regular file
-s file is not zero size
-d file is a directory
-b file is a block device (floppy, cdrom, etc.)
-c file is a character device (keyboard, sound card..)
-p file is a pipe
-L file is a symbolic link
-S file is a socket
-r file is readable (has read permission)
-w file has write permission
-x file has execute permission
-g group-id flag set on file
-u user-id flag set on file
-k "sticky bit" set (if user does not own a directory
that has the sticky bit set, she cannot delete files
in it, not even files she owns)
-O you are owner of file
-G group-id of file same as yours
-t n file descriptor n is open. This usually refers to
stdin, stdout, and stderr (file descriptors 0 - 2).
f1 -nt f2 file f1 is newer than f2
f1 -ot f2 file f1 is older than f2
f1 -ef f2 files f1 and f2 are links to the same file
Integer comparison
-eq is equal to ($a -eq $b)
-ne is not equal to ($a -ne $b)
-gt is greater than ($a -gt $b)
-ge is greater than or equal to ($a -ge $b)
-lt is less than ($a -lt $b)
-le is less than or equal to ($a -le $b)
Logical expressions
(expression) override normal precedence of the operators
! expression logical not
-a logical and
-o logical or
exit N - exit script with exit code N
if test expression
then
...
fi
while test expression until test experssion
do do
... ...
done done
break - use this operator to exit do - done loop
continue - use this operator to resume next iteration
for vVar in 1 2 4 8
do
echo $vVar
done
Note 1: Use
for vVar in *; do ... ;done
to iterate in directory of files
Note 2: Use seq tool to generate lists
seq 5 # (stop) 1 2 3 4 5
seq 3 5 # (start stop) 3 4 5
seq 3 2 7 # (start step stop) 3 5 7
Several operators on the same row should be
separated by ;
for vVar in Alpha Beta Gamma; do
echo $vVar
done
case $vVar in
"$condition1" )
command...
;;
"$condition2" )
command...
;;
esac
Example
#!/bin/bash
case $1
[a-z] ) echo "Lowercase letter";;
[A-Z] ) echo "Uppercase letter";;
[0-9] ) echo "Digit";;
* ) echo "Punctuation, whitespace, or other";;
esac
# Allows ranges of characters in [square brackets].
Visibility and encapsulation
Write each function in separate file.
If only script ascript uses function foo, ascript_foo name is recommended for this function. Otherwise anamespace_foo name is good for functions used in more than one script.
Also ugly and useless function implementation was introduced in late versions of Bourne Shell (after 1979).
foo () {
# Checks if any params.
if [ -z $1 ]
then
echo "No parameters passed to function."
return 0
else
echo "Param #1 is $1."
return 1
fi
}
foo
foo abc
How to insert data
- from command prompt
% read a # now write the value for just created a variable
% echo $a
% echo # wait for key is pressed
- inside script source
cat > /etc/resolv.conf <".
- exec
#!/bin/sh
group=pa05b
exec < pa05b_people
while read user pass surename name
do
useradd $user -g 1009 -c $surename"_"$name
echo $user":"$pass | chpasswd
mkdir /home/$user/public_html
chown $user:$group /home/$user
chown $user:$group /home/$user/public_html
chmod 755 /home/$user
chmod 755 /home/$user/public_html
cp index.php /home/$user/public_html/
chown $user:$group /home/$user/public_html/index.php
done
----------
Приложение Е.
Binary tools recommended for portable Unix scripts:
echo TRUE cp touch
cat FALSE mv tar
tr ln cmp
sed expr rm diff
awk test mkdir egrep
seq rmdir grep
ls sort
pwd sleep
----------
ПрилоЖение Ж. Настройка ядра Linux.
cp vmlinuz.config /usr/src/linux-2.6.14/.config
make oldconfig
make menuconfig
Ethernet (10 or 100Mbit)
[*] AMD PCnet32 PCI support
Graphics support --->
[*] Support for frame buffer devices
[*] VESA VGA graphics support
Console display driver support --->
[*] Video mode selection support
<*> Framebuffer Console support
File systems
[*] reiserfs
[*] minix
[*] DOS/FAT/NT
[*] MSDOS
[*] VFAT
[*] NTFS
[*] NTFS Write support
Pseudo filesystems
[*] Virtual memory filesystem (CONFIG_TMPFS=yes)
Devices
Input Devices
[*] Mouse Interface
[*] Provide legacy /dev/psaux support
...
[*] Mouse --->
make
cp arch/.../bzImage /boot/linux-2.6.14.2
vi lilo.conf
# global settings
boot=/dev/hda
prompt
timeout=50
# colour depth | 640x480 800x600 1024x768 1280x1024
# --------------+------------------------------------
# 256 (8bit)| 769 771 773 775
# 32767 (15bit)| 784 787 790 793
# 65535 (16bit)| 785 788 791 794
# 16.7M (24bit)| 786 789 792 795
vga=789
# per-image settings
image=/boot/linux-2.6.14
label=linux
root=/dev/hda1
read-only
4. Create fb devices
mknod /dev/fb0 c 29 0
ln -s /dev/fb0 /dev/fb0current
fb devices
http://www.charmed.com/txt/framebuffer.txt
http://www.cs.wisc.edu/~johnbent/thinkpad/
Building package from sources, install, uninstall
./configure
make
make install
make clean
make mrproper
make uninstall
cd ..
rm –rf <package_name>
----------
Приложение З.
Linux packaging info
http://www.pixelbeat.org/docs/packaging.html
install/upgrade package file(s)
dpkg -Gi package(s).deb
rpm -Uvh packages(s).rpm
remove package
dpkg -r package
rpm -e package
show all packages (names only)
dpkg-query --showformat='${Package}\n'
show all packages whose names contain the word spell
dpkg -l '*spell*'
rpm -qa '*spell*'
show version of package installed
dpkg -l package
rpm -q package
show all package metadata
dpkg -s package
rpm -q -i package
what package does file belong
dpkg -S /path/file
rpm -q -f /path/file
list where files were installed
dpkg -L package
rpm -q -l package
list where files would be installed
dpkg -c package.deb
rpm -q -l -p package.rpm
list files/packages that package needs
dpkg -s package | grep ^Depends:
rpm -q --requires package
list packages that need package (see also whatrequires)
dpkg --purge --dry-run package
rpm -q --whatrequires package
leaves (debian)
#!/bin/bash
# discover leafs on the package three
for i in `dpkg-query --showformat='${Package}\n' --show`
do
dpkg --purge --dry-run $i 2> /dev/null 1| grep "^Would remove or purge"
done