Friday, January 4, 2013

Заметка об удаленной сборке ядра FreeBSD

Предыстория

FreeBSD у меня установлена на pentium 2 с частотой 350 MHz, где компиляция ядра занимает около 2-х суток. Поэтому я решил сэкономить время (попутно и электричество) и собрать новое ядро из под виртуальной машины. Машина для сборки ПК с процессором Intel Core i3 3.1 GHz, 2 ядра + HyperThreading. Система FreeBSD 8.3 на виртуальной машине VirtualBox.
К радости, надо сказать, сборка нового ядра заняла около 15 минут времени.
Замечания:
  • Все операции следует выполнять под рутом;
  • Описание компиляции и настройки ядра приводится мною не будут.
Подготовка основной системы
Если устанавливаемые в конфигах опции  нового ядра будут отличаться от конфигов старого, то необходимо отключить все настройки системы использующие отключаемые опции.
Достаточно комментировать все опции в настройках использующие возможности старого самосборного ядра. Такие настройки могут быть в /etc/rc.conf.
Самое первое что нужно, до начала каких-либо манипуляций с ядром системы, скопировать заведомо рабочую версию ядра ( в идеале GENERIC ) в отдельную папку, например:
#: cp -Rp /boot/kernel /boot/kernel.good

Трансплантация скомпилированных ядер
После того, как на виртуальной машине было скомпилировано новое ядро, установлено и по возможности протестировано, необходимо перенести ядро на основную систему. Для этого можно воспользоваться архиватором tar.
Делаем архив рабочего ядра системы на виртуальной машине:
#: tar -cf krn2m.tar /boot/kernel/*
Переносим архив krn2m.tar на основную систему и распаковываем
#: tar -xf krn2m.tar -C /tmp/
Таким образом в директорию /tmp/boot/kernel/ будут перемещены все необходимые файлы ядра. Эту директорию переименуем в kernel.krn2m и перенесем в папку /boot:
#: mv /tmp/boot/kernel/ /boot/kernel.krn2m
Далее воспользуемся командой nextboot, которая одноразово задает ядро для следующей загрузки. Обратите внимание на путь к ядру, он читается относительно директории /boot :
#: nextboot -k kernel.krn2m
Если nextboot ни на что не ругнулась, все ок, при этом был создан файл /boot/nextboot.conf. Можно перезагружаться.
После загрузки смотрим на каком мы ядре:
#: uname -a
Если все работает, то фиксируем изменения — устанавливаем новое ядро по дефолту. А старое переименовываем в kernel.old2
#: mv /boot/kernel /boot/kernel.old2
#: mv /boot/kernel.krn2m /boot/kernel

Дело сделано.

Tuesday, December 18, 2012

Пример работы с 7-zip в консоли

Иногда требуется создать zip архив из командной строки (батника, скрипта). Поэтому написал напоминалку по ключам, которые могут понадобиться, что бы создать архив при помощи 7-zip.

set arch="C:\Program Files\7-Zip\7z.exe"
%arch% a -tzip -ssw -mx5 -r0 -xr!?git -x!*.xcf arch_name arch_folder

Дальше будет описание ключей консольного архиватора 7zip.
-tzip формат архива установлен в zip, без этого ключа по умолчанию формат 7z;
-ssw принудительная упаковка файлов, которые в данный момент открыты для записи;
-mx7 высокая степень сжатия (7), можно поставить и 5 (нормальное сжатие);
-r0 исключения, которые будут прописаны дальше обрабатываются только в рабочем каталоге;
Команды для исключения файлов и директорий из архива:
  • например, чтобы создать архив из которого будет исключена папка с маской dir_mask указываем: -xr!dir_mask . Где r обеспечивает рекурсивный режим исключения всего содержимого директорий вида .git
  • обнаружил, что предыдущий пример архиватора 7-zip не справляется с папками вида `.git`, поэтому может пригодиться -xr!?git
  • исключение файлов по маске. Для примера удалить все файлы с расширением xcf -x!*.xcf 
  • так же можно добавить файл с указанием списка исключений (exclusions.txt) -x@exclusions.txt Каждая строка файла — новое исключение. Можно использовать маски типа *.ext и т.п. 
