Google Analytics

четверг, 17 февраля 2011 г.

Создание multiboot флешки своими руками.

Задумал я сделать себе свою флешку загрузочной. Но столкнулся с некоторыми проблемами. При её изготовлении. Итак, начнём по порядку.

При записи hybrid iso диска через dd мы теряем оставшуюся емкость диска, а я на флешке часто ношу файлы знакомым. А у них стоит оффтоп, недостойный упоминания в этой статье. Значит, я должен разбить свою флешку, создав первый основной раздел в формате FAT32. А для линукса создать дополнительный раздел, с Ext4 в качестве ФС. Возможен вариант с Ext2/3 или любой другой ФС. Но не FAT и не NTFS, а то на флешки и карты памяти с несколькими разделами оффтоп реагирует по разному, иногда неадекватно.

Первым дистром на флешке должна быть Ubuntu. Стандартный установщик Ubuntu не подходит, он видно использует метод с dd, удаляя всё с многострадальной шлешки, и делая ей не годной для хронения файлов.

Есть для этого дела ещё и Unetbootin. Отличный продукт, устанавливает на стандартный FAT раздел загрузчик syslinux и один из целого списка дистрибутивов, при этом может сам качать их с оффсайтов и их зеркал. Но можно пользоваться только одним дистрибутивом, и его файлы и каталоги, изъятые из ISO образа, лежат вперемешку с вашими файлами.

Проект multisystem сам качает и устанавливает все что нужно для создания multiboot флешки, при этом он модифицирует initramfs тех дистрибутивов, которые не поддерживают загрузки из iso образов, лежащих в корне флешки. Опять проблемма, скрипт сам затачивает флешку под себя, форматируя её как ему угодно. А мне надо, что-бы из оффтопа даже не видели разделов, хранящих Live CD образа.

Ну, приступаем к делу.

Для начала вам понадобится cfdisk и mc. Первая программа есть в системе, а вторую лучше установить. Впринципе можно использовать PCManFM, или любой другой файловый менеджер. И ещё вам нужен Grub2 и Vim. Вместо Vim можно использовать nano,ed,medit или gedit на выбор. Мне нравится vim за его реактивно быструю загрузку/работу. Он не морочит голову свистелками и наворочеными плагинами/диалогами и менюшками, он просто работает.

Форматирование флешки.

Логинимся как root в консоли. Для этого вводим su, жмём Enter и вводим пароль. Теперь ищем свой флэш-диск. Вводим fdisk -l, и ищем наш флэш-диск. Смотрим на размер диска. У меня это:

Disk /dev/sdc: 3 GB, 3997486080 bytes
255 heads, 63 sectors/track, 486 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Теперь мы знаем что флэшка у нас пердставлена как /dev/sdc. Запускаем cfdisk:

cfdisk /dev/sdc

Нажимаем на [ New ], затем указываем тип раздела. [ Primary ] - основной или [ Logical ] - логический. И указываем откуда откусить кусок, с начала или конца неразмеченной области. Выбираем пункт [ Begining ]. Затем вводим размер этого раздела. У меня первый раздел в FAT32, его размер 1.2 GB. Расширеный раздел на всё оставшееся место. В нём создаём раздел для Grub, ФС типа ext4 и размером 400Mb. Создаём затем раздел для образов, назовём его isoStorage,LiveCDiso или как вашей душе угодно. Записываем изменения в таблицу разделов, нажав на [ Commit ], затем на [ Yes ]. Нажимаем любую кнопку, затем [ Quit ] для выхода. Форматируем наши разделы командой:

mkfs -L <Метка(Label) раздела>  -t <тип ФС> /dev/устройство

В моём случае я использовал команды:

mkfs -L Flaska -t vfat /dev/sdc1
mkfs -L Boot -t ext4 /dev/sdc5
mkfs -L isoStorage -t ext4 /dev/sdc6

Монтируем каталоги.

Теперь мы должны создать в каталоге /mnt каталоги Boot и isoStorage.

cd /mnt
mkdir Flashka
cd Flashka
mkdir Boot
mkdir isoStorage

Теперь монтируем их:

mount /dev/sdc2 /mnt/Flashka/Boot
mount /dev/sdc5 /mnt/Flashka/isoStorage

Установка GRUB2 на флешку.

Так устанавливаем Grub2 на флешку:

grub-install --root-directory /mnt/Flashka/Boot /dev/sdc

У этой команды параметр --root-directory <путь к смонтированному разделу> отвечает за указание каталога, в который Grub устанавливает свои файлы. А /dev/sdc указывает на устройство, на которое ставим Grub запишет свой boot-сектор в MBR.

Редактируем grub.cfg

Выполняем команду:

vim /mnt/Flashka/Boot/boot/grub/grub.cfg

