Настройка доступа к сети из гостевой Windows XP через TUN/TAP интерфейс для виртуальной машины QEMU в Debian/Ubuntu Linux.

Дано

  1. Хост-машина с Debian Squeeze и следующими сетевыми настройками

    $ sudo ifconfig
    eth0      Link encap:Ethernet  HWaddr 00:1d:72:1c:d1:b9
              inet addr:192.168.0.64  Bcast:192.168.0.255  Mask:255.255.255.0
              inet6 addr: fe80::21d:72ff:fe1c:d1b9/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:3392 errors:0 dropped:0 overruns:0 frame:0
              TX packets:3491 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:2516375 (2.3 MiB)  TX bytes:634302 (619.4 KiB)
              Interrupt:16
    
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:3515 errors:0 dropped:0 overruns:0 frame:0
              TX packets:3515 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:992323 (969.0 KiB)  TX bytes:992323 (969.0 KiB)
  2. Установленная и активированная на хост-машине в виртуальной машине в qemu Windows XP Home Edition со следующими пераметрами запуска:

    /usr/bin/qemu \
        -monitor stdio \
        -soundhw es1370 \
        -m 192 \
        -localtime \
        -cdrom /home/r-asian/qemu/vpn-client.iso \
        -hda /home/r-asian/qemu/192.168.0.32.img \
        -boot c \
        -net nic,vlan=0,macaddr=00:9f:a5:71:b7:b5,model=rtl8139

Требуется

Настроить из виртуальной машины подключение в локальной сети, в которой находится хост-машина

Continue reading


Запуск старых добрых dos-игрушек под Ubuntu Linux с помощью dosbox

Что такое dosbox

Это эмулятор операционной системы DOS на архитектуре x86 с набором дополнительных утилит, для интеграции c основной ОС.

Установка

Что для Debian, что для Ubuntu одинаковая

$sudo apt-get install dosbox

Запуск

$dosbox

Если всё хорошо, появится вот такое хорошо знакомое окно-консоль.

dosbox

dosbox

Конфигурирование, захват видео, скриншотов, звука и midi

Конфигурационный файл находится в каталого *.dosbox*, как и каталог для захваченных видео, скриншотов, звука и midi

.dosbox
|-- capture
|   |-- dosbox_000.png
|   `-- dosbox_000.wav
`-- dosbox-0.73.conf

Проблемы с кодировкой

Решаются запуском в DOSBOX вот этой программки RK.COM

Сочетание клавиш

ALT-ENTER Переключение к полноэкранному режиму и обратно
ALT-PAUSE Поставить эмуляцию «на паузу»
CTRL-F1 Запустить keymapper.
CTRL-ALT-F5 Запустить/Остановить запись видео с экрана
CTRL-F4 Swap mounted disk‐image (Only used with imgmount). Update directory cache for all drives!
CTRL-F5 Сделать скриншот
CTRL-F6 Запустить/Остановить запись звука в wav файл
CTRL-ALT-F7 Запустить/Остановить запись OPL команд.
CTRL-ALT-F8 Запустить/Остановить запись raw MIDI команд.
CTRL-F7 Уменьшить frameskip.
CTRL-F8 Увеличить frameskip.
CTRL-F9 Убить dosbox
CTRL-F10 Захватить/освободить мышь
CTRL-F11 Медленное уменьшение скорости эмуляции (увеличение dosbox циклов).
CTRL-F12 Медленное увеличение скорости эмуляции (уменьшение dosbox циклов).
ALT-F12 Разблокировать скорость (turbo button).

Наиболее полезные утилиты dosbox

Все нижеперечисленные команды выполняются внутри окна dosbox

Монтирование реального каталога как виртуального диска

Смонтируем каталог локальной ФС */home/user/dosgames* как диск X

Z:\>MOUNT.COM X /home/user/dosgames
Drive X is mounted as local directory /home/user/dosgames

Просмотрим его содержимое

dosbox. Монтирование диска

dosbox. Монтирование диска

Монтирование образа диска из файла как CD-ROM

FIXME

Civilization (теплая ламповая цивилизация)

