Настройка Linux в окружении VirtualBox

03 августа 2010

…Заканчиваю эпос в трех частях об настройке виртуального Linux-сервера под Windows.

Беспарольный sudo

Поскольку никто, кроме тебя, на виртуалку попасть не сможет, целесообразно убрать пароль с sudo. Так удобнее. Для этого в /etc/sudoers нужно дописать строку

%username% ALL=NOPASSWD: ALL

где %username%, конечно – логин твоего пользователя, %username%.

Настройка сети

Вышеупомянутые статические настройки. Возможно, придется поменять IP-адреса (я почти уверен, что не придется) – правильные можно подсмотреть в выдаче ifconfig.

# /etc/network/interfaces

# Loopback - не забудь его не убрать
auto lo
iface lo inet loopback

# NAT - служит выходом в Интернет, потому и gateway.
auto eth0
iface eth0 inet static
address 10.0.2.15
gateway 10.0.2.2
netmask 255.255.255.0
network 10.0.2.0
broadcast 10.0.2.255

# Host-only адаптер
auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255

Остается настроить статический DNS. Проблема вот в чем: виртуальная машина получает свои DNS посредством DHCP у машины-хозяина, причем получает в момент загрузки. Предположим теперь, что я загрузил виртуалку дома, и она получила в качестве DNS мой роутер 192.168.1.1. Потом я пошел на работу, выключив (или усыпив) ноут – виртуалка при этом сохранила свое состояние, при чем для нее ничего не поменялось вообще. Она по-прежнему использует в качестве DNS роутер – уже недоступный – и поэтому теряет способность разрешать доменные имена. Довольно-таки неочевидный затык.

Чтобы избавиться от этого, в файл /etc/dhcp3/dhclient.conf добавляем строчку:

# Принудительно используем сервера OpenDNS (можешь указать любые другие)
supersede domain-name-servers 208.67.222.222,208.67.220.220;

По-моему это не идеальный конфиг, по уму надо все настройки перенести в dhclient.conf, но пока и так работает.

Настройка SSH

SSH-сервер по умолчанию в Убунте не стоит:

sudo apt-get install openssh-server

Предположим, ты используешь PuTTY. Тогда тебе остается сгенерировать им SSH-ключ – для удобства без ключевой фразы – и:

mkdir ~/.ssh
echo "public key copypasted from putty" >~/.ssh/authorized_keys

После чего используем сгенерированный ключ для беспарольного входа на виртуалку. А если средствами ярлыка или BAT-файла вызывать putty -load virtualbox_session_name – то даже без путтевского окна настроек.

Установка VirtualBox Guest Additions

Данная штука нужна обязательно хотя бы потому, что без нее на виртуалке сбивается время. Тут все просто – монтируем образ, предоставляемый VirtualBox-ом, и выполняем

sudo /media/cdrom/VBoxLinuxAdditions-x86.run

Гостевые дополнения также позволяют монтировать папки из машины-хозяина внутрь виртуалки, но мне это было не нужно и я этим не занимался. Замечу, что, скажем, рельсовые проекты в такие папки класть нельзя, ибо в них не соблюдаются права файлов.

Настройка Samba

Опять-таки нам выгодно открыть наибольший доступ по Samba, поскольку доступна она будет только с машины-хозяина.

Устанавливаем самбу:

sudo apt-get install samba

и прописываем такой себе минимальный конфиг (/etc/samba/smb.conf):

[global]
workgroup = WORKGROUP
interfaces = lo eth1
bind interfaces only = yes

security = share
map to guest = bad user

usershare allow guests = yes
guest account = %username%

[home]
path = /home/%username%
guest ok = yes
guest only = yes
read only = no
directory mask = 0755
create mask = 0644

С таким конфигом можно заходить из Windows на \\192.168.56.101\home и смотреть домашнюю папку своего пользователя.

Хосты

Чтобы не прописывать виртуальные хосты по несколько раз (на самой виртуалке, на машине-хозяине, на других виртуалках), имеет смысл настроить легонький DNS-сервер dnsmasq. Я до этого пока не добрался, прописываю хосты ручками.

Резюмируя

Вот и все. Пожалуй, все.

Я понимаю, что пишу не в стиле руководства для новичков – увы, излагать в духе «запустите sudo nano… кстати, nano – это такой текстовый редактор… для начала найдите на клавиатуре буковку эс… эс как доллар» я терпеть не могу. Гугл с удовольствием поможет разобраться в мелких деталях.

Надеюсь, помогу кому-нибудь слезть с денвера или Ruby for Windows в адекватную для веб-разработки среду. Ну или бросить мытарства с гномами-кедами-компизами без всякого ущерба для работы.

Вопросы? Предложения?



Восемь комментариев. Напиши еще один
  1. 37d953b779140f975e85ff64b6459471 # 03 августа 2010 Костег написал:

    В целом полезно-познавательно, спасибо. Я вот не знал, как запустить VirtualBox в виде сервиса (а гуглить было лень).

    Но пока слазить с Денвера не планирую. Как в 2006-м году его поставил, так до сих пор и пользуюсь, разве что дополнительно 5.3 на него повесил через FCGI.

    Хотя… Nginx нужно бы поставить…

  2. 22203482572193fd53863a81ca947635 # 03 августа 2010 Сергей Морозов написал:

    Отличные статьи, спасибо большое. Сам бы не разобрался и забил в очередной раз :)

  3. 2df41b0577f95fe6fa5ae83333e51490 # 11 августа 2010 Слава написал:

    У тебя все для разработки находится в Ubuntu или часть под виндой (браузер, IDE)?

    1. 777894ea5153122bfa6b83f5bbf23622 # 11 августа 2010 Леонид Шевцов (автор) написал:

      Браузер под виндой, конечно. Код я пишу в vim, его запускаю либо в PuTTY, либо через Xming.

      Помимо вима через Xming можно работать, наверное, в чем угодно, по крайней мере IDE, написанные Java, ничего во внешнем виде и производительности не теряют. :)

  4. 75c09ceba3bfc3d6423d04d84b784e06 # 23 января 2011 Сайт под ключ в Киеве (lifedesign.ua) написал:

    можешь выложить настроенную виртуалку?

  5. B33f98ca2fc1fc8f76eca730a5c0a7d2 # 17 июля 2011 ko91h написал:

    Спасибо за статью, оказалась очень полезной! Есть один вопрос. Можно ли каким-то образом настроить запуск иксовых программ так, чтобы избежать появления двух окон? Например, запускаем так plink -load host urxvt – при этом сначала вылезает окно ssh сессии, а только потом уже urxvt. Можно ли ssh окошко куда-либо упрятать?

    1. 777894ea5153122bfa6b83f5bbf23622 # 17 июля 2011 Леонид Шевцов (автор) написал:

      Для самого Xming есть утилита Run. Но еще проще использовать Xlaunch, или меню значка Xming.

      У меня rxvt в меню записан. Xmingrc приблизительно такой:

      MENU systray {
        Rxvt EXEC "plink -load host urxvt"
      }
      
      ROOTMENU systray
      
      1. B33f98ca2fc1fc8f76eca730a5c0a7d2 # 17 июля 2011 ko91h написал:

        Спасибо, помогло!

(нужна разметка?)

  • **жирный**
  • > цитата

отменить