Организация Linux Foundation опубликовала рекомендации по участию в работе сообщества ядра Linux. Книга, написанная Джонотаном Корбетом, доступна on-line на сайте Linux Developers Network. Linux Foundation надеется, что описав в деталях принципы взаимодействия в открытом сообществе, книга поможет привлечь большее количество разработчиков к участию в процессе улучшения ядра Linux. На тридцати страницах автор рассматривает, как работает циклический процесс разработки ядра, как спланировать свое участие в нем, какие требования предъявляет сообщество к патчам и как сделать, что бы кто-то из более опытных разработчиков прокомментировал вашу работу и внес ее в основную ветку ядра. Джонотан Корбет сам является разработчиком ядра Linux, а так же выпускающим редактором интернет ресурса Linux Weekly News. Он говорит: «В то время, как работа над ядром Linux представляет собой достаточно открытый процесс, его детали подчас могут удивлять или даже пугать новых разработчиков. Этот учебник должен помочь программистам
В статье "Encrypt devices using dm-crypt and LUKS" рассказывается о создании шифрованного раздела на мобильном устройстве, например USB Flash. Раздел создается при помощи модуля 2.6 ядра dm-crypt. Для того чтобы можно было менять пароль без перестройки всех зашифрованных данных и использовать несколько паролей для доступа к разделу, используется LUKS (Linux Unified Key Setup), обеспечивающий хранение параметров шифрования в заголовке зашифрованного раздела. При необходимости использовать зашифрованный Flash диск не только под Linux, но и под Windows, продукт FreeOTFE позволяет монтировать под Windows разделы созданные через cryptoloop , dm-crypt и LUKS; Вместо dm-crypt и LUKS можно использовать открытый (немного модифицированная GPL лицензия) продукт TrueCrypt.
В статье "Protecting Files at Home Using Encrypted Containers" показано как создать шифрованный раздел внутри одного файла и автоматизировать выполнение операций монтирования в KDE. Пример: # Подгружаем модули: modprobe dm-mod modprobe dm-crypt modprobe aes # Создаем образ dd if=/dev/zero of=/encrypted/data.crypt bs=1m count=2048 # Подключаем его как loop устройство losetup /dev/loop0 /encrypted/data.crypt # Генерируем ключ cat /dev/random > /home/pritchey/foo (hit control-c after a second goes by to stop it!) cat /home/pritchey/foo | cut -b 0-31 > /home/pritchey/crypto.key rm /home/pritchey/foo cryptsetup -c aes -d /home/pritchey/crypto.key create data.crypt /dev/loop0 # Создаем ФС mke2fs -j /dev/mapper/data.crypt # Монтируем раздел. mkdir /mnt/encrypted mount /dev/mapper/data.crypt /mnt/encrypted # Размонтируем раздел. umount /mnt/encrypted # Отключаем устройство cryptsetup remove data.crypt losetup -d /dev/loop0 # Подключаем. losetup /dev/loop0 /encrypted/data.crypt cryptsetup -d
В статье "Virtual Filesystem: Building A Linux Filesystem From An Ordinary File" рассказывается про использование файловых систем (ext2, ext3, reiser) созданных внутри файла (в том числе используя шифрование и ACL). Ниже, отражена суть статьи: Без шифрования: dd if=/dev/zero of=disk-image count=40960 /sbin/mkfs -t ext3 -q disk-image mount -o loop=/dev/loop0 disk-image fs .....работа с разделом losetup -d /dev/loop0 С шифрованием: modprobe loop modprobe cryptoloop modprobe aes dd if=/dev/urandom of=disk-aes count=102400 losetup -e aes /dev/loop1 ./disk-aes mkfs -t reiserfs /dev/loop1 mount -o loop,encryption=aes,acl ./disk-aes /fs ....работа с разделом losetup -d /dev/loop0
Патч и набор утилит позволяющие сохранять отдельные файлы в файловых системах ext2 и ext3 в сжатом виде (LZO/LZV1/LZRW3A/gzip/bzip2 методы). Упаковка и распаковки производится в прозрачном режиме, достаточно пометить файл как сжатый (через chattr) и он будет сохранен в сжатом виде ( для внешних приложений он будет виден как обычный файл). Squashfs, cloop, JFFS2 (The Journalling Flash File System), cramfs - read-only реализации файловых систем со сжатием данных. zisofs - расширение ISO9660 позволяющие сжимать отдельные файлы; ovlfs (Overlay Filesystem) и translucency - позволяют организовать виртуальную запись поверх read-only файловой системы (как бы наложить одну FS на другую), например, полезно в LiveCD дистрибутивах, чтобы не копировать /etc в рамдиск, но иметь возможность вносить одноразовые правки.
В четвертой части цикла статей "Secure Programming Techniques" рассматривается вопрос проверки и генерации паролей в программе на Perl. Описано как проверять пароли и генерировать хэш при помощи функций crypt(), md5_base64() из модуля Digest::MD5, как создать случайную последовательность для формирования пароля. В статье лишь вскользь рассмотрен такой метод генерации случайной последовательности как использование генератора случайных чисел ядра системы, через устройства /dev/urandom (без блокировки, но менее случайная последовательность) или /dev/random: sub true_rand{ my ($num_char) = @_; my ($rand_line, $dev_line); $rand_line=""; open(UR,"/dev/urandom"); do { read (UR, $dev_line, 4096); $dev_line =~ s/[^\d\w]//gi; $rand_line .= $dev_line; } until (length($rand_line) >= $num_char); close(UR); return substr($rand_line,0, $num_char); }
Денис Овсиенко в статье "Идеальный сисадмин: RPM" поднимает достаточно больную тему использования пакетного подхода для решения проблем с отслеживанием иерархических и циклических зависимостей. Если бы все было так просто, если бы RPM действительно был панацеей, если бы в дистрибутивах не возникали зацикленные связи. Но не все так просто, поэтому и возникает потребность использования таких более высокоуровневых систем (надстроек над тем же RPM) как APT или применения несколько иных подходов - ports/portage. RPM прекрасное средство, но стоит ли ставить ПО выполняющее роль первичных подсистем из пакетов входящих в дистрибутив вопрос спорный, создавать свои пакеты - не одним rpm-based Linux живы открытые системы.
Синёв Дмитрий написал статью в которой рассматривается система терминалов на базе ОС Linux. Ниже, небольшой отрывок из статьи, с описанием процесса создания X-терминала: Похлопать демонов в /etc/rc5.d/, оставил только network (для сетки, отключив lo), xinetd (для telnet) и local (сам не знаю почему не прибил). Т.к я отказался от сервера шрифтов, их необходимо указать другим, устаревшим, способом в файле /etc/X11/XF86Config-4 : Section "Files" FontPath "/usr/X11R6/lib/X11/fonts/misc" EndSection Этих шрифтов будет вполне достаточно для терминального клиента. Немного изменить /etc/inittab - установить id:5:initdefault: для автоматического запуска графики; уменьшить число виртуальных консолей с 6-ти до 2-ух; указать свой скрипт для запуска X-ов x:5:once:/etc/X11/ICA -nodaemon Скрипт /etc/X11/ICA выглядит следующим образом: #!/bin/sh PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin /usr/X11R6/bin/xinit #В данном случае X-ы будут запускаться от root /sbin/poweroff #Чтобы машина вырубалась после выхода
В статье "Benchmarking Intel C++ to GNU g++" производится сравнение производительности компиляторов и генерируемого ими кода. В сравнении участвуют: gcc 3.0.4, gcc 3.1, gcc 3.2.1, icc 6.0, icc 7.0. Intel C++ (ICC) - полностью совместимый с GCC компилятор от Intel, код сгенерированный icc примерно на 30% быстрее чем код от gcc. В сравнении использовались следующие опции для оптимизации; Для GCC: gcc -O3 -funroll-all-loops -fomit-frame-pointer -ffast-math -march=pentium3 -mfpmath=sse Intel C++ 6.0: icc -O3 -axK -ipo Intel C++ 7.0: icc -O3 -i_dynamic -xK -ipo -march=pentiumiii -mcpu=pentiumpro
Marko Zec выпустил "Network Stack Virtualization" патч для FreeBSD-4.7. Патч позволяет создать на одной машине несколько полностью виртуальных, изолированных, клонов tcp/ip стека, что идеально подходит для решений виртуального хостинга в комплекте с chroot jail. Введены в систему два новых вида интерфейса "ve" - виртуальный ethernet и "vipa" - виртуальный loopback, что позволяет создавать для каждого виртуального сетевого стека независимый и разделенный набор сетевых интерфейсов, таблиц маршрутизации, net.inet sysctl переменных ядра, ipfw правил фаервола и правил ограничений трафика для dummynet. Самым интересным свойством патча, на мой взгляд, является возможность планировки и учета процессорного времени (system load and CPU usage accounting and scheduling).