Категории

среда, 30 мая 2012 г.

Ubuntu 11.04, 11.10, 12.04, Midnight Commander, mc и Unity 3D исправляем проблему с F10 в терминале

Вот такой нехитрый скрипт установит и избавит от проблем с F10 при работе в терминале с mc в Ubuntu 11.04, 11.10 и 12.04.
#!/bin/sh

sudo apt-get install mc
gconftool-2 --set --type string "/apps/compiz-1/plugins/unityshell/screen0/options/panel_first_menu" "Disabled" # Unity Panel 3D

gconftool-2 --set --type bool "/apps/gnome-terminal/global/use_menu_accelerators" "false" # Gnome-Terminal

# И последний штрих для Ubuntu 12.04-LTS
[ ! -d ~/.config/gtk-3.0/ ] && mkdir -p ~/.config/gtk-3.0/
cat >~/.config/gtk-3.0/gtk.css <<_EOF
@binding-set NoKeyboardNavigation {
 unbind "F10"
}

* {
 gtk-key-bindings: NoKeyboardNavigation
}
_EOF
После чего придется закрыть все открытые окна терминала, чтобы изменения вступили в силу.

среда, 2 мая 2012 г.

Проблема с grub и русской локализацией в Ubuntu

В некоторых версиях Ubuntu почему-то отсутствует файл локализации ru.mo в Grub:
Ubuntu$ ls /boot/grub/locale/
en_AU.mo  en_CA.mo  en_GB.mo
В результате мы видим меню граба на английском языке, хотя при этом язык установлен правильно:
Ubuntu$ cat /boot/grub/grub.cfg | grep lang
  set lang=ru_RU

ВНИМАНИЕ, перед дальнейшими действиями сделайте резервные копии всех модифицированных вами файлов от Grub'а, например /etc/default/grub или /etc/grub.d/00_header, если вы счастливый обладатель нетбука с чипсетом i915 Ubuntu 11.10 на EeePC разрешение экрана 1024x600 в меню GRUB2.
Чтобы меню граба снова стало на русском, нужно сперва удалить пакет grub-pc:
Ubuntu$ sudo apt-get purge grub-pc
Затем снова установить:
Ubuntu$ sudo apt-get install grub-pc

Теперь проверяем появился ли ru.mo:
Ubuntu$ ls /boot/grub/locale/
en_AU.mo  en_CA.mo  en_GB.mo  ru.mo
Теперь можно перезагрузиться и проверить, что все нормально.
P.S. думаю и обычное копирование этого файла с "рабочей" системы так же исправит ситуацию, но я такой метод не проверял.

среда, 4 апреля 2012 г.

FreeBSD 9.0 GPT + gmirror

Столкнулся с проблемой реализации подобной связки GPT и gmirror на FreeBSD 9.0. Методом проб и ошибок получилась вот такая пошаговая инструкция:
0. Загружаемся с диска FreeBSD 9.0 amd64 в режиме LiveCD, система спросит логин, вводим root, а вместо пароля просто жмем Enter.
1. Удаляем все GPT данные с дисков:
FreeBSD# gpart destroy -F ada0
FreeBSD# gpart destroy -F ada1
2. Создаем GPT на 1 диске:
FreeBSD# gpart create -s gpt ada0
3. Создаем GPT разметку на 1 диске:
3.1 Загрузочный раздел
FreeBSD# gpart add -b 34 -s 94 -t freebsd-boot ada0
3.2 Раздел подкачки
FreeBSD# gpart add -s 5G -t freebsd-swap ada0
3.3 Файловую систему UFS
FreeBSD# gpart add -t freebsd-ufs ada0
3.4 Проверяем все ли так, как мы задумали
FreeBSD# gpart show
=>        34  2930277101  ada0  GPT  (1.4T)
          34          94     1  freebsd-boot  (47k)
         128     2097152     2  freebsd-swap  (1.0G)
     2097280  2928179855     3  freebsd-ufs  (1.4T)
3.5 Записываем загрузчик
FreeBSD# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0
3.6 Копируем разметку GTP с 1 диска на 2 диск
FreeBSD# gpart backup ada0 | gpart restore -F ada1
3.7. Проверяем что теперь получилось:
FreeBSD# gpart show
=>        34  2930277101  ada0  GPT  (1.4T)
          34          94     1  freebsd-boot  (47k)
         128     2097152     2  freebsd-swap  (1.0G)
     2097280  2928179855     3  freebsd-ufs  (1.4T)