arch_name - это соответственно путь и имя нового архива;
arch_folder - это папка, которая подлежит упаковке.

Monday, October 29, 2012

Создание загрузочной флешки

Представляю компетентной общественности недавно мною обнаруженный способ создания мультизагрузочных флешек (да и вообще загрузочных).

Загрузочная флешка очень помогает, когда надо устанавливать новую операционную систему на ПК. Прожечь новый DVD/CD диск недорого, но если учесть, что после одной установки его можно выкидывать (Хранить его даже нет смысла, новая версия может появиться в ближайшие полгода ), задумываешься об использовании чего-нибудь безотходного...

По привычке я пользовался unetbootin. Но почему то, один раз записанный образ стартанул при запуске, второй и последующие на одном и том же компьютере загружаться отказались. После чего в Google нашел другую программу MultiBoot USB (Работает из под Windows).
MultiBoot USB - устанавливает на flash drive загрузчик grub4dos с необходимыми конфигами.
Рис. 1 интерфейс главного меню программы
MultiBoot USB включает набор программ делающих:
  • форматирование устройств (можно делать и стандартными возможностями ОС);
  • установка Grub4dos на usb-drive (самая важная функция MultiBoot USB);
  • Есть опция для включения в меню загрузки любых сторонних iso образов, а не только Windows;
  • Qemu - для проверки работоспособности.
Качаем и запускаем. (Для windows 7 необходимо запустить от имени администратора).
Я проиллюстрирую работу на примере создании загрузочной флешки с каким-нибудь Linux Дистрибутивом.
1) Форматируем флешку (Fat подойдет);
2) Переходим к пункту установка установка Grub4Dos. Т.е. выбираем 2-ой пункт "Grub4Dos Installer" (Рис 1).
Жмем галочку напротив Disk, выбираем свой USB носитель. Жмём кнопку "Install".
В случае успеха должны получить окно с подобным содержанием.
Окно с сообщением об успешной установки Grub4Dos
3) Выбираем 5-ый пункт: «Копирование файлов и утилит», появится окно с выбором диска куда будут установлены загрузочные файлы. Выбираем вашу флэшку.
Жмём "Извлечь".
4) Когда все файлы будут скопированы. Заходим на флэшку, и видим следующее:
В папке /boot/ будут много "балластных" образов, которые особо и не нужны.
5) Переходим к 4 му пункту в списке "WinSetup from USB"
Появится окно. Ставим галочку на против четвертой строки "Parted Magic/Ubuntu Desctop Varints /Other G4D ..."
Диалог добавления образа на флеш носитель
Выбираем необходимый iso. Если после создание необходимо проверить работу в виртуальной машине QEMU  ставим галочку напротив пункта "Test in QEMU"
Жмем кнопку "GO"

На флешке должен появится выбранный iso файл, а в корне флешке должен быть файл menu.lst - в нем будут настройки grub4dos для выбранного дистрибутива, как у меня:
title Start lubuntu-12.10-desktop-i386 LIVE from partition 0
map --unmap=0:0xff
map --unhook
root (hd0,0)
map /ubuntu/lubuntu-12.10-desktop-i386.iso (0xff) || map --mem /UBUNTU/lubuntu-12.10-desktop-i386.iso (0xff)
map --hook
root (0xff)
kernel /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=/UBUNTU/lubuntu-12.10-desktop-i386.iso quiet splash --
errorcheck off
initrd /casper/initrd.lz
initrd /casper/initrd.gz
errorcheck on
map --unmap=0:0xff

Вот как бы и все

Monday, January 9, 2012

Тест производительности 2х 16Gb MicroSDHC карт памяти

В праздники покупал две карты памяти MicroSDHC, так как не знал, что толком покупаю, купил карточки двух производителей. За одно прогнал их на скоростных бенчмарках (данные сведены в таблицу 1).

Таблица 1

