---
title: Создаём виртуальный образ ОС для среды разработки
date: 2016-09-29T10:00
tags: [backend]
---

В качестве основы, будем использовать CentOS 6.5

- Устанавливаем последние Virtualbox и [Vagrant](https://www.vagrantup.com/downloads.html)
- Создаём новую виртуалку в virtualbox на основе федоры, поставив 2ГБ RAM и 20 GB под жёсткий диск
- Скачиваем CentOS-6.5-x86_64-LiveCD.iso с [http://mirror.nsc.liu.se/centos-store/6.5/isos/x86_64/](http://mirror.nsc.liu.se/centos-store/6.5/isos/x86_64/). Он включает мгновенный бут (загрузчик), recovery и установку
- Ставим root'у пароль vagrant (потом сменить можно)
- Добавляем стандартного пользователя vagrant:vagrant

Обновляем систему:

  

```
#dont update unless you want CentOS 6.8 upgrade
#yum update -y

#install basic tools
yum install -y htop nano

#reboot for kernel updates to take place
shutdown -r now
```

Систему надо [настроить для вагранта](https://blog.engineyard.com/2014/building-a-vagrant-box), если мы хотим её автоматически выкатывать под разные проекты..

Сначала - настроить пользователя

```
sudo visudo -f /etc/sudoers.d/vagrant
#adding to this file:
vagrant ALL(ALL) NOPASSWD:ALL

#setup vagrant public key access
mkdir -p /home/vagrant/.ssh
chmod 0700 /home/vagrant/.ssh
wget --no-check-certificate \
    https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub \
    -O /home/vagrant/.ssh/authorized_keys
chmod 0600 /home/vagrant/.ssh/authorized_keys
chown -R vagrant /home/vagrant/.ssh

nano /etc/ssh/sshd_config
#uncomment  AuthorizedKeysFile %h/.ssh/authorized_keys

#enable public key authentication
service sshd restart

#start ssh on reboot
chkconfig sshd on

visudo #comment out requiretty option
```

Теперь для вагранта нужны Guest Additions. Это iso файл который у virtual box'а уже есть. Надо смонтировать его на диск и запустить установку пакетов

```
yum install -y gcc build-essential perl kernel-devel

#mount VBoxGuestAdditions.iso on CD in Virtualbox and run these:
sudo mount /dev/cdrom /mnt 
cd /mnt
sudo ./VBoxLinuxAdditions.run

echo export KERN_DIR=/usr/src/kernels/`uname -r`/ >> ~/.bashrc
```

Теперь, у вас вероятно стоит надстройка для безопасности - SELinux. Если вы будете разрабатывать локально, то лучше его отключить

```
setenforce Permissive
nano /etc/sysconfig/selinux
#set to:
#SELINUX=disabled
```

Теперь когда всё готово, выходим из виртуалки и упаковываем её для vagrant'а. Для этого надо зайти в папку где лежит виртуалка и запустить комманду которая сгенерит package.box файлик на который в дальнейшем будет ссылаться Vagrantfile в нашем проекте:

```
#package box and move it to desktop
vagrant package --base CentosEmpty && mv package.box ~/Desktop/

#clean vagrant cache
vagrant global-status --prune

#cd to your project that references new box from desktop
vagrant up
```

См также:

[http://williamwalker.me/blog/creating-a-custom-vagrant-box.html](http://williamwalker.me/blog/creating-a-custom-vagrant-box.html)  
[https://www.vagrantup.com/docs/boxes/base.html](https://www.vagrantup.com/docs/boxes/base.html)  
[http://aruizca.com/steps-to-create-a-vagrant-base-box-with-ubuntu-14-04-desktop-gui-and-virtualbox/](http://aruizca.com/steps-to-create-a-vagrant-base-box-with-ubuntu-14-04-desktop-gui-and-virtualbox/)[](https://stefanwrobel.com/how-to-make-vagrant-performance-not-suck)  
[https://stefanwrobel.com/how-to-make-vagrant-performance-not-suck](https://stefanwrobel.com/how-to-make-vagrant-performance-not-suck)  
  
[http://unix.stackexchange.com/questions/18435/how-to-install-virtualbox-guest-additions-on-centos-via-command-line-only](http://unix.stackexchange.com/questions/18435/how-to-install-virtualbox-guest-additions-on-centos-via-command-line-only)

## Related

- [Alter sequence](/ru/blog/tech/backend/DB/postgres/alter-sequence/)
- [Amazon S3 direct upload](/ru/blog/tech/backend/amazon-s3-direct-upload/)
- [CUDA](/ru/blog/tech/backend/gpu/cuda/)