Полный список аохивов лежит тут, я пробовал вот эту версию. Никаких проблем с запуском не обнаружено. Просто пускаем CIV.EXE, предварительно примонтировав каталог с игрой к dosbox

Цивилизация в dosbox

Цивилизация в dosbox


Использование пакета mutagen для перекодировки тегов mp3 из Windows-1251(cp1251) в utf-8(Юникод) в Linux(Debian, Ubuntu)

Как известно, большинство медиа-проигрывателей в Linux(да и не только, в магнитолах тоже) используют кодировку utf8, однако на просторах родины часто встречаются mp3 с кодировкой тегов в windows-1251(cp1251). Есть против этого одно лекарство.

Установка

sudo apt-get install python-mutagen

Состав пакета

На самом деле этот пакет содержит целую кучу утилит

mid3iconv
mutagen-pony
mutagen-inspect
moggsplit
mid3v2

Нас в данном случае интересует только mid3iconv. Пользоваться ей надлежит в виде

mid3iconv -e cp1251 "файл"

или в таком, если надо перекодировать все файлы в текущем каталоге и подкаталогах

find . -name "*.mp3"|sed -e 's/^/"/g'|sed -e 's/$/"/g'|xargs mid3iconv -e cp1251

Макет автореферата кандидатской

Потырено отсюда и скомпилировано

\documentclass[12pt,a4paper]{article} %,twoside

\usepackage{array}
\usepackage{tabularx}
\usepackage{textcomp}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\usepackage{graphicx}
\usepackage{float}
\usepackage{indentfirst}

% следующий пакет может быть полезен, если надо ужать текст, чтобы сам текст не править, но чтобы места он занимал поменьше
%\usepackage{savetrees}       

% этот пакет может быть полезен для печати текста брошюрой, сама с ним не разбиралась
%\usepackage[print]{booklet}

% а при помощи этого пакета можно посмотреть макет страницы
%\usepackage{layout}

% Задаю параметры макета страницы, все поля по 2 см
\oddsidemargin=-13pt
\topmargin=-66pt %%
\headheight=12pt %%
\headsep=38pt
\textheight=732pt
\textwidth=484pt
\marginparsep=14pt
\marginparwidth=43pt
\footskip=14pt
\marginparpush=7pt %%
\hoffset=0pt %%
\voffset=0pt %%
%\paperwidth=597pt %%
%\paperheight=845pt %%

%размер табуляции (для красной строки) в начале каждого абзаца
\parindent=1.5cm

\renewcommand{\baselinestretch}{1.25}
\newfloat{scheme}{tb}{sch}

\sloppy

% Ввожу новые комманды для своих нужд
\newcommand{\COd}{$\rm{CO_2}$}
\newcommand{\CHf}{$\rm{CH_4}$}
\newcommand{\IPCC}{МГЭИК}
\newcommand{\Signifcalc}{$\rm{Significance}$}

% Подавление висячих строк
\clubpenalty=10000
\widowpenalty=10000

\author{Фамилия И.О.} % Фамилия И.О. автора

\begin{document}
% если надо посмотреть макет страницы, также должен быть откомментирован соответствующий пакет в начале
%\layout 

\include{title}    % вставка титульника
\include{avt}     % вставка самого текста автореферата
\newpage
\end{document}

Подключение внешнего жесткого диска

Воткнём его в usb-порт и посвотрим какое имя устройства он получил

# dmesg|grep sd
[25992.826599] sd 15:0:0:0: Attached scsi generic sg2 type 0
[25992.835635] sd 15:0:0:0: [sdb] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[25992.840606] sd 15:0:0:0: [sdb] Write Protect is off
[25992.840685] sd 15:0:0:0: [sdb] Mode Sense: 28 00 00 00
[25992.840698] sd 15:0:0:0: [sdb] Assuming drive cache: write through
[25992.857646] sd 15:0:0:0: [sdb] Assuming drive cache: write through
[25992.857741]  sdb: sdb1
[25992.892601] sd 15:0:0:0: [sdb] Assuming drive cache: write through
[25992.892688] sd 15:0:0:0: [sdb] Attached SCSI disk

То есть он у нас /dev/sdb1

Монтирование к файловой системе

На нем по умолчанию (как и на практически всех flash-накомителях) шайловая система FAT32