Модель
Средняя скорость чтения, 
мБ/с
Минимальная и максимальная скорочть чтения, 
мБ/с
Средняя скорость записи, 
мБ/с
Минимальная и максимальная скорочть записи, 
мБ/с
Время доступа, мс
Silicon Power 16Gb MicroSDHC Class 6, SP016GBSTH006V30
19.5
13.4, 19.6
1,4
0.7, 14.7
1,1
Transcend 16Gb MicroSDHC Class 6, TS16GUSDHC6(V)
19.2
17.7, 19.9
3.6
2.0, 9.2
1.5

Silicon Power 16Gb MicroSDHC Class 6, SP016GBSTH006V30
Transcend 16Gb MicroSDHC Class 6, TS16GUSDHC6(V)

Friday, December 23, 2011

Ким 3-го поколения

Очень интересная эта чудо-страна КНДР.
Далее несколько фотографий Ким-ов. Про каждого из них можно сказать - от Пхеньяна до окраин он проходит как хозяин...
Ким Ир Сен (Голливудская улыбка) 
Ким Чин Ир
Ким Чин Ир в образе
Все же ему не чужд эпатаж ...
Ким Чон Ын


Sunday, December 18, 2011

Настраиваем видео режим в FreeBSD


Что можно делать в  расширенном видео режиме:
  1. Изменять разрешение экрана и следовательно консоль не ограничена 80x25;
  2. Просматривать изображения (с помощью драйвера svgalib);
  3. Вертикальный скролинг консоли — клавишами вверх и вниз;
  4. Создавать скриншоты и сохранять их в графические файлы; 
  5. Просматривать видео в консоли с помощью драйвера svgalib.
Для того чтобы в консоли были доступны настройки расширенного видео режима необходимо пересобрать ядро с соответствующими опциями.
Замечания:
  1. Исходники ядра должны быть установлены.
  2. Материалов по сборке ядра с поддержкой расширенного видео режима в интернете довольно много, поэтому я ограничусь скромным описанием этого процесса.
Пересборка ядра FreeBSD с опциями  расширенного видео режима
Копируем файл настроек:
#: cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/NEWKERNEL
Редактируем (папка i386 ест-но должна соответствовать вашей архитектуре):
#: vi /usr/src/sys/i386/conf/NEWKERNEL
Добавляем для включения расширенного видеорежима:
options VESA
options SC_PIXEL_MODE
Ну и собственно собираем
#: make buildkernel KERNCONF=NEWKERNEL && make installkernel KERNCONF=NEWKERNEL
Перезагрузка системы и проверяем (собственно смотрим, какие видеорежимы имеются):
#: vidcontrol -i mode 
Устанавливаем видео режим:
#: vidcontrol MODE_282
Если хотим, чтобы после перезагрузки настройка видеорежима сохранилась, добавляем в:
#: vi /etc/rc.conf
строку с полюбившимся видеорежимом
allscreens_flags="MODE_282"
Посты о сборке ядра:
http://msnp.ru/126
http://noted.org.ua/255

Устанавливаем svgalib, zgv
Для просмотра изображений понадобится библиотека для работы с графикой svglib
#: cd /usr/ports/graphics/svgalib
#: make configure
#: make 
#: make install
#: make clear
Устанавливаем просмотрщик zgv использующий svgalib:
либо устанавливаем порт /usr/ports/graphics/zgv
либо закачиваем пакет:
#: pkg_add -r zgv
Ссылки:
Официальный сайт проекта svgalib и zgv
Описание работы с zgv
Вертикальный скролинг консоли
При активированном расширенном видеорежим в консоли FreeBSD доступен скролинг при  выключенном Scroll Lock.
Скролинг вниз — нижняя стрелка
Скролинг вверх —  верхняя стрелка
Скриншоты
См. http://www.i2r.ru/static/282/out_8790.shtml

Установка программного обеспечения для просмотра видео в консоли
Потребуется установить svgalib и ее пакет разработки, чтобы MPlayer собрал свой SVGAlib драйвер (определяется автоматически, но можно включить принудительно), и отредактировать /etc/vga/libvga.config в соответствии с вашей картой и монитором.


Настройка svgalib
Запустив на воспроизведение файл увидел что часть изображения не влезает на экран.
На самом деле мне еще повезло! И это по нескольким причинам:
  1. Svga драйвер поддерживает мою видеокарту (svgalib похоже давно уже не поддерживается);
  2. Настройки по умолчанию позволили хоть что-то увидеть.