=>        34  2930277101  ada1  GPT  (1.4T)
          34          94     1  freebsd-boot  (47k)
         128     2097152     2  freebsd-swap  (1.0G)
     2097280  2928179855     3  freebsd-ufs  (1.4T)
4. загружаем gmirror:
FreeBSD# gmirror load
4.1 Создаем RAID1 для SWAP раздела
FreeBSD# gmirror label -v -b round-robin swap /dev/ada0p2
4.2 Добавляем 2-ой диск в зеркало:
FreeBSD# gmirror insert swap /dev/ada1p2
4.3 Создаем RAID1 для UFS раздела:
FreeBSD# gmirror label -v -b round-robin rootfs ada0p3
4.4 Добавляем 2-ой диск в зеркало:
FreeBSD# gmirror insert rootfs /dev/ada1p3
4.5 Удалить случайно созданные RAID1 разделы(если вдруг чего-то напутали выше)
FreeBSD# gmirror remove swap ada0p2 ada1p2
5. Создаем файловые системы на RAID1 разделах
FreeBSD# newfs -m 1 -U /dev/mirror/rootfs
6. УСТАНОВКА FreeBSD:
6.1 Монтируем созданную файловую систему в /mnt
FreeBSD# mount /dev/mirror/rootfs /mnt
6.2 Устанавливаем FreeBSD 9.0
FreeBSD# cd /usr/freebsd-dist
FreeBSD# sh
FreeBSD# export DESTDIR=/mnt
FreeBSD# for file in base.txz kernel.txz lib32.txz;
>do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done
6.3 Создаем /etc/fstab для установленной системы:
FreeBSD# cat >/mnt/etc/fstab << __EOF__
> #dev   #mount #fs #opts #dump #pass
> /dev/mirror/rootfs / ufs rw 1 1
> /dev/mirror/swap none swap sw 0 0
> __EOF__
6.4 Создаем /boot/loader.conf
FreeBSD# cat > /mnt/boot/loader.conf << __EOF__
> geom_mirror_load="YES"
> __EOF__
7. Отмонтируем зеркало
FreeBSD# umount /mnt
10. все готово, теперь можно перезагружаться и смотреть на результат

Ссылки по теме:
  1. HOWTO: Install FreeBSD 9.0 RELEASE (Root on UFS + ZFS, RAID1)
  2. Варианты загрузки FreeBSD: gmirror + GPT + UFS
  3. Использование gmirror для создания программного зеркалирования дисков
  4. [Solved] No gmirror in 9.0, now what?
  5. gmirror With Disk Partitions
  6. mirroring FreeBSD-9 disks with GPT

воскресенье, 26 февраля 2012 г.

Аналоги на sed для dos2unix и unix2dos

Команда dos2unix служит для преобразования форматов текстовых файлов MSDOS к UNIX формату, а команда unix2dos служит для преобразования форматов текстовых файлов UNIX к формату MSDOS и Windows. Известно, что форматы текстовых файлов в DOS и в UNIX немного отличаются: в DOS все строки заканчиваются парой символов CR и LF (возврат каретки /r и перевод строки /n), а UNIX использует только символ LF перевод строки /n, справедливо полагая, что второй символ совершенно излишен. Чтобы не устанавливать эти консольные утилиты dos2unix и unix2dos можно воспользоваться вот такими несложными функциями написанными с использованием sed в sh:
#!/bin/sh
dos2unix() {
 sed -i '' -e 's/'"$(printf '\015')"'$//' "$1"
}

unix2dos() {
 sed -i '' -e 's|$|'"$(printf '\015')"'|' "$1"
}

# Сделать окончания строк LF (Unix)
dos2unix file.test

# Сделать окончания строк CR/LF (Win or Dos)
unix2dos file.test
Запустить аналог на sed для dos2unix прямо в консоли можно командой:
FreeBSD$ sed -i '' -e 's/'"`printf '\015'`"'$//' file.name
А аналог на sed для unix2dos прямо в консоли выглядит так:
FreeBSD$ sed -i '' -e 's|$|'"`printf '\015'`"'|' file.name
Обработать рекурсивно все php файлы в текущем каталоге:
FreeBSD$ find . -name "*.php" -type f -exec sed -i '' -e 's/'"`printf '\015'`"'$//' {} \;
Причины НЕ устанавливать данные консольные утилиты могут быть разными, например невозможность их установить (случай с VPS или web хостингом), спортивный интерес ну или просто лень :)