Можете использовать вместо vim nano или gedit. Если вы выбрали vim, то нажмите на латинскую клавишу "a" для перехода в ражим редактирования, затем введите:

#Указываем задержку перед автоматической загрузкой.
set timeout=5
#Номер пункта, который грузится по прошествии задержки из предыдущего пункта.
#Отсчёт  начинаем с 0 пункта.
set default=0

### модули поддержки iso9660 и msdos разделов
insmod iso9660
insmod part_msdos

# удерживаешь кнопку шифт - показываем менюшку(расскоментируйте, если надо.)
#if keystatus --shift ; then set timeout="-1" ; fi
### разрешение
set gfxmode=800x600x32,800x600x24,800x600

### Загрузка шрифта и включение графического меню
loadfont /boot/grub/unicode.pf2
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else terminal gfxterm; fi

### настройка цветов
set color_normal=white/black
set menu_color_normal=green/black
set menu_color_highlight=light-blue/black

#Пункт меню "Перезагрузка"
menuentry "Reboot" {
  reboot
}

#Пункт меню "Выключение"
menuentry "Halt" {
  halt
}

Сохраняем всё нажав на Esc и ":", затем "w" и Enter. Опять ":" и "q" для выхода.

Проверка GRUB2 на работоспособность.

Используем замечательную виртулаьную машину от Oracle.Будьте внимательны, эти команды вы должны вводить от своего пользователя, или использовать usermod -a -G /dev/sdc в обязательном порядке.

sudo VBoxManage internalcommands createrawvmdk -filename /tmp/bootflash.vmdk -rawdisk /dev/sdc
sudo chmod a+rw /tmp/bootflash.vmd

Это потенциально опасная операция, поэтому вместо этого вы можете использовать запуск VirtualBox от sudo. Или запретить после изготовления флешки доступ вашего пользователя к работе с /dev/sdc в raw-режиме.

sudo usermod -a -G /dev/sdc 

Теперь создаём в VirtualBox новую виртуальную машину. И добавляем наш файл /tmp/bootflash.vmdk в коллекцию с образами дисков. Загружаем нашу флешку в виртуалке, и радуемся правильной работе загрузчика.

Завтра я опишу, как добавить на флешку Ubuntu и другие Live-системы.

четверг, 10 февраля 2011 г.

Вчера купил себе новую клавиатуру.

История с клавиатурами-очень отличается от судьбы других частей ПК. В 2001 году у меня была BTC с древним DIN (AT) разъёмом, который после замены в 2002(или 2003) году системника уже не куда было подключать. Но я прикупил переходник с DIN на PS/2 и пользовался ей до 2005 года. Очень качественная была клава, с чётким таким нажатием. Шумная правда. И очень большая.
Затем я купил Genius KB-12e. Интересный внешний вид и неплохое качество долго не позволяли мне с ней расстаться. На неё даже кофе не раз проливалось, но она стойко это переносила, и продолжала работать четко, как швейцарские часы. А затем я сменил системник и монитор на чёрные с серебром, и надо было приводить внешний вид клавиатуры и мыши к такому-же стилю. Я оставил её Genius KB-12e, но дополнительно подключил более современную KME KM-7501-02 c USB-разъёмом. Клавиатура неплохая, и при этом не дорогая. Мультимедийные клавиши и прикольный ролик для управления звуком расположены очень удобно, и вид у неё стильный. невыдержало в общем сердце поэта, и я её купил. Теперь я пользовался новой KME, а когда за ПК сидел не я, то работала Genius.
Но всё эти клавиатуры были мне не удобны. Дело в том, что рука у меня маленькая, а пальцы не очень длинные. А мизинец вообще не мог дотянуться до нужных ему кнопок. В общем не работа за ПК, а сплошное неудобство. Просто желание было переделать положение кнопок и их размер под мою анатомию. А то производители похоже ориентируют товар на каких-то среднечеловеков, а до остальных им дела нет. Я заметил, что редко пользуюсь мультимедийными кнопками-в Linux можно настроить любые сочетания кнопок для любых действий. Кроме того, при работе с обычным текстом и исходными кодами мне совершенно не нужен цифровой блок. Значит, мне нужна клавиатура с небольшим размером, без лишних кнопок и с нестандартным расположением или формой кнопок. Ничего идеального в мире нет, но клавиатуру похожую на идеал я для себя нашёл. Это A4Tech KL(S)-5. Вот её фото.
Почему я выбрал именно её? У этой клавиатуры пирамидальное расположение клавиш. По сути дела клавиши распложены в стандартном порядке, и если вы используете 10-ти пальцевый метод, то вы стразу сможете её использвовать. А вот форма кнопок, как вы видите необычная. Это фирменная разработка A4Tech, которую используют и в линейке G-Cube. Называется эта технология Anti RSI, и если у вас боль в запястьях или перенапряжение мизинца и безъимянного пальца из-за неправильного положения рук или коротких пальцев, то необязательно гнаться за эрономичной клавиатурой, но перейти на клавиатуру с Anti RSI стоит. Они дешевле, чем эргономичные модели, и при этом положение рук за такой клавиатурой заметно ближе у естественному.
А малый размер клавиатуры поможет людям с небольшой кистью руки чувствовать себя комфортно. Да и принцип KISS действует и применительно к клавиатурам. Кроме того, её можно новсить в рюкзаке и подключать там, где нет нормальной клавиатуры, или она не удобна. Если вы любите беспроводные клавиатуры, то есть похожая A4Tech GKS-520D Wireless. В общем, я просто рад, что есть компании, способные к нестандартному мышлению. Ведь всегда есть те, кому стандартные модели не очень удобны. Среди минусов данной модели отметил только небольшую разболтанность некоторых клавиш. Но по сравнению с KME у неё не такой сильный люфт, да и мягкий ход и низкопрофильный профиль клавиш частично сводят на нет эту болтанку. А если учесть, что я её купил за 106 молдавских лей, то это просто чудо, а не клавиатура:)