Пропишем его в /etc/fstab, чтобы он автомонтировался при старте,добавив строчку

/dev/sdb1       /media/storage  vfat    rw,async,flush,users,noatime,auto,utf8,codepage=866,check=r,quiet,showexec,shortname=winnt,uid=1000,fmask=111,dmask=000 0   0

Эта строчка позволит писать на этот жесткий диск максимальо совместимо в ОС семейства Windows. Пара слов об особых параметрах

  1. check=r — проверка на порректность имён в ФС. Из за неё при первом заходе на HD, он может «подвиснуть» покавсе проверит, но это необходимое зло
  2. shortname=winnt — имена файлов в соответствии со стандартами winnt
  3. utf8,codepage=866 — синхронизация кодировок
  4. uid=1000 — uid владельца фойлов диска при монтровании
  5. fmask=111,dmask=000 маски прав на файлы и каталоги на диске(писать можно всем)

XMMS2 — аудиопроигрыватель для красноглазого

XMMS2 — по сути инструмент для создания медиапроигрывателя из чего придётся. Но если вы достаточно брутальны и красноглазы, чтобы с ним можно работать из консоли, то можно получить очень легковесный и функциональный плейэр. Итак, он состоит из 2-х частей:

  • Сервера xmms2d
  • Клиента xmms2

На Debian устанавливается как обычно: не просто, а очень просто:

# apt-get install xmms2

Сервер xmms2d

Занимается тем, что висит деменом и принимает запросы от клиента. Собственно он и работает с аудио-системой, кодеками и всем, что необходимо для проигрывания. Запускается так:

$ xmms2d
  INFO: ../src/xmms/log.c:36: Initialized logging system :)
  INFO: ../src/xmms/ipc.c:950: IPC listening on 'unix:///tmp/xmms-ipc-r-asian'.
  INFO: ../src/xmms/main.c:507: Using output plugin: alsa

При запуске выводит

  1. адрес сокета, на который принимается подключение клиента
  2. какая звуковая система используется для вывода звука

Его конфиг лежит в ~/.config/xmms2/xmms2.conf, и там XML. Там же лежит его SQLIte БД с плэйлистами ~/.config/xmms2/medialib.db

В конфиге есть следующие секции

        <section name="alsa"/>
        <section name="bindata"/>
        <section name="converter"/>
        <section name="core"/>
        <section name="diskwrite"/>
        <section name="effect"/>
        <section name="equalizer"/>
        <section name="file"/>
        <section name="id3v2"/>
        <section name="mad"/>
        <section name="magic"/>
        <section name="medialib"/>
        <section name="nulstripper"/>
        <section name="output"/>
        <section name="playlist"/>
        <section name="replaygain"/>
        <section name="segment"/>
        <section name="vorbis"/>
        <section name="wave"/>

Настроить есть что. Я пока ограничусь тем, что изменю адрес сокета для подключения клиентов на такой tcp:127.0.0.1:9667. Если указать вместо 127.0.0.1 IP сетевой карты, то можно подключаться и удалённо. <code xml> <section name=«core»> <property name=«ipcsocket»>tcp:127.0.0.1:9667</property>

              <property name="shutdownpath">/home/r-asian/.config/xmms2/shutdown.d</property>
              <property name="startuppath">/home/r-asian/.config/xmms2/startup.d</property>
      </section>

</code>

Запускаем сервер

$ xmms2d
 INFO: ../src/xmms/log.c:36: Initialized logging system :)
 INFO: ../src/xmms/ipc.c:950: IPC listening on 'tcp://127.0.0.1:9667'.
 INFO: ../src/xmms/main.c:507: Using output plugin: alsa

Прописываем конфиг клиента в ~/.config/xmms2/clients/cli.conf

$ cat cli.conf
ipcpath=tcp://127.0.0.1:9667
statusformat=${artist} - ${title}
listformat=${artist} - ${title} (${minutes}:${seconds})
autostart=true

И посылаем уже запущенному на порту 9667 серверу команду на вывод текущего плэйлиста.

$ xmms2 list

Total playtime: 0:00:00

Плэйлист пуст.

Клиент xmms2

