На этот раз всё на порядок проще :) Просто пришлось подымать на работе физический сервер внутри корп сети и я обрел некий новый экспириенс :) Итак. На этот раз устроим всё через сетевой мост. Без ната и виртуалхост адаптера.
Описываем как обстоят дела:
Windows 7 - host OS
UBUNTU 9.04 - guest OS (естественно в VirtualBox, на примере версии 3.0.8)
Host OS ходит в сеть через вайфай, соответственно у роутера ip 192.168.1.1
Какой ип у host OS по большому счету пофиг.
Надо:
Вытащить guest OS в интернет и одновременно лок сеть, то есть видеть по сети host OS.
Как:
Ржака. Как два пальца. Создаем одно соединение в свойствах машины, вот такое:
вот он bridged adapter
Так. Обратите внимание, выбран беспроводной адаптер, то есть тот который у меня ходит в сеть по вайфаю, вообще у меня их два, есть ещё простая езернет сетевуха.
Мораль: надо выбрать тот адаптер который на самом деле ходит в сеть.
Теперь идем в /etc/network/interfaces и пишем там:
auto eth4 iface eth4 inet static address 192.168.1.3 netmask 255.255.255.0 gateway 192.168.1.1
Почему eth4? Потому что гладиолус. Чтобы узнать что у вас смотрим dmesg | grep eth
Далее, в /etc/resolv.conf дописываем:
nameserver 192.168.1.1
Кто не понял - это тот же ip шлюза. В общем-то и всё. Теперь как обычно /etc/init.d/networking restart и в бой :)
Как как.. ну в мануале всё написано. Сначала как ни выкручивайся надо поставить Virtual Box Guest Additions. У меня нету оконного менеджера на девзоне, поэтому у меня были небольшие заморочки с этим. Ну,.. условно заморочки. Хост система - Windows 7, гостевая - Ubuntu 9.04 (32bit). Как было дело:
- Devices -> Mount CD/DVD-ROM -> CD/DVD-ROM Image
- Выбираем VBoxGuestAdditions.iso (лежит в папке с виртуалбоксом)
-
sudo mount /media/cdrom0 cd /media/cdrom0 ls -la
Видим в списке файлик VBoxLinuxAdditions-x86.run (autorun.sh не заработает, потому что хочет gksudo, а иксов нету) - Запускаем инсталятор дополнений руками
sudo sh ./VBoxLinuxAdditions-x86.run
И нифига не выходит потому что не установлен make, не установлены исходники ядра и ещё какая-то лабуда. Решаем эти проблемы при помощи гугла, kernel headers ставятся такsudo apt-get update apt-cache search linux-headers-$(uname -r) sudo apt-get install linux-headers-$(uname -r)
Дальше всё что надо и не ставится идем в гугл и читаем как поставить. Всё тривиально, apt-get-ом. Эту итерацию выполняем до победы, пока установка дополнений не пройдет до конца без ошибок (ну, кроме матюгов по поводу того, что не установлены дополнения для иксов, а у нас их и нема, если консоль только, так что это не важно). - Теперь, когда гостевые дополнения установлены делаем
lsmod | grep vbox modprobe vboxvfs # если lsmod не сказал что есть такое слово.
То есть на этом этапе мы должны убедиться что дополнения установлены и модуль vboxvfs запущен. vboxvfs == VirtualBox Virtual File System видимо - Теперь идем Devices -> Shared Folders и добавляем там папку с локального диска для того чтобы расшарить её с гостевой ОС. Выбираем папку которую хотим расшарить, имя шары для VirtualBox и тип доступа. Таким образом VirtualBox будет видеть эту шару по имени которое прописано в колонке Name (см рисунок). Причем клиент ОС видит новую шару сразу, без всяких перезагрузок.
- Теперь нашу шару надо подключить.
cd ~ mkdir my_shared sudo mount.vboxsf virtbox_shared my_shared
Таким образом мы прицепим шару с хост ОС E:\projects\virtbox_shared к папке ~\my_shared на гостевой ОС (см. рисунок). Дальше можно прописать это в fstab (virtbox_shared /home/ijin/my_shared vboxsf defaults 0 0) и бла-бла-бла, уже понятно. Ну вот. И вся любовь. Целостностью файловых систем озадачивается VirtualBox и я склонен ему доверять. Шара с вирт машиной - удобная штука. По идее можно вообще локально держать софт а выполнять на виртуальной машине если грамотно структуру проекта разложить. Там конечно, как всегда есть свои нюансы, но это уже отдельная история.
это список shared folders для VirtualBox
Ад. По сравнению с VMWare. Странно но в Vista всё работало и в третьем VirtualBox-е. Здесь же речь пойдет о VirtualBox 2.2 С третьим под WinXP я как ни мучался - ничего у меня не вышло. Под вистой тройка взлетает без проблем. Итого, задача: есть Ubuntu Server как клиент ОС и WinXP как сервер ОС. Необходимо чтобы ось клиент ходила в интернет без проблем, видела машины в локальной сети и машины из локальной сети могли до неё достучаться. В моем случае расклад такой: есть wifi-роутер который раздает ипы для клиентов в диапазоне 192.168.1.2\254, сам он 192.168.1.1 понятно. Есть ноут, его ип - 2. На нем WinXP и VirtualBox с Ubuntu. Надо всю эту братию подружить. Ставится виртбокс без особых проблем, но с большим количеством воплей про то что это ПО не тестировалось на совместимость с WinXP (кстати в примере речь идет о WinXP SP3). Вопли игнорируем, виртбокс ставим. Поднимаем в нем Ubuntu. Добираемся до сетевых дел. Идем в настройки сети (для этого виртуальную машину надо остановить). Там устанавливаем два сетевых адаптера вот таким вот образом:
этот адаптер у нас будет смотреть в интернет, внешний мир а это тот самй пресловутый мост из VirtualBox Bridged Networking DriverВот так вот. Вроде проще некуда. Казалось бы. Дальше запускаем виртуальную машину и топаем в настройки сети. По умолчанию соединение которое создал VirtualBox (VirtualBox Host-Only Network) у меня было с адресом 192.168.56.1, менять его я не стал, но вообще уверен что изменить его совсем не проблемно. Идем править интерфейсы в /etc/networking/interfaces (кстати, на всякий случай про положение адаптеров можно почитать вот так dmesg | grep eth) Выглядеть интерфейсы после настройки у меня стали примерно так:
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth2 iface eth2 inet dhcp auto eth3 iface eth3 inet static address 192.168.56.10 netmask 255.255.255.0Пояснять тут в общем-то нечего. Разве что ip виртуалки в локальной сети зафиксировался на 10-м номере. Дальше перезапускаем сеть и всё. В общем-то всё очень просто. Но я честно уже не раз это делаю и всё равно забываю постоянно, что и как должно быть. Может теперь запомню :)
это финал после нехитрых sudo ifconfig eth2 up sudo ifconfig eth3 up sudo /etc/init.d/networking restartВот и всё. Ставим LAMP и девелопим в своё удовольствие в условиях значительно приближенных к боевым. Кстати мы при этом ничего не украли, софт-то свободный :) Приятного программирования.
Случилась тут такая фигня. Выделил я под виртуальную машину всего ничего - 8Гб. И жил там себе и радовался. А тут на тебе, работы как привалило и внезапно я ощутил боль от такого вот опрометчивого шага. А сам VirtualBox как-то не разрешает динамически взять так и хопа сделать виртуальный хард больше. Оно и понятно, гостевая операционка с ума сойдет от таких поворотов. И решил я создать ещё один виртуальный хард и присоединить его к своей виртуалке и всё самое толстое (своё барахло по работе, базы мускульные, тонны дампов софта и тп лабудень) перенести на этот новый хард. Ну вот отрезал я значит ещё 20Гб, перезапустил виртуалку ии.. Само собой ничего автоматом не подхватилось. Поскольку в настройке линукса я новичек практически, пошел я гуглить. Ну и нагуглил ссылочку раз (как прицепить новый хард) и ссылочку два (как его отформатировать). В общем очень интересно было покрутить мозгами в ночи и постучать в бубен чуток :) Вот что примерно пришлось проделать.
sudo fdisk -l /* хм.. диск есть в системе. это круто. но на нем непонятная файловая система и нету разделов. кстати разделы можно посмотреть командой ls /dev/disk/by-uuid например, там ещё можно по-другому поглядеть, смотрим ls /dev/disk/ ну чо дальше.. ну думаю форматну-ка я его. */ sudo mkfs.ext3 /dev/sdb sudo fdisk -l /* о, круто, больше на разметку диска не ругается теперь значит можно раздел создать (я наоборот сделал, надо было сначала раздел а потом форматировать, но и так тоже работает как ни странно) */ sudo fdisk /dev/sdb /* тут мастер меня поспрашивал чего я хочу, я захотел один первичный раздел со всеми дефолтными настройками */ sudo fdisk -l /* ну что, всё круто. никаких матюгов уже не видно. премонтировать чтоли надо теперь. */ cd /home sudo mkdir disk2 sudo mount /dev/sdb /home/diks2 cd /home/disk2 ls -la /* ура. примонтировано. lost+found папку видно. отлично. ну теперь вроде как всё просто. надо дать себе на эту папку прав, бросить линк на неё в хомяк для удобства (моего) и радостно переложить туда всё своё барахло. */ sudo mkdir web sudo chown ijin:ijin web cd ~ ln -s /home/disk2/web /* во. теперь /home/ijin/web -> /home/disk2/web всё. в конфигах апача поправил пути ну и всё. смотрю свободное место.. */ df -h /* и вижу что на первом диске весь этот секс освободил мне каких-то 800 МБ всего-то. так, думаю.. вот хренота. ещё пару жирненьких дампов в БД волью и привет. Надож как-то всё жирное унести .. минут 5 пытаюсь руками найти где лежат мускульные базы. ищу вручную найти не могу. вспоминаю про волшебную утилитку du. делаю значит.. */ cd / sudo du -h | grep mysql /* rem: sudo - чтобы ходить по всем-всем папкам, даже тем в которые у моего юзера нет доступа. и вижу ацкий поток строк. смотрю на строчки которые du отдает (хорошо уже глазки привыкли на всё подряд регулярные выражения примерять :) и вижу, что указанный размер в Гб можно легко выловить из этого потока шлака. у grep есть клёви ключик -r, который позволяет не тупо искать подстроку а искать строчку совпадающую с регулярным выражением. */ cd / sudo du -h | grep -r .*G.*mysql.* /* и вот они искомые обожравшиеся папки :) везение конечно чистой воды, наверняка есть способ проще узнать где лежат мускульные базы, или просто нефигово бы знать где они лежат.. но в общем вот так вот при помощи кувалды и какой-то матери :) пришли к нужному результату. как говорил товарищ Христос "ищите и обрящите" (с) =) */ /* теперь наверное осталось закрепить успех в /etc/fstab для чего исполняем */ sudo mcedit /etc/fstab /* и в нем по аналогии с "UUID=бебебе / бебебе" (это подключение основного раздела первого диска по UUID я так понимаю) прописываем /dev/sdb /home/disk2 бебебе как в оригинальной строке хвост про ext3 и ещё какая-то "лабуда" это надо затем чтобы после каждой перезагрузки не приходилось обламываться от того что второй диск не подключен и при загрузке демоны которые с него почитать хотят страшными словами ругаются, кроме того.. ну к нему тупо не будет доступа пока не скажешь */ sudo mount /dev/sdb /home/disk2 /* в общем вот так должно быть примерно в фстабе */Ну дальше понятно, упер базы на другой диск. Вот такая вот карусель. Чем больше калупаюсь с линуксом тем больше он мне нравится. Там всё можно сделать миллионом разных способов. Границ практически нет. Космические знания не нужны - под рукой всегда есть man и гугл. Только желание по сути. Я ещё хотел как-то написать про настройку сети в VirtualBox при том что ноут у меня ходит в сеть не по проводу, а через вайфай роутер, и одним коннектом на инет не обойтись, так как при таком раскледе на виртуалку не зайти, и надо было ещё один сетевой интерфейс поднимать, но это.. как говорится, совсем другая история :) Удачи вам. In byte we trust ;)
P.P.S.: да, при переносе баз в другое место я огреб уже известную с 8.04 проблему с apparmor. Фиксится это просто:
sudo mcedit /etc/apparmor.d/usr.sbin.mysqld # меняем путь в строках # /var/lib/mysql/ r, # /var/lib/mysql/** rwk, # на свой # /home/disk2/mysql_db/ r, # /home/disk2/mysql_db/** rwk, sudo /etc/init.d/apparmor restart sudo /etc/init.d/mysql restart # взлёт. 5 минут полет нормальный. =) # права на папки 755, на файлы 660 # пользователь и группа на всё mysql:mysql