Vagrant: Difference between revisions

From OSDev.wiki
Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content added Content deleted
(Start page)
 
(Add an example)
Line 1: Line 1:
Vagrant puts standard operating system installs into a container. Vagrant integrates with either VMWare or VirtualBox. Then when a container is downloaded and run for the first time vagrant will perform actions specified in your Vagrantfile. In this way development environments can be easily shared. Once the virtual machine created from the container is started with Vagrant. Vagrant will automatically start an ssh session. The folder in which you start Vagrant has to contain a Vagrantfile. This folder will also be shared with the virtual machine.
Vagrant puts standard operating system installs into a container. Vagrant integrates with either VMWare or VirtualBox. Then when a container is downloaded and run for the first time vagrant will perform actions specified in your Vagrantfile. In this way development environments can be easily shared. Once the virtual machine created from the container is started with Vagrant. Vagrant will automatically start an ssh session. The folder in which you start Vagrant has to contain a Vagrantfile. This folder will also be shared with the virtual machine.


== Example ==
<code>
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty32"
config.vm.provision "shell", inline: <<-SHELL
sudo apt-get update
sudo apt-get install -y libgmp3-dev libmpfr-dev libisl-dev libcloog-isl-dev libmpc-dev texinfo make bison flex gcc g++ nasm build-essential grub qemu zip xorriso
sudo export PREFIX="/opt/cross"
sudo export TARGET=i686-elf
sudo export PATH="$PREFIX/bin:$PATH"
sudo mkdir /tmp/
sudo mkdir /tmp/build
sudo cd /tmp/build
sudo wget -O binutils.tar.gz http://ftp.gnu.org/gnu/binutils/binutils-2.25.tar.gz
sudo tar -xf binutils.tar.gz
sudo cd binutils-2.25
sudo mkdir build-binutils
sudo cd build-binutils
sudo ../configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror
sudo make
sudo make install
sudo cd ../..
sudo rm -r binutils-2.25
sudo wget -O gcc.tar.gz http://ftp.gnu.org/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.gz
sudo tar -xf gcc.tar.gz
sudo cd gcc-4.9.2
sudo mkdir build-gcc
sudo cd build-gcc
sudo ../configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers
sudo make all-gcc
sudo make all-target-libgcc
sudo make install-gcc
sudo make install-target-libgcc
sudo rm -rf /tmp/build
SHELL
end
</code>
This example Vagrantfile will download a Ubuntu 32bit container and install a i686-elf-gcc cross compiler. It will also download several other tools usefull for operating system development.

Revision as of 12:11, 13 November 2015

Vagrant puts standard operating system installs into a container. Vagrant integrates with either VMWare or VirtualBox. Then when a container is downloaded and run for the first time vagrant will perform actions specified in your Vagrantfile. In this way development environments can be easily shared. Once the virtual machine created from the container is started with Vagrant. Vagrant will automatically start an ssh session. The folder in which you start Vagrant has to contain a Vagrantfile. This folder will also be shared with the virtual machine.


Example

  1. -*- mode: ruby -*-
  2. vi: set ft=ruby :

Vagrant.configure(2) do |config|

 config.vm.box = "ubuntu/trusty32"
 config.vm.provision "shell", inline: <<-SHELL
   sudo apt-get update
   sudo apt-get install -y libgmp3-dev libmpfr-dev libisl-dev libcloog-isl-dev libmpc-dev texinfo make bison flex gcc g++ nasm build-essential grub qemu zip xorriso
   sudo export PREFIX="/opt/cross"
   sudo export TARGET=i686-elf
   sudo export PATH="$PREFIX/bin:$PATH"
   sudo mkdir /tmp/
   sudo mkdir /tmp/build
   sudo cd /tmp/build
   sudo wget -O binutils.tar.gz http://ftp.gnu.org/gnu/binutils/binutils-2.25.tar.gz
   sudo tar -xf binutils.tar.gz
   sudo cd binutils-2.25
   sudo mkdir build-binutils
   sudo cd build-binutils
   sudo ../configure --target=$TARGET --prefix="$PREFIX" --with-sysroot --disable-nls --disable-werror
   sudo make
   sudo make install
   sudo cd ../..
   sudo rm -r binutils-2.25
   sudo wget -O gcc.tar.gz http://ftp.gnu.org/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.gz
   sudo tar -xf gcc.tar.gz
   sudo cd gcc-4.9.2
   sudo mkdir build-gcc
   sudo cd build-gcc
   sudo ../configure --target=$TARGET --prefix="$PREFIX" --disable-nls --enable-languages=c,c++ --without-headers
   sudo make all-gcc
   sudo make all-target-libgcc
   sudo make install-gcc
   sudo make install-target-libgcc
   sudo rm -rf /tmp/build
 SHELL

end This example Vagrantfile will download a Ubuntu 32bit container and install a i686-elf-gcc cross compiler. It will also download several other tools usefull for operating system development.