Полный список команд, которые умеет посылать консольный клиент можно получить просто набрав xmms2 без параметров

$ xmms2
Available commands:
  add - adds a URL to the playlist
  addarg - adds one URL with arguments to the playlist
  addid - adds a Medialib id to the playlist
  insert - inserts one URL at a specific position
  insertid - inserts one Medialib id at a specific position
  radd - adds a directory recursively to the playlist
  clear - clears the playlist
  shuffle - shuffles the playlist
  sort - sort the playlist; use a space delimiter for multiple properties
  remove - removes something from the playlist
  list - lists the playlist
  addpls - Adds the contents of a playlist file to the playlist
  play - starts playback
  stop - stops playback
  toggleplay - toggles playback status between play/pause
  pause - pause playback
  next - play next song
  prev - play previous song
  seek - seek to a specific place in current song
  jump - take a leap in the playlist
  move - move a entry in the playlist
  volume - set volume for a channel
  volume_list - list volume levels for each channel
  mlib - medialib manipulation - type 'xmms2 mlib' for more extensive help
  playlist - playlist manipulation - type 'xmms2 playlist' for more extensive help
  coll - collection manipulation - type 'xmms2 coll' for more extensive help
  browse - browse server file lists
  status - go into status mode
  info - information about current entry
  current - formatted information about the current entry
  config - set a config value
  config_list - list all config values
  plugin_list - list all plugins loaded in the server
  stats - get statistics from server
  quit - make the server quit
  help - print help about a command

Ну и плюсом можно получить море информации из всеми любимых манов

man xmms2

Базовые операции с XMMS2

Создать плэйлист с названием picnic-favorites

$ xmms2 playlist create picnic-favorites

Просмотреть список плэйлистов

$ xmms2 playlist list
  picnic-favorites
->Default

Как мы видим, наш лист создался, но активным является Default

Создадим ещё один плэйлист и посмотрим как наполняется их список

$ xmms2 playlist create aria-favorites
$ xmms2 playlist list
  picnic-favorites
  aria-favorites
->Default

Удалить ненужный плэйлист

$ xmms2 playlist remove aria-favorites
Playlist removed

Сделать активным плэйлист

$ xmms2 playlist load picnic-favorites

Посмотрим список плэйлистов. picnic-favorites стал активным

$ xmms2 playlist list
->picnic-favorites
  Default

Добавить в активный плэйлист композицию

$ xmms2 add picnic-favorites //mnt/storage2/storage/music/copy/picnic/Piknik\,\ Sekta\ Mo-Afrodita\ iz\ peny\ i\ schelochi.mp3
Added //mnt/storage2/storage/music/copy/picnic/Piknik, Sekta Mo-Afrodita iz peny i schelochi.mp3

И ещё парочку

$ xmms2 add picnic-favorites //mnt/storage2/storage/music/copy/picnic/Piknik-Nastojaschie\ dni.mp3
  Added //mnt/storage2/storage/music/copy/picnic/Piknik-Nastojaschie dni.mp3
$ xmms2 add picnic-favorites //mnt/storage2/storage/music/copy/picnic/Piknik-Navuhodonosor.mp3
  Added //mnt/storage2/storage/music/copy/picnic/Piknik-Navuhodonosor.mp3
$ xmms2 add picnic-favorites //mnt/storage2/storage/music/copy/picnic/Piknik\,\ Sekta\ Mo-Bud-\ navsegda.mp3
  Added //mnt/storage2/storage/music/copy/picnic/Piknik, Sekta Mo-Bud- navsegda.mp3
$ xmms2 add picnic-favorites //mnt/storage2/storage/music/copy/picnic/Piknik-Lico.mp3
  Added //mnt/storage2/storage/music/copy/picnic/Piknik-Lico.mp3

Просмотреть список композиций текущего плэйлиста

$ xmms2 list
->[0/216] Ïèêíèê & Ñåêòà Ìî - Àôðîäèòà èç ïåíû è ùåëî÷è
  [1/217] Ïèêíèê - Íàñòîÿùèå äíè (04:11)
  [2/218] Ïèêíèê - Íàâóõîäîíîñîð (05:37)
  [3/219]  - Piknik, Sekta Mo-Bud- navsegda (07:29)
  [4/220] Ïèêíèê - Ëèöî (03:58)