вторник, 1 февраля 2011 г.

Перестала работать Calibre

Обновил вчера KDE в моем Ubuntu Maverick на версию 4.6. Что сказать, KDE стали ещё стабильней, быстрей и краше. Похоже скоро удобство KDE сильно перевесит все плюсы Gnome. Прийдётся всё-таки добавлять планку оперативы для кед. Но вместе с обновкой случилось и неприятное происшествие. Обновился PyQt4 и SIP. В результате у меня не запускается Calibre-каталогизатор книг и конвертер из одного формата ebooks в другой.

Выхлоп программы:


Traceback (most recent call last):
  File "/usr/bin/calibre", line 19, in 
    sys.exit(main())
  File "/usr/lib/calibre/calibre/gui2/main.py", line 321, in main
    app, opts, args, actions = init_qt(args)
  File "/usr/lib/calibre/calibre/gui2/main.py", line 40, in init_qt
    from calibre.gui2.ui import Main
  File "/usr/lib/calibre/calibre/gui2/ui.py", line 31, in 
    from calibre.gui2.widgets import ProgressIndicator
  File "/usr/lib/calibre/calibre/gui2/widgets.py", line 26, in 
    from calibre.gui2.progress_indicator import ProgressIndicator as _ProgressIndicator
  File "/usr/lib/calibre/calibre/gui2/progress_indicator/__init__.py", line 15, in 
    pi_error)
RuntimeError: Failed to load the Progress Indicator plugin: the sip module implements API v8.0 but the progress_indicator module requires API v7.1


Книг у меня в библиотеке немало, а тут ещё парочка появилась, в том числе две очень важные. А добавить в библиотеку я их не могу. Раз в репозитариях программ calibre старой версии 0.7.18, надо было срочно решать проблему добавлением нового источника программ со свежей версией, или установить новую версию не используя пакетный менеджер.

Первый метод восстановления работы calibre - запуск под рутом команды

sudo python -c "import urllib2; exec urllib2.urlopen('http://status.calibre-ebook.com/linux_installer').read(); main()"

Если вы знакомы с Python, то должны понимать, что Python скачает и выполнит код на Python. Это потенциально опасная операция. Я для интереса загрузил и просмотрел код инсталятора, благо Python я знаю. И могу заверить, это безопасный скрипт. Он узнаёт архитектуру вашего CPU, и загружает для него архив с программой, которую распаковывает в /opt или любой другой каталог, если вы его укажете во время работы скрипта. Тарбол содержит calibre вместе со всеми зависимостями, включая PyTQ4 и SIP. Минус данного подхода в том, что тема у Qt4 будет дефолтная, значит вам прийдётся глазеть на Cleanlooks.

Второй подход состоит в добавлении стороннего репозитория, со свежей сборкой Calibre.Вот, как добавить репу в ваш Ubuntu:

sudo add-apt-repository ppa:n-muench/programs-ppa
sudo apt-get update
sudo apt-get upgrade

Но опыт подсказывает, что при смене версии SIP или PyQt4 можно опять столкнуться с несоответствием API новой и старой версии библиотек. И опять перестанет работать библиотека. Зато не будет нативного вида у приложения. Думаю вот, что делать? Пока использую первый вариант решения проблемы, но Cleanlooks я не люблю. Можно похачить файл gui.py в каталоге с конфигурационными файлами, и прописать свою тему, или GTK+ тему для Gnome и FVWM. Главное, моя библиотека опять доступна:)