Настройки svgalib хранятся в файле /usr/local/etc/vga/libvga.config. В котором необходимо подобрать частоту (это влияет и на качество отображения).
Как я понял из немного численных источников по настройке драйвера svgalib, разрешение экрана и будет ли вообще отображение помещаться на экране определяется заданной частотой развертки монитора.
В файле  libvga.config частота развертки монитора задаются, следующими строками:
HorizSync min_kHz max_kHz
VertRefresh min_Hz max_Hz
Пример:
HorizSync 31.5 35.5
VertRefresh 50 70
Так же можно задать частоту развертки, через параметр monitor:
monitor monitor_class
Где monitor_class — число от 0 до 6 или максимальная горизонтальная частота в кГц(kHz). Примеры:
monitor 0 # Max horizontal sync is 31.5 kHz
monitor 1 # Max horizontal sync is 35.1 kHz
monitor 2 # Max horizontal sync is 35.5 kHz
monitor 3 # Max horizontal sync is 37.9 kHz
monitor 4 # Max horizontal sync is 48.3 kHz
monitor 5 # Max horizontal sync is 56.0 kHz
monitor 6 # No restrictions.
Небольшое пояснение по тому какие параметры задавать monitor или же HorizSync c VertRefresh:
«For your convenience you may specify the max horizontal sync explicitly. The correct class will the be chosen. You may use floats consisting of digits and a decimal point for this too:
monitor 40.0 # equivalent to monitor 3
This command is privileged.»
Источник: http://linux.die.net/man/5/libvga.config

Просмотр Видео в Консоли
Подготовка подготовка программного обеспечения
Для просмотра видео будет использоваться svga драйвер поэтому прийдется:
  1. установить из исходных кодов svgalib (/usr/ports/graphics/svgalib) (см. выше);
  2. установить из исходников mplayer (в опциях указать svga, а драйверы использующие x11 можно не отмечать).
Запуск файла на воспроизведение в mplayer:
#: mplayer  -vo svga path.avi