Total playtime: 0:25:45

К сожалению на данный момент у меня с настройками консоли и тегами в mp3-файлах всё печально :-)

Удалить композицию из плэйлиста

$ xmms2 remove 4

Убедимся что удалилась

$ xmms2 list
->[0/216] Ïèêíèê & Ñåêòà Ìî - Àôðîäèòà èç ïåíû è ùåëî÷è
  [1/217] Ïèêíèê - Íàñòîÿùèå äíè (04:11)
  [2/218] Ïèêíèê - Íàâóõîäîíîñîð (05:37)
  [3/219]  - Piknik, Sekta Mo-Bud- navsegda (07:29)

Запустить проигрывание плэйлиста

$xmms2 play

Таким же образом оперируем со stop, pause, prev, next


Управление окнами в VIM

Создание окна

  • :sp <имя файла> — создание горизонтального окна
  • :vsp <имя файла> — создание вертикального окна

Размеры окна

  1. C-w > — Увеличение ширины текущего окна
  2. C-w < — Уменьшение ширины текущего окна
  3. C-w + — Увеличение высоты текущего окна
  4. C-w — — Уменьшение высоты текущего окна

Переключение между окнами

  1. Ctrl-w j – переход к нижнему окну
  2. Ctrl-w k – переход к верхнему окну
  3. Ctrl-w Ctrl-w – циклическое переключение

Мой .vimrc

set number
set textwidth=80
set autoindent
set tabstop=4
set shiftwidth=4
set expandtab
set wildmenu
set noautowrite
set ignorecase
set showmatch
set nopaste
set nobackup

nmap <F2> :w<cr>
vmap <F2> <esc>:w<cr>i
imap <F2> <esc>:w<cr>i
nmap <F10> :q!<cr>
vmap <F10> <esc>:q!<cr>i

    map <S-tab> <ESC>:tabprevious<cr>i
    map <C-tab> :tabnext<cr>
    nmap <C-tab> :tabnext<cr>
    imap <C-tab> <ESC>:tabnext<cr>i
    nmap <C-t> :tabnew<cr>
    imap <C-t> <ESC>:tabnew<cr>

set wildmenu
set wcm=<Tab>
menu Encoding.CP1251   :e ++enc=cp1251<CR>
menu Encoding.CP866    :e ++enc=cp866<CR>
menu Encoding.UTF-8    :e ++enc=utf-8<CR>
menu Encoding.KOI8-U   :e ++enc=koi8-u<CR>
map <F8> :emenu Encoding.<TAB>

e ++enc=cp1251

Использование VIM

VIM минимум

  • :e file — открытие существующего или создание нового файла;
  • :w [file] — сохранение буфера в «свой» или новый файл. :w! — невзирая на защиту записи ;
  • <Ctrl-G> — дать полную информацию об открытом файле и положении курсора в его буфере;
  • :q — закрытие окна (для последнего окна — выход из редактора). :q! — невзирая на наличие несохранённых буферов;
  • :!command — выполнить внешнюю команду;
  • :bn — переключиться на следующий буфер;
  • <Ctrl-W>s — разделить окно пополам по горизонтали, <Ctrl-W>v — по вертикали;
  • <Ctrl-W>w — перейти в следующее окно;
  • d — удалить символ с помещением в регистр обмена, dd — строку;
  • y — копировать в регистр обмена символ, , yy — строку;
  • [p, ]p — вставить из регистра после или перед курсором;
  • :r file — вставить содержимое файла;
  • /string — искать string (строка или регулярное выражение) от курсора и ниже;
  • ?string — искать string выше от курсора;
  • n или N — продолжить поиск ниже или выше по тексту;
  • %s/string_old/string_new — замена во всём буфере;
  • * — найти следующее вхождение слова под курсором, # — предыдущее;
  • % — найти ответную скобку;
  • . — повторить последнюю операцию;
  • [n]G — перейти на строку n, в отсутствие n — в конец файла;
  • ) или ( следующее или предыдущее предложение, для }/{ — параграф, для ]]/Почему — VIM?

http://linuxgeeks.ru/vi.htm