Архив метки: Linux

linux: небольшой скрипт дампа

Если не надо версионность и нет резона использовать svn, то для некоторых случаев делаю периодическую архивацию на скорую руку с помощью маленького скриптика.

#!/bin/sh

DATE=`/bin/date "+%0Y%0m%0d-%0k%0M%0S"`
FILE=$1
NAME=`basename $FILE`

tar -chzf $DATE-$NAME.tar.gz $FILE

Создаёт в каталоге в котором он вызван для указанного в параметре каталога архивный файл типа 20100423-170834-doc.tar.gz. Сам отрежет из переданного пути имя файла и назовёт архив нормально. Уже забыл почему именно, но назвал я этот скрипт dumparch. Ну, ясно, что дальше можно положить его в ~/bin или в системный bin. Варианты использования:

dumparch doc
dumparch ./doc
dumparch ~/project/doc

Автор: Дмитрий

Linux Debian,Ubuntu — чуть-чуть о правах доступа к файлам

r =4 (чтение)
w =2 (запись)
x =1 (исполнение)
— =0 (никаких прав)
Для вычисления требуется сложить числа
Пример:
-rw-rw-rw-
rw =4+2+0=6

Таким образом получаем.
755:
Владелец файла — полные права, т.е. исполнение, запись, просмотр.
Участники группы — просмотр и исполнение.
Остальные пользователи — просмотр и исполнение.

777:
Все пользователи могу править, исполнять и просматривать.

666:
Все могут редактировать и просматривать, но никто не может запускать.

644:
Все могут просматривать, но только владелец может записывать.

Установка SUID-бита:

chmod 1xxx filename

xxx — это те 3 цифры, про которые мы говорили выше. 1-ка означает как раз таки этот самый suid бит, то есть файл будет исполняться с правами его владельца.

Позже постараюсь описать все это более развернуто, сейчас просто так, чтоб не забыть.
П.с.Кроме указанных Дебиана и Убунту это все также актуально для остальных Линуксов и BSD*.

Автор: AlexWinner
Дата публикации: 2010-03-28T13:57:00.000-07:00

Ядро Linux за 10 минут (обзор)

 

Это конспект доклада для семинара, проведённого нашей LUG совместно с университетом.

 

У меня, натурально, было 10 минут, поэтому изложение — галопом по европам, многое упрощено, многое упущено.

 

Немного истории

Относительно подробную историю создания ядра Linux можно найти в известной книге Линуса Торвальдса «Just for fun». Нас из неё интересуют следующие факты:

  • Ядро создал в 1991 году студент университета Хельсинки Линус Торвальдс;
  • В качестве платформы он использовал ОС Minix, написанную его преподавателем Эндрю Таненбаумом, запущенную на персональном компьютере с процессором Intel 80386;
  • В качестве примера для подражания он использовал ОС семейства Unix, а в качестве путеводителя — сначала стандарт POSIX, а затем просто исходные коды программ из комплекта GNU (bash, gcc и пр).

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

В частности, известно, что Unix-системы в своё время разделились на два лагеря: потомки UNIX System V Release 4 (семейство SVR4) против потомков Berkley Software Distribution v4.2 (BSD4.2). Linux по большей части принадлежит к первому семейству, но заимствует некоторые существенные идеи из второго.

Ядро в цифрах

  • Около 30 тыс. файлов
  • Около 8 млн. строк кода (не считая комментариев)
  • Репозиторий занимает около 1 Гб
  • linux-2.6.33.tar.bz2: 63 Mb
  • patch-2.6.33.bz2: 10Mb, около 1.7 млн изменённых строк
  • Около 6000 человек, чей код есть в ядре

Об архитектуре ядра

Все (или почти все) процессоры, которыми когда-либо интересовались производители Unix-подобных ОС, имеют аппаратную поддержку разделения привелегий. Один код может всё (в т.ч. общаться напрямую с оборудованием), другой — почти ничего. Традиционно говорят о «режиме ядра» (kernel land) и «режиме пользователя» (user land). Различные архитектуры ядер ОС различаются прежде всего подходом к ответу на вопрос: какие части кода ОС должны выполняться в kernel land, а какие — в user land? Дело в том, что у подавляющего большинства процессоров переключение между двумя режимами занимает существенное время. Выделяют следующие подходы:

  • Традиционный: монолитное ядро. Весь код ядра компилируется в один большой бинарный файл. Всё ядро исполняется в режиме ядра;
  • Противоположный, новаторский: микроядро. В режиме ядра выполняются только самые необходимые части, всё остальное — в режиме пользователя;
  • В традиционном подходе позже появился вариант: модульное ядро. Всё исполняется в режиме ядра, но при этом ядро компилируется в виде одного большого бинарного файла и кучки мелких модулей, которые могут загружаться и выгружаться по необходимости;
  • И, конечно, всевозможные варианты гибридных архитектур.

Ядро Linux начиналось как монолитное (глядя на существовавшие тогда Unix-ы). Современное Linux-ядро модульное. По сравнению с микроядром монолитное (или модульное) ядро обеспечивает существенно бо́льшую производительность, но предъявляет существенно более жёсткие требования к качеству кода различных компонентов. Так, в системе с микроядром «рухнувший» драйвер ФС будет перезапущен без ущерба для работы системы; рухнувший драйвер ФС в монолитном ядре — это Kernel panic и останов системы.

Подсистемы ядра Linux

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

: linux-kernel-big.png

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

: linux-kernel-simple.png

Системные вызовы

Уровень системных вызовов — это наиболее близкая к прикладному программисту часть ядра Linux. Системные вызовы предоставляют интерфейс, используемый прикладными программами — это API ядра. Большинство системных вызовов Linux взяты из стандарта POSIX, однако есть и специфичные для Linux системные вызовы.

Здесь стоит отметить некоторую разницу в подходе к проектированию API ядра в Unix-системах с одной стороны и в Windows[NT] и других идеологических потомках VMS с другой. Дизайнеры Unix предпочитают предоставит

Видеонаблюдение под Linux

Создаем систему видеонаблюдения с датчиком движения на основе Debian Linux и web-камеры.
На современном рынке присутствует множество различных компаний, которые предлагают всяческие системы видеонаблюдения, слежения и пр. Однако все они стоят значительных денег. В рассматриваемом же случае нам нужно всего лишь получить возможность посмотреть на то, что происходит в подъезде, когда нас там нет, или подглядеть за кем-то в другой комнате. Читать

LiveMath III

Это продолжение к стародавнему посту: http://iportnov.blogspot.com/2007/09/livemath-livecd.html.

К сожалению, редко оказывается достаточно времени, чтобы собрать свежую версию LiveMath. Однако же вот, собрал. В этот раз LiveMath основан на Ubuntu 9.10 (Karmic) с добавлениями из Ubuntu Lucid и «Ubuntu Scientific Remix». LiveMath III содержит (среди прочего):

Системы компьютерной алгебры:
Maxima (http://maxima.sourceforge.net) — полнофункциональная система аналитических вычислений;
Fricas (http://fricas.sourceforge.net) — мощная система компьютерной алгебры;
YaCas (http://yacas.sourceforge.net) — еще одна система компьютерной алгебры;
PARI/GP (http://pari.math.u-bordeaux.fr/) — широко используемая компьютерно-алгебраическая система, разработанная для быстрых вычислений в теории чисел (факторизации, алгебраическая теория чисел, эллиптические кривые…);
GAP (http://www.gap-system.org/) — свободно распространяемый, открытый и расширяемый программный комплекс для применения в области вычислительной дискретной математики, в частности, теории групп;
Mathomatic (http://www.mathomatic.org/) — переносимая, универсальная программа, которая может решать, упрощать, группировать, дифференцировать, интегрировать и сравнивать алгебраические выражения;

Системы автоматизации доказательств:

ACL2 (http://www.cs.utexas.edu/users/moore/acl2/) — язык программирования для моделирования компьютерных систем и средство, помогающее доказывать свойства этих моделей;
Coq (http://coq.inria.fr/) — система автоматизированного построения доказательств, с помощью которой, кроме всего прочего, была решена проблема четырех красок;
Также Prover9/Mace4 и некоторые другие;

Системы численных вычислений:

SciLab (http://www.scilab.org/) — пакет научных программ для численных вычислений, предоставляющий мощное открытое окружение для инженерных и научных расчетов;
GNU Octave (http://www.octave.org/) — язык высокого уровня, предназначенный для выполнения математических вычислений;
FreeMat (http://freemat.sourceforge.net/) — свободная среда для быстрой разработки, научного прототипирования и обработки данных, имеет интерфейс и синтаксис языка, подобные MatLab;
Yorick (http://yorick.sourceforge.net/) — компактная программная среда, предназначенная для комплексного решения научно-инженерных вычислительных задач;

Образовательные программы:
Kig (http://edu.kde.org/kig/), Carmetal, DrGeo, GeoGebra — интерактивная геометрия;
KAlgebra;
Инструменты построения графиков — kmplot, gnuplot;

Обработка и визуализация данных:
Mayavi2 (http://code.enthought.com/projects/mayavi/#Mayavi2) — открытый пакет научной 2D и 3D визуализации данных;
OpenDX (http://www.opendx.org/) — программное средство для анализа данных в графическом виде, визуализации научных данных;
GGobi (http://www.ggobi.org/) — среда визуализации многомерных данных;
LabPlot (http://labplot.sourceforge.net/) — программа для анализа и визуализации различных данных;
QtiPlot — позиционируется как замена для Microcal Origin — программа для несложной статистической обработки данных, построения всяческих графиков;
Grace6 (http://plasma-gate.weizmann.ac.il/Grace/) — программа для подготовки двумерных графиков по численным данным;
PAW (http://cern.ch/paw/) — интерактивная программа анализа и графического представления результатов. Может применяться для анализа большого и очень большого объёма данных;
ROOT (http://cern.ch/root/) — наследник PAW, интерактивная система обработки и визуализации очень больших объёмов научных данных;
GNU R (http://r-project.org/) — мощный язык статистических вычислений, используемый профессиональными статистиками;
GRETL (http://gretl.sourceforge.net/) — система эконометрического анализа;

Научные редакторы:
TeXLive — полноценный дистрибутив TeX;
TeXmacs (http://texmacs.org) — текстовый редактор для набора математических и прочих научных текстов, также позволяет включать в документ сессии Axiom, Maxima, Octave, SciLab и других систем компьютерной математики;
Kile (http://kile.sourceforge.net/) — интегрированная среда подготовки документов с помощью TeX;
Texmaker (http://www.xm1math.net/texmaker/) — интегрированная оболочка для LaTeX;

Также LiveMath III содержит среду Gnome 2.28, OpenOffice.org 3.1, Gnumeric. Для «больших» систем (ROOT, PAW, R, Octave) включена значительная часть имеющихся в репозиториях Ubuntu пакетов. Для многих изначально «консольных» систем включены GUI-обёртки, для некоторых по несколько, на выбор. К большинству программ есть документация. Возможна установка системы на жёсткий диск с помощью стандартного установщика Ubuntu.

UPD. Полный список установленных пакетов: http://iportnov.ru/files/LiveMath.packages.txt

К сожалению, у меня нет времени, чтобы тестировать все эти программы. То, что я протестировал — работает. Багрепорты принимаются в коммен
тариях или на e-mail portnov at bk dot ru, но мгновенного исправления не обещаю.

LiveMath сделан с помощью Ubuntu Construction Kit (http://uck.sourceforge.net/), так что каждый, в принципе, может сделать себе нечто подобное. Вероятно, это окажется проще, чем качать моё изделие.

Взять можно здесь: http://portnov.homelinux.net/LiveMath%20III.iso (размер образа — 2Gb), может быть удобнее окажется торрент: http://iportnov.ru/files/LiveMath%20III.iso.torrent (честно говоря, не знаю, заработает ли). У меня сейчас нет хостинга, на котором я бы мог размещать большие ISO-образы. Так что учтите, что portnov.homelinux.net — это мой домашний сервер, обычно бывает включён примерно с 8:00 до 22:00 MSK, суперскоростей не обещаю. Если кому-то позарез нужно скачать в другое время — пишите, так уж и быть, оставлю включённым на ночь 🙂

Автор: Portnov

Linux: Добавляем jar-файлы в CLASSPATH, или подключаем сторонние библиотеки

В этом блоге я уже писал о том, как вообще прописывать переменную CLASSPATH в Linux Debian.
Сейчас же в ходе разработки столкнулся с необходимостью подключить в свой проект библиотеку, созданную сторонним разработчиком. Библиотека представлена файликом вида name.jar.
Для начала я попытался положить этот файл в директорию, заданную в уже прописанном classpath. Однако, это не помогло, компилятор не находил классов из этой библиотеки.
Задача: Добавить библиотеку в виде name.jar в CLASSPATH.
Решение: Сделать это просто.
1) Создаем директорию, в которой будет храниться эта библиотека:

mkdir /home/username/libraries/

2) Кладем файл в эту директорию:

mv name.jar /home/username/libraries/

3) Добавляем в CLASSPATH следующее (Как добавлять, описано здесь)

/home/username/libraries/*

Готово:)

Автор: AlexWinner
Дата публикации: 2010-03-19T16:02:00.000-07:00