Настройка Mplayer
Запуск файла на воспроизведение в mplayer:
#: mplayer  -vo svga path.avi
Для того чтобы не набирать каждый раз опции mplayer в консоли можно настроить его с помощью файла ~/.m[layer/config
vo=svga
Настройка и регулирование звука в Mplayer - клавиши «0» и « /» , диапазон можно увеличить подняв mixer vol до 100 (см. звук в FreeBSD).
Про сохранение уровня громкости: http://www.daemony.ru/?p=1170
Кэширование воспроизведения видео.
Ключи для кэширования в molayer:
-cache 8912 
-cache-min 4
ключ cache задает кэш в 8MB, а ключ cache-min  - кэш должен быть заполнен минимум на 4% перед началом.

Просмотр видео по локальной сети.
Если возникает потребность посмотреть фильм с другого компьютера, то можно воспользоваться ssh. Команда:
#: ssh user@ip.adres "cat path/to/movie.avi" | mplayer -
Дефис в конце обязателен

П.С.
Настройкой FreeBSD для просмотра видео в консоли я занимался  летом 2011 года. И с того момента сделал несколько наблюдений. Видео драйвер svgalib уже не поддерживается и не обеспечивает достаточной производительности для просмотра dvd рипов размером около 1,5 Гб на процессоре pentium 2 (Наблюдалось расхождение звукового и видео ряда по времени). Поэтому от повседневного использования mplayer на маломощных конфигурациях я отказался.




Sunday, December 11, 2011

Wexler.Book E7001B


Первым моим eBook-ом был Qumo Libro. Которого с начала подкосило попадание прямого солнечного света и добило случайное падение на пол. В Юлмарте мой выбор на следующий ридер пал на Wexler.Book E7001B. В интернете почему-то не смог найти, какого-нибудь описания поэтому устройству, поэтому решил написать свое, мало-ли кому будет интересно.

Читалка, по правде, меня удивила. Довольно сильно отличается (в лучшую сторону) от Qumo Libro. Знакомство с читалкой Wexler.Book E7001B началось с упаковки. Она действительно сделана под книгу!
Рис. 1 Упаковка Wexler.Book E7001B
Осмотр ридера
Устройство собрано добротно, без люфтов. Задняя сторона сделана из приятного на о щ уп металла (рис. 4).

Рис. 2 выключенный ридер
Экран устройства — E-Ink, cенсорный и 7-ми дюймовый. Но по ширине как 6 дюймовый.
Чувствительность экрана настраивается (см. Настройки и калибровка экрана).
Несмотря на наличие сенсорного экрана в нижней части ридера имеется пять кнопок
Процессор: RK2808A с частотой 560 Мгц (в интернете можно найти что и все 600, но 560 — на официальном сайте производителя).
В нижней части книги расположены слева на право: карт-ридер, вход для наушников, разъем для usb, отверстие для перезагрузки, кнопка включения-выключения (см. рис. 3).
Рис. 3
Рис. 4
Несколько слов о прошивки и просмотре pdf
На устройстве установлена последняя на момент покупки версия прошивки 1.04. По поводу адекватности ПО книги есть замечания, но в целом удовлетварительно. Книжку планирую использовать для чтения pdf, по этому особое внимание я уделил тому как ридер переваривает PDF.
Чтобы не быть многословным, скажу сразу, смотрите меню доступное при просмотре pdf (на рис. 6) — оно скажет (или намекнет) об основных возможностях ПО.
Масштабирование
Доступно три режима масштабирования:
  1. Основной;
  2. Масштаб 1;
  3. Масштаб 2.
То как отмасштабирует книжка ваш pdf зависит от размера страницы файла pdf. В книжке отсутствует горизонтальный скрол, только вертикальный. Поэтому есть вероятность, что книжка просто обрежет «лишнюю» часть.
Поворот страницы
Поворот страницы осуществляется в ручную. Так как наличие акселерометра (ака G-сенсор) мне не удалось подтвердить. Особенность поворота — в том что поворачивает сначала на 90 градусов по том на -90.
Переход на заданную страницу
На рис. 7 представлен скрин формы ввода номера страницы. При наличие сенсорного экрана, ввод номера страницы осуществляется клавишами «вверх», «вниз», «влево» и «вправо» в нижней части экрана. Никакой визуальной клавиатуры.
Так клавиши «вверх» и «вниз» задают числа 0-9, а клавиши «Влево» и «Вправо» определяют цифру в числе.
Рис. 5 Главное меню 
Рис. 6 Меню при просмотре pdf

Рис. 7 Форма ввода номера страницы

Что в поставке:
  • Ридер;
  • Зарядное устройство;
  • Переходник на USB;
  • Инструкция и гарантийный талон;
  • Наушники;
  • Чехол;
  • Купоны на скидки и бесплатные книги в онлайн магазинах.
Карту памяти обнаружить не удалось, так что взял из старого ридера.


Скорость работы. Впечатления от интерфейса.
Ридер на самом деле без каких-либо изысков в плане производительности.
При чтение книг скорость перелистывания зависит от скорости перерисовки экрана. Это где-то 1-2 сек.
Время загрузки pdf книг зависит от размера книги. Так pdf объемом 15 Мб загружался где-то секунд 20.
Интерфейс прошивки ридера работает стабильно, при работе не подвисает. Но прошивка еще сырая. PDF, как я уже описывал, читает сносно, а вот DJVU еще плохо.
При чтение DJVU отсутствует возможность перехода на заданную страницу, поворот страницы не работает и имеются небольшие другие косяки.
В интерфейсе прошивки читалки отсутствует возможность манипуляции книгами. Так ненужную книгу не возможно удалить с ридера, только подключившись к компьютеру.

Подводить итог не буду.
Приведу лишь сравнение со своей предыдущей читалкой. Со времен покупки Qumo Libro в 2010 году Wexler.Book E7001B в конце 2011 года выделился лишь:
  • наличием сенсорного экрана (который с текущей версии прошивки не сильно нужен);
  • большим объемом встроенной памяти;
  • и меньшей стоимостью.

Остальные выводы делать Вам.