Windows, Linux, VirtualBox. Немного об извращениях.

Янв 07
2012

Почему извращаемся с Windows?

VirtualBoxДавайте представим себе некоторую абстрактную ситуацию, в которой заядлому линуксоиду приходится, в следствие должностных обязанностей, плотно засесть под Windows. При этом, часть его работы подразумевает ряд операций, которые, если не Linux-only, то в нем, родимом, выполняются куда как сподручнее.

При этом, основную часть времени ему все таки придется проводить в Windows, так что dual-boot в такой ситуации не есть оптимальный вариант. Таки на ум приходит следующее решение (как сказал один знакомый программер: «coLinux своими руками, млин»)

Исходные данные

Итак, дано:

  • Windows Vista/7 в качестве хост-системы
  • Ваш любимый дистрибутив в качестве гостевой системы
  • VirtualBox, потому что с VMWare издавна как-то не сложилось

Поехали

  • Для начала, естественно, скачаем и установим VirtualBox.
  • После чего установим Putty.
  • При создании виртуальной машины выбираем удобные для себя настройки, за исключением одно маленького но, для гостевой системы сразу определяем 2 сетевых интерфейса:
    • NAT, из-за него наш Linux будет выходить во внешний мир
    • Виртуальный адаптер хоста, через него мы будем стучаться по ssh к нашему гостевому Linux
  • Уже непосредственно во время установки системы, или сразу после этого, настраиваем сетевые интерфейсы:
    • Пусть eth0 — первый, который NAT, ему говорим все получать автоматически по DHCP
    • Пусть eth1 — второй, который виртуальный адаптер хоста, говорим ему, что у него ip 192.168.56.10, маска 255.255.255.0
  • Систему установили, сетевые интерфейсы настроили (то есть убедились, что при загрузке гостевой системы у первого сетевого интерфейса ip вида 10.0.2.15, у второго тот, что указан ранее).
  • Пишем bat’ники, которые позволят запускать виртуалку в режиме Headless, то бишь без запуска GUI VirtualBox’а:
    • cd "C:\Program Files\Oracle\VirtualBox\"
      start VBoxManage startvm YOURVM --headless
      
    • cd "C:\Program Files\Oracle\VirtualBox\"
      start VBoxManage controlvm YOURVM --poweroff
      
  • Собственно все, запускаем машинку в режиме headless, стучимся к ней с помощью Putty, работаем.

Деннис Ритчи. Не стало еще одного IT пионера.

Окт 13
2011

8 октября в возрасте 70 лет скончался один из отцов основателей того мира, без которого мы уже не мыслим свое существование. Репост записи, которую сделал Роб Пайк, я увидел только сегодня. Деннис Ритчи — один из авторов языка Си и один из ключевых разработчиков операционной системы Unix. Он внес неоценимый вклад в то, без чего бы не было ни компьютеров, какими мы уже привыкли их видеть, ни домашней электроники, ни модных гаджетов. Он был талантливым инженером и ученым, который подарил нам общую теорию операционных систем и один из мощнейших инструментов для решения невероятного количества прикладных задач, он подарил этому миру то, что для многих теперь — хлеб насущный. Пусть земля будет пухом…

Перенос блога

Сен 14
2011

Прошу прощения, за то что не предупредил сразу, но блог, после продолжительного пребывания на поддомене, переехал обратно, на основной домен, если кто подписан на rss, подправьте адрес фида http://lushpai.org/feed

Hg branch, hg merge

Сен 06
2011

Intro

Использовать системы контроля версий в таких задачах как разработка ПО или создание сайтов нынче хороший тон. Так уж сложилось, что в момент выбора куда смигрировать с SVN я решил использовать Mercurial, на тот момент мне эта система показалась немного более простой и удобной, нежели Git. С увеличением количества разработчиков в проекте, ну или просто, если хочется, что бы в репозитории был порядок, неизбежно все приходят к использованию веток. Даже в небольших проектах у меня всегда 2 ветки: default и devel, остальные возникают и исчезают по необходимости. В default, всегда находится стабильный, оттестированый код (хотя чего греха таить, баги тут тоже обитают), devel — общая для всех ветвь разрабатываемого кода, от которой, в процессе, могут создаваться дополнительные ветки для реализации новых фич. Вообще механизм веток в Mercurial не столь прозрачен, на мой взгляд, как в Git, там, как раз таки, данный механизм реализован более удачно. Мне привычнее использовать named branches.

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

hg branch test
hg ci -m "new branch for testing code"
hg push --new-branch

Слияния веток

hg up default
hg merge test
hg ci -m "merge with test branch"
hg push

Закрытие ветки

hg up test
hg ci -m "close test branch" --close-branch
hg push

Вот так, довольно просто, можно использовать ветки в Mercurial. Это далеко не единственный вариант, например есть еще перемещаемые маркеры, они же bookmarks.

Udev usb automount

Авг 30
2011

В доброжелательных и приветливых дистрибутивах, вроде Fedora или Ubuntu проблем с автомонированием съемных носителей не наблюдается уже давно, в той же Slackware, если не используется KDE, Gnome или Xfce, все немножко печальнее. Но на самом деле все не так страшно, автоматическое монтирование можно настроить через udev.

1. Создадим политику в файле /etc/udev/rules.d/11-media-automount.rules:

KERNEL!="sd[b-z][0-9]", GOTO="media_by_label_auto_mount_end"
IMPORT{program}="/sbin/blkid -o udev -p %N"
# Определим метку устройства, если она есть, или же пропишем свою
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"
# Глобальные настройки монтирования
ACTION=="add", ENV{mount_options}="relatime"
# Настройки монтирования, специфичные для файловой системы
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"
# Монтирование
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"
# Очистка после удаления устройства
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"
# Выход
LABEL="media_by_label_auto_mount_end"
Real Time Web Analytics