воскресенье, 21 сентября 2014 г.

ubuntu в virtualbox

Состряпаем себе маленький мирок

из ubuntu server 14.04, VM virtualbox 4.3.14

К слову сказать я долго и упорно пытался поставить десктопную убунту, но у меня ничего не выходило даже после плясок с бубном. Вы будете смеяться, но или валился компиз или не получалось поставить дополнения для гостевой ОС. Поэтому решил попробовать хоть так)

Создание гостевой ОС

Если вы качнули новый диск, то вы можете его просто импортнуть, если это *.ova, либо придется его встраивать, как предустановленную систему, если это *.vdi. Тут могут возникнуть проблемы, связанные с тем, что вы встраиваете виртуальный диск в уже встроенную систему простым копированием файлов, но не тут то было: virtual box помнит все свои диски на основе хэша и вываливает такую ошибку:
Код ошибки: E_INVALIDARG (0x80070057)
Компонент: VirtualBoxWrap
Интерфейс: IVirtualBox {0169423f-46b4-cde9-91af-1e9d5b6cd945}
Код ошибки метода: VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)
Надо сначала удалить диск из под оболочки программы: VirtualBox → File → Virtual Media Manager. На вкладке Hard disks находим “сбойный” виртуальный жесткий диск и удаляем его

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

Настраиваем по скринам:
После на созданной машине настраиваем сеть: 1й адаптер я не трогал, зато добавил второй
Вообще это избыточное решение, но зато завелось сразу же. Обычно люди ставят нат, что бы быть полностью изолированными. Для обыденных вещей вполне подойдет подключение мост (bridged) и вот почему:
В соединении типа "Сетевой мост" виртуальная машина работает также, как и все остальные компьютеры в сети. В этом случае адаптер выступает в роли моста между виртуальной и физической сетями. Со стороны внешней сети имеется возможность напрямую соединяться с гостевой операционной системой 
После этого загрузился и попросил показать все интерфейсы
sudo ifconfig -a
Обратите внимание на ключ. Смотрим в консоль, ищем нужный адаптер по маку. А теперь правим 
sudo nano /etc/network/interfaces/
где мне нужно было пописать:
auto eth1
iface eth1 inet static
address 192.168.56.10
netmask 255.255.255.0
Сразу же можно дернуть
/etc/init.d/networking restart
а из под оси-хоста постучаться
ping 192.168.56.10
Все должно заработать с пол-пинка. В заключение делаем:
sudo apt-get install openssh-server
sudo shutdown -r now
Если же после всего проделанного, putty отвергает подключение, значит при перезагрузке слетели настройки сети и наго подправить или грохнуть правила в /etc/udev/rules.d/70-persistent-net.rules
Для простоты запуска и отстановки, создадим где-нибудь пару батников:
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm testbed --type headless
Этот запускает без интерфейса
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" controlvm "testbed" poweroff
Это соответственно завершает.

Настройка гостевой ОС

Отлично, теперь бы поставить гостевые настройки. Для серверной убунты все казалось бы просто нужно просто примонтировать
sudo mount /dev/cdrom /media/cdrom
файл (daemon-tool его можно отыскать тут С:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso) и запустить скрипт но у меня отвалилось из-за отсутствия зависимостей. Так и сказал:
Building the main Guest Additions module ...fail!
И далее выше по консоли. Но все просто:делаем 3 простых шага:
sudo apt-get install -y dkms build-essential linux-headers-generic linux-headers-$(uname -r)
sudo apt-get update --fix-missing # это если будут ошибки об установки gcc
sudo /media/cdrom/VBoxLinuxAdditions.run 
Отлично, у нас есть 5 минут на перекур.

Общие папки

Теперь настроим общие папки, думаю у вас как минимум должны быть директория  с проектами, иначе зачем вы все это затеяли? У меня это proj, который я указал в настройках виртуальной машины. Там же в интерфейсе дал ей название projs от избытка фантазии. Теперь смело можно сделать:
sudo gpasswd -a mcgr0g vboxsf
sudo mount -t vboxsf proj ~/proj/
Крутота, но стоит еще прописать в автозагрузке `/etc/rc.local`:
mount -t vboxsf -o rw,uid=1000,gid=1000 proj /home/mcgr0g/proj
И после запуска системы папка примонтируется к пользователю, а не к руту ( как если бы было ~/proj).

Проблемы при монтировании

Следует обратить внимание на то, что в скрипте автозагрузки не надо ставить закрывающий слэш.
Так же если расшаренный каталог постоянно монтируется в `/media/sf_share/`, а не в нужную вам директорию, то стоит проверить настройки на хост-системе:


Напоследок

Ну а напоследок можно поставить веб-шелл, все равно это тестовая коробочка.
зато при любом удобном случае всегда можно проверить идею.