Tuesday, March 26, 2013

Как настроить русскую раскладку клавиатуры в Lubuntu

Введение
Я очень долго сидел на оригинальной Ubuntu  и тот факт, что переключение раскладки с латиницы на русский в Lubuntu 12.10 не работает был для меня шоком. (До того, что были идеи завязать с opensource-ными осями). В итоге, когда гнев остыл, я провел целые выходные за настройкой Lubuntu. Мои изыскания легли в основу этого поста.

Описание проблемы
Как я понял, переключение раскладок клавиатур не работает не только для русского, для других языков тоже. И это не фича, а самый настоящий баг. Поставляемая с дистрибутивом Lubuntu утилита  Lxkeymap позволяет настроить раскладку, но она будет работать до первой перезагрузки.
Вариант запуск по шагового мастера настройки приведет к такому же варианту:
#: sudo dpkg-reconfigure console-data
Если выдаст что не может найти программу, то надо установить
#: sudo apt-get install console-data

Как можно настроить переключение клавиатуры на русскую раскладку
Имеются два одинаково работающих варианта с переключением раскладок с русского на английский при помощи сочетания [Ctrl]+[Schift]:
#: setxkbmap -option grp:switch,grp:ctrl_shift_toggle,grp_led:num us,ru
#: setxkbmap -layout "us,ru" -variant "," -option "grp:ctrl_shift_toggle"

Вы можете установить другие настройки

grp:toggleпереключение правым Alt
grp:shifts_toggleдвумя клавишами shift
grp:ctrl_shift_togglectrl+shift
grp:alt_shift_togglealt+shift
grp:ctrl_alt_togglectrl+alt
grp:caps_toggleпереключение по CapsLock
grp:lwin_toggleпереключение по левой "Win" клавише на Windows клавиатуре (для X Window старше 4.2);
grp:rwin_toggleпереключение по правой "Win" клавише на Windows клавиатуре (для X Window старше 4.2)
grp:menu_toggleпереключение по клавише "Контекстное меню" на Windows клавиатуре (для X Window старше 4.2)
grp:lctrl_toggleпереключение по левой клавише Control
grp:rctrl_toggleпереключение по правой клавише Control
grp:switchпереключение по правому Alt только на момент нажатия
grp:lwin_switchпереключение по левой клавише Windows только на момент нажатия
grp:rwin_switchпереключение по правой клавише Windows только на момент нажатия
grp:win_switchпереключение по любой клавише Windows только на момент нажатия

Теперь чтобы не выполнять эти команды в ручную каждый раз после загрузки необходимо их добавить в скрипт который будет автоматически выполняться при загрузки LXDE.
Для этого я создал файл /home/nick/.rukeyboard.sh
Скопировал в него одну из команд и сделал его исполняемым:
#: chmod +x /home/nick/.rukeyboard.sh

После этого в папке /home/nick/.config создал папку autostart и в ней создал файл auto.desktop со следующим содержанием:
[Desktop Entry]
Encoding=UTF-8
Name= CustomKBfix
Comment=Fix russion keyboard
Exec=lxterminal --command "/home/nick/.rukeyboard.sh"
Terminal=true
Теперь после перезагрузки переключение раскладок клавиатуры работает.
Файлы с расширением .desktop  в папке autostart можно использовать для любых других задач требующих выполнения после загрузки LXDE.

Ссылки:
http://ru.gentoo-wiki.com/wiki/XkbOptions
http://linux.koolsolutions.com/2009/09/01/howto-auto-launch-programsscripts-on-lxde-startup/

Update:
Опытным путем было установлено, что переключение кодировок можно задать через аплет Keyboard layout handler (который предварительно нужно добавить на панель рабочего стола).

Sunday, March 24, 2013

Готовим Lubuntu к работе

Lubuntu - вариант дистрибутива ubuntu с lxde по умолчанию, быстрый  и мало требовательный к ресурсам.

Ставим сторонний софт
Необходимо установить полезный, но в тоже время трудно доступный в ubuntu, софт из сторонних источников.
Установим flash, java, аудио- и видео-кодеки:
#: sudo apt-get install ubuntu-restricted-extras

Ставим софт который пригодится вебразработчику node.js + sublime text2:
#: sudo add-apt-repository ppa:chris-lea/node.js 
#: sudo add-apt-repository ppa:webupd8team/sublime-text-2

#: sudo apt-get update

#: sudo apt-get install nodejs
#: sudo apt-get install sublime-text

Теперь установим Skype
#: sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner"
#: sudo apt-get update
#: sudo apt-get install skype

Установка Opera
#: wget -O - http://deb.opera.com/archive.key | sudo apt-key add -
Запустив эту команду необходимо вести пароль! (просьбы вы не увидите, надо жать)
Терминал выполнит скачивание archive.key (wget …) и передаст его программе apt-key, которая по требует root доступа (sudo). Значит нужно ввести ваш пароль. Несмотря на то, что вы нажимаете клавиши на клавиатуре, символы не появляются в терминале (даже звёздочки) — это нормально.  В конце должно появится сообщение содержащее "Ok".
#: sudo sh -c 'echo "deb http://deb.opera.com/opera/ stable non-free" >> /etc/apt/sources.list.d/opera.list'
#: sudo apt-get update
#: sudo apt-get install opera

Пока это все, расширю пост если найду еще что можно допилить. 

Saturday, March 23, 2013

Откат ubuntu на предыдущую версию ядра

Краткое введение
Так получилось, что после более чем полутора лет благополучной эксплуатации ubuntu, система перестала функционировать в один момент. Я получил и установил новое обновление ядра. Система начала сыпать сообщения о системных ошибках, просто зависать на каждый чих, и т. п.
Проблема была 100% с обновленным ядром. Это я понял потому что, провел ряд экспериментов:

  • Установил Ubuntu 12.10 (До этого была 12.04). После установки пачки обновлений с ядром система снова продолжила падать; 
  • Установил Lubuntu 12.10 (Те же действия с моей стороны и тот же результат). 

Устав перебирать дистрибутивы, я полез в google искать как избавится от нового ядра. Так как с проблемой восстановления предыдущего ядра ubuntu я никогда не сталкивался, то решил оставить заметки на будущее.

Как узнать текущую версию ядра?
#: uname -a
(Окно терминала можно вызвать сочетанием клавиш [Ctrl]+[Alt]+[T])

Как при загрузке Ubuntu выбрать другое ядро для загрузки?
При загрузке системы зажать клавишу [Schift]. Откроется диалог выбора варианта загрузки в котором можно выбрать необходимое ядро.
Подробнее о настройке grub в ubuntu

Как удалить лишнее ядро в ubuntu?
Если удаляемое ядро дефолтное в системе, то предыдущее ядро linux занимает его место.
#: sudo apt-get purge purge linux-image-3.5.0-26-generic
Версию ядра надо поменять на то которое надо удалить

Какие версии ядер имеются?
Смотрите в папке /boot/



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)