OpenSCADAWiki:
Roman Savochenko
/
Linux Short All
/part3
...
Home
|
Index
|
Changes
|
Comments
|
Users
|
Registration
|
Login
:
Password:
===3 Процедуры=== ====3.1 Компиляция ядра==== %%(php) $ cd KernelTree/ #Переход к распакованному корню дерева исходников ядра $ make config(menuconfig, xconfig) #Конфигурация $ make dep #Создание файлов зависимостей $ make clean #Очистка от ранее скомпилированных модулей $ make bzImage #Компиляция ядра $ make install #Установка ядра $ make modules #Компиляция модулей $ make modules_install #Установка модулей %% ====3.2 Создание swap в файле==== %%(php) $ dd if=/dev/zero of=/swap bs=1024 count=8208 #Создание файла необходимого размера для swap $ mkswap /swap #Инициализация структуры swap в файле $ /bin/sync #Сброс изменений на диск $ swapon /swap #Включение swap (отключение - swapoff) %% ====3.3 Смена имени системы==== * отредактировать /etc/sysconfig/network * отредактировать /etc/hosts ====3.4 Удалённое подключение с использованием X-сервера, для запуска GUI приложений==== Вариант 1 (обычный): %%(php) client$ xinit - :1 #Запустить X-сервер на клиенте (должен запуститься xterm) client$ xhost +server #Зарегистрировать машину сервера у клиента client$ telnet server -l UserName #Подключиться к удаленной машине (серверу) server$ export DISPLAY=client:0.0 #Установить переменную DISPLAY server$ startkde #Запустить оконный менеджер %% Вариант 2 (используя ssh): %%(php) client$ xinit - :1 #Запустить X-сервер на клиенте (должен запуститься xterm) client$ ssh -X UserName@server #Подключиться к удаленной машине (серверу) server$ startkde #Запустить оконный менеджер %% Вариант 3 (протокол XDMCP): %%(php) #Включение поддержки XDMCP протокола на стороне сервера #Для kdm (/etc/X11/kdm/kdmrc): Включить в секции [Xdmcp] #Выбор удалённой авторизации и входа в диспей-менеджере клиента (xdm, kdm, gdm) %% ====3.5 Установка русской консоли==== %%(php) $ consolechars -f UniCyr_8x16 -m koi8-r; $ echo -ne "\033(K"; $ loadkeys ru1; %% ====3.6 Форматирование дискет, создание FS, проверка FS==== %%(php) $ fdformat /dev/fd0 $ mkfs.vfat /dev/fd0 $ ckfs.vfat -ta /dev/fd0 %% ====3.7 Создание зашифрованных ФС==== %%(php) $ dd if=/dev/zero of=./sequre_disk bs=1024 count=50000 #Создание файла для будущей FS $ losetup -e aes /dev/loop0 ./sequre_disk #Создание шифрованого loop устройства $ mkfs.ext3 /dev/loop0 #Создание файловой системы на loop устройстве $ losetup -d /dev/loop0 #Отключение loop устройства $ mount -o loop,encryption=aes ./sequre_disk /mnt/tmp/ #Обычное монтирование шифрованной ФС %% ====3.8 Подключение дисковых квот==== * Добавить опции usrquota, grpquota для выбранных разделов в файле /etc/fstab; * Создать файлы quota.user и quota.group в корне выбранных разделов; * Выполнить проверку квот <$ quotacheck -avugm>; * Включить квоты <$ quotaon -avug>; * Редактирование квот для конкретного пользователя <$ edquota -u user>; * Проверка состояния квот <$ repquota -a>. ====3.9 Печать страниц документации==== * man man | col -b | lpr * info man | col -b | lpr ====3.10 Использование ~OpenSSL==== %%(php) $ openssl rand 5 #Генерация последовательности случайных байт $ openssl ciphers HIGH #Запрос списка алгоритмов для указанного уровня # Генерация секретного RSA и DSA ключа key.pem, зашифрованного des3. # В качестве источника случайных данных используется /var/log/messages. $ openssl genrsa -out ./key.pem -des3 -rand /var/log/messages 2048 $ openssl dsaparam -rand /var/log/messages -out ./dsaprm 1024 $ openssl gendsa -out ./key.pem -idea -rand /var/log/messages ./dsaprm # Создание публичного RSA и DSA ключа на основе секретного $ openssl rsa -in ./key.pem -out ./pubkey.pem -pubout $ openssl dsa -in ./key.pem -out ./pubkey.pem -pubout # Изменение пароля и алгоритма шифрования секретного RSA и DSA ключа $ openssl rsa -in ./key.pem -out ./key1.pem -idea $ openssl dsa -in ./key.pem -out ./key1.pem -des3 # Симметричное шифрование файла алгоритмом des3 и кодирование base64 $ openssl des3 -in ./logo.png -out ./logo.des3 $ openssl base64 -in ./logo.des3 -out ./logo.des3.base64 $ openssl des3 -a -in ./logo.png -out ./logo.des3.base64 # Декодирование файла из base64 и симметричная дешифрация из des3 $ openssl base64 -d -in ./logo.des3.base64 -out ./logo.des3 $ openssl des3 -d -in ./logo.des3 -out ./logo.png $ openssl des3 -d -a -in ./logo.des3.base64 -out ./logo.png # Конвертация ассиметричных ключей и сертификатов с формата PEM в DER и обратно $ openssl x509 -inform PEM -in ./key.pem -outform DER -out ./key.cer $ openssl rsa -inform PEM -in ./key.pem -outform DER -out ./key.der # Вычисление хеша (md5,sha1 ...) $ openssl md5 -c ./logo.png # Подпись файла секретным ключом и проверка ЭЦП публичным ключом, с алгоритмом хеширования md5 $ openssl dgst -sign ./key.pem -out ./logo.sign -md5 ./logo.png $ openssl dgst -signature ./logo.sign -verify ./pubkey.pem -md5 logo.png # Асимметричная шифрация файла с использованием публичного ключа и дешифрация секретным (RSA) $ openssl rsautl -in ./logo.png -out ./logo.cr -inkey ./pubkey.pem -pubin -encrypt $ openssl rsautl -in ./logo.cr -out ./logo.png -inkey ./key.pem -decrypt # Создание запроса на сертификацию на основе создаваемого секретного ключа $ openssl req -new -key ./tmp.key -out ./certreq.pem # Создание сертификата подписанного собственным секретным ключом $ openssl req -x509 -new -key ./key.pem -out ./selfcert.pem -days 365 # Просмотр информации сертификата в читабельном виде $ openssl x509 -in ./selfcert.pem -noout -text # Подписывание клиентского сертификата CA сертификатом $ openssl x509 -req -in ./client.pem -CA ./CAcert.pem -CAkey ./CAkey.pem -CAcreateserial -days 365 -out ./client1.pem %% ====3.11 Настройка ssh==== %%(php) client$ ssh-keygen #Генерация асимметричного ключа на локальной машине в директорию " /.ssh/" client$ scp ./identity.pub rserver: ~/.ssh/ #Передача публичного ключа на удалённый сервер (любым способом) rserver$ cat ~/.ssh/identity.pub >> ~/.ssh/authorized_keys #Авторизация своего открытого ключа на сервере # либо 'client$ ssh-copy-id rserver' вместо предыдущих двух строчек client$ ssh rserver #Подключение к удалённому серверу %% ====3.12 Создание ramdisk (диска в памяти)==== %%(php) $ mkfs /dev/ram0 $ mount /dev/ram0 /mnt/disk %% ====3.13 Создание, использование и обслуживание LVM==== %%(php) $ vgscan #Поиск по системе виртуальных групп VG $ vgchange -ay #Активизировать виртуальную группу (-an - деактивизировать) $ pvscan #Поиск доступных физических томов и отображение сравнительной информации о них $ pvdisplay /dev/hda1 #Просмотр информации о физическом томе $ pvcreate /dev/hda1 #Подготовка физического тома PV (тип раздела 8Eh) $ pvmove /dev/hda1 #Освобождение физического тома (перенос данных на другие физические тома) $ vgdisplay vg00 #Просмотреть информацию о виртуальной группе $ vgcreate vg00 /dev/hda1 /dev/hdb1 #Создание виртуальной группы на основе двух физических томов $ vgremove vg00 #Удаление виртуальной группы $ vgextend vg00 /dev/hdc1 #Добавление физического тома к виртуальной группе $ vgreduce vg00 /dev/hda1 #Удаление физического тома из виртуальной группы $ vgexport vg00 #Подготовка виртуальной группы для переноса на иную машину $ vgimport vg00 /dev/hda1 /dev/hda2 #Импорт виртуальной группы (с другой машины) $ lvcreate -L1500 -nlv00 vg00 #Создание логического тома (LV) с именем nlv00 и размером 1500 Мб $ lvremove /dev/vg00/home #Удаление логического тома $ lvextend -L120M /dev/vg00/home #Увеличение размера логического тома до указаной величины $ lvextend -L+100M /dev/vg00/home #Увеличение размера логического тома на указанную величину $ lvreduce -L120M /dev/vg00/home #Уменьшение размера логического тома до указаной величины $ lvreduce -L-100M /dev/vg00/home #Уменьшение размера логического тома на указанную величину $ e2fsadm -L+100M /dev/vg00/home #Изменение размер логического тома с файловой системой ext2/ext3 %% ====3.14 Свободная запись на перезаписываемые оптические носители (пакетный режим)==== %%(php)# Включение пакетного режима. Для оптических носителей всех типов. $ cdrwtool -d /dev/cdrom -q # Подготовка CD-RW носителя $ dvd+rw-format /dev/dvd # Подготовка носителей: DVD-RW, DVD+RW, DVD-RAM $ pktsetup /dev/pkt_dev /dev/cdrom # Включение режима пакетной записи на устройство /dev/pkt_dev $ mkudffs /dev/pkt_dev # Создание файловой системы UDF. Только для DVD+RW и DVD-RAM $ mount /dev/pkt_dev /mnt/pkt_cd -t udf -o rw,noatim # Монтирование пакетного устройства на /mnt/pkt_cd #Прямая запись (без пакетного режима) на носители DVD+RW и DVD-RAM $ dvd+rw-format /dev/dvd # Подготовка носителей (один раз). $ mkudffs /dev/dvd # Создание файловой системы UDF (один раз). $ mount /dev/dvd /mnt/cdrom # Обычное монтирование устройства. Т.е совершенно прозрачно и стандартно!%% ====3.15 Запуск терминальной задачи на сервере и продолжение её работы в фоне==== %%(php)$ screen # Запуск терминального экранного менеджера $ wget ftp://workserv.org/mydownloadfile.iso # Запуск задачи Ctrl+A D # Отключение экрана от терминала (выполнение в фоне) $ screen -r # Подключение к фоновому терминалу. %% ====3.16 Администрирование виртуальных серверов (VPS) на основе технологии ~OpenVZ==== %%(php) #Создание VPS из шаблона $ vzctl create 101 --ostemplate altlinux-4.0 --config vps.basic #Удаление VPS $ vzctl destroy 101 #Получить перечень всех VPS $ vzlist -a #Установка имени VPS $ vzctl set 101 --name vps101 --save #Установка общих параметров VPS: onboot, hostname, nameserver, searchdomain, userpassword $ vzctl set 101 --onboot yes --save $ vzctl set 101 --hostname test101.my.org --save $ vzctl set 101 --nameserver 192.168.1.165 --save $ vzctl set 101 --searchdomain my.org --save $ vzctl set 101 --userpasswd root:test #Конфигурация venet $ vzctl set 101 --ipadd 10.10.186.1 --save #Конфигурация veth $ vzctl set 101 --netif_add eth0 --save #Запуск и останов VPS $ vzctl start 101 $ vzctl stop 101 #Исполнение команды внутри VPS ("ls /root") $ vzctl exec 101 ls /root #Административный вход на VPS сервер $ vzctl enter 101 #Установка возможностей VPS $ vzctl set 101 --capability sys_time:on --save # Возможность менять системное время #Просмотр лимитов VPS и их нарушений $ vzctl exec 101 cat /proc/user_beancounters #Установка лимитов VPS (kmemsize, lockedpages, privvmpages ...) $ vzctl set 1 --dgramrcvbuf 1512000:1520000 --save #Установка доступа к устройствам (/dev) $ vzctl set 101 --devnodes ttyS0:rw --save $ vzctl set 101 --devices b:8:16:rw --devices b:8:17:rw --devices b:8:18:rw --save %% ====3.17 Система контроля версий CVS==== %%(php) # Указание на каталог, где находится репозиторий CVS. $ export CVSROOT=/home/Roman/progects/CVS_R # Указание на удалённый репозиторий. $ export CVSROOT=:pserver:user@serv.comp.org:/CVS_R # Создание пустого репозитория. $ cvs -d /usr/local/cvsroot init # Создание пустого репозитория на удалённом сервере. $ cvs -d:pserver:user@serv.comp.org:/usr/local/cvsroot init # Импортирует проект MyProg от имени создателя MyName в CVS. $ cvs import MyProg MyName start # Экспорт проекта tc для работы над ним. В результате чего будет создан каталог `tc', в который будут помещены все файлы. $ cvs -z 3 co tc # Загрузить дерева проекта с ревизией(тегом) <revise>. $ cvs co -r revise Prog # Синхронизация исходных текстов со всеми изменениями (выполнять перед фиксацией своих изменений). $ cvs up # Привести содержимое дерева в соответствии с ревизией <revise>. $ cvs up -r revise # Зафиксировать изменения в backend.c и запускает редактор (ENV: CVSEDITOR), чтобы ввести журнальную запись об изменениях. $ cvs ci backend.c -r revise # Зафиксировать изменения в дереве под ревизией <revise> для всего дерева. $ cvs ci -r revise # Привести вершину дерева к <revise>. $ cvs tag revise # Выполняет удаления вашей копии проекта и при этом проверяет, что все ваши изменения были зафиксированы. $ cvs release -d tc # Вывести лог изменений в файле file.cc. $ cvs log file.cc # Вывести описание изменений внесенных в файл `driver.c'. $ cvs diff driver.c # Внесение файла readmi.cc под контроль CVS. $ cvs add readmi.cc # Сообщение CVS о том что файл readmi.cc должен быть удалён из репозитория при следуйщей команде <ci>. $ cvs rm readmi.cc %% ====3.18 Система контроля версий - Subversion (SVN)==== %%(php) # Получить содержимое в ветви репозитория $ svn list svn://rep.org/trunk # Загрузка локальной копии репозитория $ svn checkout svn://rep.org/trunk/project # Получение состояния модификации локальной копии репозитория $ svn status # Получение изменений в виде патча $ svn diff # Добавить файл или директорию в репозиторий $ svn add ./new.file # Удалить файл или директорию из репозитория $ svn delete ./rem.file # Принять локальные изменения и отправить их на сервер $ svn commit -m "Changes message" # Копирование участка репозитория, включая и локальные, а также для создания новой ветви или тега. $ svn copy svn://rep.org/trunk/project svn://rep.org/branch/project_user # Объединение изменений ветви, указанной ревизии, с локальной копией другой ветви $ svn merge -c 1222 svn://rep.org/trunk/project # Посмотреть историю репозитория $ svn log %% ====3.19 Система контроля версий - GIT==== %%(php) # Инициализация текущей директории как новый пустой репозиторий. $ git init # Добавить удалённый репозиторий для загрузки локальной копии $ git remote add origin user1@gitserver:/home/repo/alpha.git # Загрузка локальной копии репозитория $ git clone git://git.server.org/rep.git # Добавить изменения, новые файлы и удаление старых. $ git add . # Получение состояния репозитория $ git status # Посмотреть внесённые изменения $ git diff --cached # Принять локальные изменения, превращение временного состояния индекса в постоянное $ git commit -am "Changes message" # Сформировать GIT-патч принятых локальных изменений $ git format-patch -1 # Выгрузить локальные изменения $ git push # Добавление тега $ git tag -sm "Tag 0.1.0 message" tag-name-0.1.0 # Выгрузить локальные теги $ git push origin --tags # Получение списка всех веток $ git branch # Создание новой ветки $ git branch experimental # Удаление ветви $ git branch -d experimental # Переключиться на другую ветку $ git checkout experimental # Объединить изменения в ветви experimental с текущей веткой локального репозитория $ git merge experimental # Получить изменения из другого репозитория и объединить их с текущим $ git pull git://git.server.org/rep.git # или $ git fetch git://git.server.org/rep.git $ git merge git://git.server.org/rep.git # Посмотреть историю репозитория $ git log %% Расширенные команды работы в инфраструктуре ALTLinux Git/Gear %%(php) # Создать удалённый репозиторий в инфраструктуре $ ssh git.alt init-db alpha # Поиск пакета в инфраструктуре $ ssh git.alt find-package <pattern> # Клонировать репозиторий в инфраструктуре $ ssh git.alt clone <path to git repository> [<destination directory>] # Перемещение репозитория в инфраструктуре $ ssh git.alt mv-db <path to source directory> <path to destination directory> # Удаление репозитория $ ssh git.alt rm-db <path to git repository> %% ====3.20 Подготовка и компиляция проектов на основе autoconf/automake==== %%(php) $ gettextize -f -c #Генерация локализационных файлов $ autoheader #Генерация файла $ autoscan #Автоматическая генерация cofigure.scan и проверка configure.in $ ifnames #Создание списка идентификаторов которые используются в препроцессоре # Генерация/перегенерация сборочной системы $ aclocal -I -m4 #Генерация макроса aclocal.m4 $ autoconf #Генерация скрипта configure. Для реконфигурации использовать autoreconf $ automake -a -c #Генерация файла Makefile.in $ configure #Генерация Makefile $ make #Компиляция проекта $ make install #Установка программы %% ====3.21 Подготовка к проверке выделения памяти с помощью Electric Fence==== * подключить динамическую библиотеку -lefence ====3.22 Подготовка к проверке выделения памяти с помощью mtrace==== * Добавить в программу: #include <mcheck.h> и mtrace() * Добавить переменную окружения: $ export MALLOC_TRACE=mem.log * Запустить программу, в результате чего буден создан файл mem.log * Обработать полученный файл: $ mtrace my_prog $MALLOC_TRACE ====3.23 Добавление в программу поддержки i18n==== * Добавить к проекту: #include <libintl.h>; #define _(String) gettext(String); setlocale (LC_CTYPE, ""); setlocale (LC_MESSAGES, ""); bindtextdomain (DOMAIN,"/usr/share/locale"); textdomain ("DOMAIN"); * Все строки подлежащие переводу определить как _("my str"); * Создать исходя из проекта POT файл командой: xgettext -o po/prog.pot -d prog -C -a *.cc *.h * Скопировать po/prog.pot файл в файл с именем типа uk.po. Отредактировать шапочку и переводы сообщений; * Для обновления PO файла после модификации исходников, выполнить: msgmerge -U old.po new.pot * Сформировать бинарный файл: msgfmt -vo prog.mo uk.po #обратно msgunfmt * Скопировать полученый prog.mo в каталог соответствующего языка: cp ./prog.mo /usr/share/locale/uk/LC_MESSAGES
Please type the word you read in the image: