Архив рубрики: Linux

java sun wtk на linux 64 бита

Грустно, но на данный момент нет 64-битной wtk под линукс, даже классической 2.5.2. Если поставить 32-битную, она ругается и не работает. Пишет что-то типа:
Error libraries: libXt.so.6: wrong ELF class: ELFCLASS

Рассказываю как я всё запустил.

В дополнение к 64-битным JDK ставим 32-битную. Я качаю bin-пакет с java.sun.com и ставлю в /opt/jdkXXX с символической ссылкой на текущую версию этого хозяйства как /opt/jdk
Итак, ставим таким же образом 32-битную. И пусть 32-битная JDK будет в /opt/jdk-32.
Качаем WTK, на этот момент это sun_java_wireless_toolkit-2.5.2_01-linuxi486.bin.sh, ставим как обычно. Тоже пусть в /opt
При установке выбираем путь к нашей JDK: /opt/jdk-32/bin
Путь пусть будет /opt/WTK2.5.2
Ну, практически всё…

Надо лишь убедиться, что в запускалках в WTK стоят валидные пути, типа:
/opt/WTK2.5.2/bin/emulator:
javapathtowtk=/opt/jdk-32/bin/
Ну, и так далее.

И ещё надо иметь соответствующие 32-битные аналоги некоторых X-либ. Каких — вы узнаете при запуске тулбара или эмулятора (в том числе из других IDE). Ну, по памяти это что-то типа
...error while loading shared libraries: libXt.so.6: cannot open shared ...
Их также надо поставить из репозитория (или как там у вас в вашем дистрибутиве), они должны быть нормально доступны и вставть параллельно, не мешая нормальным родным 64-битным бинарникам.

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

DirectX в VirtualBox (linux)

Заметка о том, как позаиметь почти полноценный DirectX под виртуальной машиной. В моём случае это VirtualBox под linux, в машине — WindowsXP.

VirtualBox — клёвая виртуалка, удобная. Автоподгонка разрешения гостевой системы под размер окна в реальном времени, интеграция мыши без захвата, буфер обмена туда-сюда, возможность захватить usb-устройства (я, например, коннекчу винмобайл-девайс через ActiveSync, правда, при попытке прошить запорол устройство, но это другая история). Читать

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