diff mbox

support/misc: Adding Vagrant file for provisioning

Message ID 1442471204-8305-1-git-send-email-angelo.compagnucci@gmail.com
State Superseded
Headers show

Commit Message

Angelo Compagnucci Sept. 17, 2015, 6:26 a.m. UTC
This patch adds a Vagrant file to buildroot. With this file
you can provision a complete buildroot developing environment
in minutes on all major platforms (Linux/Mac/Windows).

Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
---
Changelog:

* Upgraded windows one liner to be compatible with all
  powershell versions
* Added a link to Vagrant homepage in doc and website

RFC

v2->v3:
* Downloading latest buildroot version only on first run
* Better handling of machine name and options

v1->v2:
* Autodetecting of latest buildroot version from CHANGES file.
* Better documentation


 docs/manual/getting.txt    | 14 +++++++++++++
 docs/website/download.html | 17 ++++++++++++++++
 support/misc/Vagrantfile   | 51 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 82 insertions(+)
 create mode 100644 support/misc/Vagrantfile

Comments

Arnout Vandecappelle Sept. 20, 2015, 9:18 p.m. UTC | #1
On 17-09-15 08:26, Angelo Compagnucci wrote:
> This patch adds a Vagrant file to buildroot. With this file
> you can provision a complete buildroot developing environment
> in minutes on all major platforms (Linux/Mac/Windows).
> 
> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
[snip]
> diff --git a/support/misc/Vagrantfile b/support/misc/Vagrantfile
> new file mode 100644
> index 0000000..2d9151b
> --- /dev/null
> +++ b/support/misc/Vagrantfile
> @@ -0,0 +1,51 @@
> +################################################################################
> +#
> +# Vagrantfile
> +#
> +################################################################################
> +
> +### Change here for more memory/cores ###
> +VM_MEMORY=1024
> +VM_CORES=1

 Do we need to do that? And if we do, shouldn't it be higher? 1GB will not allow
you to build v8 and all its derivatives (webkit, webengine).

> +
> +Vagrant.configure('2') do |config|
> +	config.vm.box = 'ubuntu/trusty64'

 Is there a way to make it match the host, i.e. run a 32-bit system on a 32-bit
host?

> +
> +	config.vm.provider :vmware_fusion do |v, override|
> +		v.vmx['memsize'] = VM_MEMORY
> +		v.vmx['numvcpus'] = VM_CORES
> +	end
> +
> +	config.vm.provider :virtualbox do |v, override|
> +		v.customize ['modifyvm', :id, '--memory', VM_MEMORY]
> +		v.customize ['modifyvm', :id, '--cpus', VM_CORES]
> +	end
> +
> +	config.vm.provision 'shell' do |s|
> +		s.inline = 'echo Setting up machine name'
> +
> +		require 'open-uri'
> +		open('http://git.buildroot.net/buildroot/plain/CHANGES') do |f|
> +			$buildroot_version=f.read.lines.first.split(',')[0]

 That's not at all reliable, this version will for instance change to an rc just
before a release. And for instance the 2015.08.1 is not in master's CHANGES.

 I think it's better if we add a buildroot-latest.tar.bz2 symlink to the
downloads directory, then we can just use that.

 Failing that, it's better to scrape it from http://buildroot.org/download.html

> +		end
> +
> +		config.vm.provider :vmware_fusion do |v, override|
> +			v.vmx['displayname'] = "Buildroot #{$buildroot_version}"
> +		end
> +
> +		config.vm.provider :virtualbox do |v, override|
> +			v.customize ['modifyvm', :id, '--name', "Buildroot #{$buildroot_version}"]
> +		end
> +	end
> +
> +	config.vm.provision 'shell', inline:
> +		"sudo apt-get -q update
> +		sudo apt-get -q -y install build-essential libncurses5-dev \
> +			git bzr cvs mercurial subversion

 I would also include libqt4-dev for xconfig, and the dependencies for the
manual and for the graphs: asciidoc, w3m, dblatex, graphviz, python,
python-matplotlib. And rsync, is that included by default?


 Regards,
 Arnout

> +		sudo apt-get -q -y autoremove"
> +
> +	config.vm.provision 'shell', privileged: false, inline:
> +		"echo 'Downloading and extracting buildroot #{$buildroot_version}'
> +		wget -q -c http://buildroot.org/downloads/buildroot-#{$buildroot_version}.tar.gz
> +		tar axf buildroot-#{$buildroot_version}.tar.gz"
> +end
>
Angelo Compagnucci Sept. 21, 2015, 6:19 a.m. UTC | #2
Dear Arnout Vandecappelle,


2015-09-20 23:18 GMT+02:00 Arnout Vandecappelle <arnout@mind.be>:
> On 17-09-15 08:26, Angelo Compagnucci wrote:
>> This patch adds a Vagrant file to buildroot. With this file
>> you can provision a complete buildroot developing environment
>> in minutes on all major platforms (Linux/Mac/Windows).
>>
>> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
> [snip]
>> diff --git a/support/misc/Vagrantfile b/support/misc/Vagrantfile
>> new file mode 100644
>> index 0000000..2d9151b
>> --- /dev/null
>> +++ b/support/misc/Vagrantfile
>> @@ -0,0 +1,51 @@
>> +################################################################################
>> +#
>> +# Vagrantfile
>> +#
>> +################################################################################
>> +
>> +### Change here for more memory/cores ###
>> +VM_MEMORY=1024
>> +VM_CORES=1
>
>  Do we need to do that? And if we do, shouldn't it be higher? 1GB will not allow
> you to build v8 and all its derivatives (webkit, webengine).

Nope. Raising this numbers means freezing the machine of a user with a
low end laptop. Probably we could add some notes on the documentation,
but Vagrant has it's own documentation and this is the standard de
facto way to set memory/cores of a vagrant VM. This file should be a
starting point for people wanting to try buildroot and not a one shop
stop for all their problems.

>> +
>> +Vagrant.configure('2') do |config|
>> +     config.vm.box = 'ubuntu/trusty64'
>
>  Is there a way to make it match the host, i.e. run a 32-bit system on a 32-bit
> host?

Honestly I don't think there are 32bit cpus which could run Buildroot
compilation inside a VM. For me no problem here, all the cpus with
virt instructions are 64bits and therefore could run a 64bit host.

>> +     config.vm.provider :vmware_fusion do |v, override|
>> +             v.vmx['memsize'] = VM_MEMORY
>> +             v.vmx['numvcpus'] = VM_CORES
>> +     end
>> +
>> +     config.vm.provider :virtualbox do |v, override|
>> +             v.customize ['modifyvm', :id, '--memory', VM_MEMORY]
>> +             v.customize ['modifyvm', :id, '--cpus', VM_CORES]
>> +     end
>> +
>> +     config.vm.provision 'shell' do |s|
>> +             s.inline = 'echo Setting up machine name'
>> +
>> +             require 'open-uri'
>> +             open('http://git.buildroot.net/buildroot/plain/CHANGES') do |f|
>> +                     $buildroot_version=f.read.lines.first.split(',')[0]
>
>  That's not at all reliable, this version will for instance change to an rc just
> before a release. And for instance the 2015.08.1 is not in master's CHANGES.
>
>  I think it's better if we add a buildroot-latest.tar.bz2 symlink to the
> downloads directory, then we can just use that.

Of course! I falled back to this method cause I cannot find find a
more reliable one.

>  Failing that, it's better to scrape it from http://buildroot.org/download.html

It's really strange that there is not an easy way to get the builroot
version string easily.

>> +             end
>> +
>> +             config.vm.provider :vmware_fusion do |v, override|
>> +                     v.vmx['displayname'] = "Buildroot #{$buildroot_version}"
>> +             end
>> +
>> +             config.vm.provider :virtualbox do |v, override|
>> +                     v.customize ['modifyvm', :id, '--name', "Buildroot #{$buildroot_version}"]
>> +             end
>> +     end
>> +
>> +     config.vm.provision 'shell', inline:
>> +             "sudo apt-get -q update
>> +             sudo apt-get -q -y install build-essential libncurses5-dev \
>> +                     git bzr cvs mercurial subversion
>
>  I would also include libqt4-dev for xconfig,

Why? On windows there is not an X server to run the ssh x forwarding
and the dependencies are really big ones. Nobody stops you to install
them manually, it's an Ubuntu after all!

> and the dependencies for the
> manual and for the graphs: asciidoc, w3m, dblatex, graphviz, python,
> python-matplotlib.

Do you think we should force users to download a complete tex
distribution only for compiling docs? As stated before users could
install themselves if needed.

I prefer having a vagrant up setup time as small as possible to be
operative as soon as possible!

> And rsync, is that included by default?

Yes, it's included in Ubuntu.

Sincerely, Angelo.

>
>
>  Regards,
>  Arnout
>
>> +             sudo apt-get -q -y autoremove"
>> +
>> +     config.vm.provision 'shell', privileged: false, inline:
>> +             "echo 'Downloading and extracting buildroot #{$buildroot_version}'
>> +             wget -q -c http://buildroot.org/downloads/buildroot-#{$buildroot_version}.tar.gz
>> +             tar axf buildroot-#{$buildroot_version}.tar.gz"
>> +end
>>
>
>
> --
> Arnout Vandecappelle                          arnout at mind be
> Senior Embedded Software Architect            +32-16-286500
> Essensium/Mind                                http://www.mind.be
> G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
> GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
Arnout Vandecappelle Sept. 21, 2015, 4:57 p.m. UTC | #3
On 21-09-15 08:19, Angelo Compagnucci wrote:
> Dear Arnout Vandecappelle,
> 
> 
> 2015-09-20 23:18 GMT+02:00 Arnout Vandecappelle <arnout@mind.be>:
>> On 17-09-15 08:26, Angelo Compagnucci wrote:
>>> This patch adds a Vagrant file to buildroot. With this file
>>> you can provision a complete buildroot developing environment
>>> in minutes on all major platforms (Linux/Mac/Windows).
>>>
>>> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
>> [snip]
>>> diff --git a/support/misc/Vagrantfile b/support/misc/Vagrantfile
>>> new file mode 100644
>>> index 0000000..2d9151b
>>> --- /dev/null
>>> +++ b/support/misc/Vagrantfile
>>> @@ -0,0 +1,51 @@
>>> +################################################################################
>>> +#
>>> +# Vagrantfile
>>> +#
>>> +################################################################################
>>> +
>>> +### Change here for more memory/cores ###
>>> +VM_MEMORY=1024
>>> +VM_CORES=1
>>
>>  Do we need to do that? And if we do, shouldn't it be higher? 1GB will not allow
>> you to build v8 and all its derivatives (webkit, webengine).
> 
> Nope. Raising this numbers means freezing the machine of a user with a
> low end laptop.

 Fair enough.

> Probably we could add some notes on the documentation,
> but Vagrant has it's own documentation and this is the standard de
> facto way to set memory/cores of a vagrant VM. This file should be a
> starting point for people wanting to try buildroot and not a one shop
> stop for all their problems.
> 
>>> +
>>> +Vagrant.configure('2') do |config|
>>> +     config.vm.box = 'ubuntu/trusty64'
>>
>>  Is there a way to make it match the host, i.e. run a 32-bit system on a 32-bit
>> host?
> 
> Honestly I don't think there are 32bit cpus which could run Buildroot
> compilation inside a VM. For me no problem here, all the cpus with
> virt instructions are 64bits and therefore could run a 64bit host.

 It's not for 32-bit CPUs, it's for 64-bit hardware running 32-bit OS.

 Though of course you're right, the VM can still run a 64-bit OS.

> 
>>> +     config.vm.provider :vmware_fusion do |v, override|
>>> +             v.vmx['memsize'] = VM_MEMORY
>>> +             v.vmx['numvcpus'] = VM_CORES
>>> +     end
>>> +
>>> +     config.vm.provider :virtualbox do |v, override|
>>> +             v.customize ['modifyvm', :id, '--memory', VM_MEMORY]
>>> +             v.customize ['modifyvm', :id, '--cpus', VM_CORES]
>>> +     end
>>> +
>>> +     config.vm.provision 'shell' do |s|
>>> +             s.inline = 'echo Setting up machine name'
>>> +
>>> +             require 'open-uri'
>>> +             open('http://git.buildroot.net/buildroot/plain/CHANGES') do |f|
>>> +                     $buildroot_version=f.read.lines.first.split(',')[0]
>>
>>  That's not at all reliable, this version will for instance change to an rc just
>> before a release. And for instance the 2015.08.1 is not in master's CHANGES.
>>
>>  I think it's better if we add a buildroot-latest.tar.bz2 symlink to the
>> downloads directory, then we can just use that.
> 
> Of course! I falled back to this method cause I cannot find find a
> more reliable one.
> 
>>  Failing that, it's better to scrape it from http://buildroot.org/download.html
> 
> It's really strange that there is not an easy way to get the builroot
> version string easily.

 Well, the easy way would be

sed -n '/^export BR2_VERSION := /s///p' Makefile

but it's just a bad idea to take the latest git version as a basis of finding
the 'current' version of buildroot.

 You could also take the latest tag:

git tag -l | grep '^20[0-9][0-9]\.[0-9][0-9]\.[0-9.]*' | sort -n | tail -1

 But overall, I think scraping from the website makes the most sense. Or even
better would be if the current version was recorded somewhere in a file that is
used with SSI in downloads.html

> 
>>> +             end
>>> +
>>> +             config.vm.provider :vmware_fusion do |v, override|
>>> +                     v.vmx['displayname'] = "Buildroot #{$buildroot_version}"
>>> +             end
>>> +
>>> +             config.vm.provider :virtualbox do |v, override|
>>> +                     v.customize ['modifyvm', :id, '--name', "Buildroot #{$buildroot_version}"]
>>> +             end
>>> +     end
>>> +
>>> +     config.vm.provision 'shell', inline:
>>> +             "sudo apt-get -q update
>>> +             sudo apt-get -q -y install build-essential libncurses5-dev \
>>> +                     git bzr cvs mercurial subversion
>>
>>  I would also include libqt4-dev for xconfig,
> 
> Why? On windows there is not an X server to run the ssh x forwarding
> and the dependencies are really big ones. Nobody stops you to install
> them manually, it's an Ubuntu after all!
> 
>> and the dependencies for the
>> manual and for the graphs: asciidoc, w3m, dblatex, graphviz, python,
>> python-matplotlib.
> 
> Do you think we should force users to download a complete tex
> distribution only for compiling docs? As stated before users could
> install themselves if needed.
> 
> I prefer having a vagrant up setup time as small as possible to be
> operative as soon as possible!

 Okay.

 One more thing I would add though: the 32-bit compatibility libraries needed
for Sourcery toolchains. It's not that heavy and a bit tricky to find the right
ones.


 Regards,
 Arnout

> 
>> And rsync, is that included by default?
> 
> Yes, it's included in Ubuntu.
> 
> Sincerely, Angelo.
> 
>>
>>
>>  Regards,
>>  Arnout
>>
>>> +             sudo apt-get -q -y autoremove"
>>> +
>>> +     config.vm.provision 'shell', privileged: false, inline:
>>> +             "echo 'Downloading and extracting buildroot #{$buildroot_version}'
>>> +             wget -q -c http://buildroot.org/downloads/buildroot-#{$buildroot_version}.tar.gz
>>> +             tar axf buildroot-#{$buildroot_version}.tar.gz"
>>> +end
>>>
>>
>>
>> --
>> Arnout Vandecappelle                          arnout at mind be
>> Senior Embedded Software Architect            +32-16-286500
>> Essensium/Mind                                http://www.mind.be
>> G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
>> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
>> GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
> 
> 
>
Angelo Compagnucci Sept. 21, 2015, 7:59 p.m. UTC | #4
Dear Arnout Vandecappelle,

2015-09-21 18:57 GMT+02:00 Arnout Vandecappelle <arnout@mind.be>:
> On 21-09-15 08:19, Angelo Compagnucci wrote:
>> Dear Arnout Vandecappelle,
>>
>>
>> 2015-09-20 23:18 GMT+02:00 Arnout Vandecappelle <arnout@mind.be>:
>>> On 17-09-15 08:26, Angelo Compagnucci wrote:
>>>> This patch adds a Vagrant file to buildroot. With this file
>>>> you can provision a complete buildroot developing environment
>>>> in minutes on all major platforms (Linux/Mac/Windows).
>>>>
>>>> Signed-off-by: Angelo Compagnucci <angelo.compagnucci@gmail.com>
>>> [snip]
>>>> diff --git a/support/misc/Vagrantfile b/support/misc/Vagrantfile
>>>> new file mode 100644
>>>> index 0000000..2d9151b
>>>> --- /dev/null
>>>> +++ b/support/misc/Vagrantfile
>>>> @@ -0,0 +1,51 @@
>>>> +################################################################################
>>>> +#
>>>> +# Vagrantfile
>>>> +#
>>>> +################################################################################
>>>> +
>>>> +### Change here for more memory/cores ###
>>>> +VM_MEMORY=1024
>>>> +VM_CORES=1
>>>
>>>  Do we need to do that? And if we do, shouldn't it be higher? 1GB will not allow
>>> you to build v8 and all its derivatives (webkit, webengine).
>>
>> Nope. Raising this numbers means freezing the machine of a user with a
>> low end laptop.
>
>  Fair enough.
>
>> Probably we could add some notes on the documentation,
>> but Vagrant has it's own documentation and this is the standard de
>> facto way to set memory/cores of a vagrant VM. This file should be a
>> starting point for people wanting to try buildroot and not a one shop
>> stop for all their problems.
>>
>>>> +
>>>> +Vagrant.configure('2') do |config|
>>>> +     config.vm.box = 'ubuntu/trusty64'
>>>
>>>  Is there a way to make it match the host, i.e. run a 32-bit system on a 32-bit
>>> host?
>>
>> Honestly I don't think there are 32bit cpus which could run Buildroot
>> compilation inside a VM. For me no problem here, all the cpus with
>> virt instructions are 64bits and therefore could run a 64bit host.
>
>  It's not for 32-bit CPUs, it's for 64-bit hardware running 32-bit OS.
>
>  Though of course you're right, the VM can still run a 64-bit OS.
>
>>
>>>> +     config.vm.provider :vmware_fusion do |v, override|
>>>> +             v.vmx['memsize'] = VM_MEMORY
>>>> +             v.vmx['numvcpus'] = VM_CORES
>>>> +     end
>>>> +
>>>> +     config.vm.provider :virtualbox do |v, override|
>>>> +             v.customize ['modifyvm', :id, '--memory', VM_MEMORY]
>>>> +             v.customize ['modifyvm', :id, '--cpus', VM_CORES]
>>>> +     end
>>>> +
>>>> +     config.vm.provision 'shell' do |s|
>>>> +             s.inline = 'echo Setting up machine name'
>>>> +
>>>> +             require 'open-uri'
>>>> +             open('http://git.buildroot.net/buildroot/plain/CHANGES') do |f|
>>>> +                     $buildroot_version=f.read.lines.first.split(',')[0]
>>>
>>>  That's not at all reliable, this version will for instance change to an rc just
>>> before a release. And for instance the 2015.08.1 is not in master's CHANGES.
>>>
>>>  I think it's better if we add a buildroot-latest.tar.bz2 symlink to the
>>> downloads directory, then we can just use that.
>>
>> Of course! I falled back to this method cause I cannot find find a
>> more reliable one.
>>
>>>  Failing that, it's better to scrape it from http://buildroot.org/download.html
>>
>> It's really strange that there is not an easy way to get the builroot
>> version string easily.
>
>  Well, the easy way would be
>
> sed -n '/^export BR2_VERSION := /s///p' Makefile
>
> but it's just a bad idea to take the latest git version as a basis of finding
> the 'current' version of buildroot.
>
>  You could also take the latest tag:
>
> git tag -l | grep '^20[0-9][0-9]\.[0-9][0-9]\.[0-9.]*' | sort -n | tail -1

Both these options are not feasible cause I've not a git downloaded to
search on before the vagrant up.
The only viable option could be scraping from website.

>  But overall, I think scraping from the website makes the most sense. Or even
> better would be if the current version was recorded somewhere in a file that is
> used with SSI in downloads.html

I would try to scrape the website for current buildroot version.

>>>> +             end
>>>> +
>>>> +             config.vm.provider :vmware_fusion do |v, override|
>>>> +                     v.vmx['displayname'] = "Buildroot #{$buildroot_version}"
>>>> +             end
>>>> +
>>>> +             config.vm.provider :virtualbox do |v, override|
>>>> +                     v.customize ['modifyvm', :id, '--name', "Buildroot #{$buildroot_version}"]
>>>> +             end
>>>> +     end
>>>> +
>>>> +     config.vm.provision 'shell', inline:
>>>> +             "sudo apt-get -q update
>>>> +             sudo apt-get -q -y install build-essential libncurses5-dev \
>>>> +                     git bzr cvs mercurial subversion
>>>
>>>  I would also include libqt4-dev for xconfig,
>>
>> Why? On windows there is not an X server to run the ssh x forwarding
>> and the dependencies are really big ones. Nobody stops you to install
>> them manually, it's an Ubuntu after all!
>>
>>> and the dependencies for the
>>> manual and for the graphs: asciidoc, w3m, dblatex, graphviz, python,
>>> python-matplotlib.
>>
>> Do you think we should force users to download a complete tex
>> distribution only for compiling docs? As stated before users could
>> install themselves if needed.
>>
>> I prefer having a vagrant up setup time as small as possible to be
>> operative as soon as possible!
>
>  Okay.
>
>  One more thing I would add though: the 32-bit compatibility libraries needed
> for Sourcery toolchains. It's not that heavy and a bit tricky to find the right
> ones.

Nice catch!

Sincerely, Angelo

>
>
>  Regards,
>  Arnout
>
>>
>>> And rsync, is that included by default?
>>
>> Yes, it's included in Ubuntu.
>>
>> Sincerely, Angelo.
>>
>>>
>>>
>>>  Regards,
>>>  Arnout
>>>
>>>> +             sudo apt-get -q -y autoremove"
>>>> +
>>>> +     config.vm.provision 'shell', privileged: false, inline:
>>>> +             "echo 'Downloading and extracting buildroot #{$buildroot_version}'
>>>> +             wget -q -c http://buildroot.org/downloads/buildroot-#{$buildroot_version}.tar.gz
>>>> +             tar axf buildroot-#{$buildroot_version}.tar.gz"
>>>> +end
>>>>
>>>
>>>
>>> --
>>> Arnout Vandecappelle                          arnout at mind be
>>> Senior Embedded Software Architect            +32-16-286500
>>> Essensium/Mind                                http://www.mind.be
>>> G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
>>> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
>>> GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
>>
>>
>>
>
>
> --
> Arnout Vandecappelle                          arnout at mind be
> Senior Embedded Software Architect            +32-16-286500
> Essensium/Mind                                http://www.mind.be
> G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
> GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
diff mbox

Patch

diff --git a/docs/manual/getting.txt b/docs/manual/getting.txt
index 3437f93..84e1f54 100644
--- a/docs/manual/getting.txt
+++ b/docs/manual/getting.txt
@@ -10,6 +10,20 @@  November. Release numbers are in the format YYYY.MM, so for example
 
 Release tarballs are available at http://buildroot.org/downloads/[].
 
+An official https://www.vagrantup.com/[Vagrantfile] is distributed within buildroot for your needs.
+If you want to setup an isolated buildroot environment on Linux or
+Mac Os X, paste this line onto your terminal:
+
+--------------------
+curl -O http://git.buildroot.net/buildroot/plain/support/misc/Vagrantfile; vagrant up
+--------------------
+
+If you are on Windows, paste this into your powershell:
+
+--------------------
+(new-object System.Net.WebClient).DownloadFile("http://git.buildroot.net/buildroot/plain/support/misc/Vagrantfile","Vagrantfile"); vagrant up
+--------------------
+
 If you want to follow development, you can use the daily snapshots or
 make a clone of the Git repository. Refer to the
 http://buildroot.org/download[Download page] of the Buildroot website
diff --git a/docs/website/download.html b/docs/website/download.html
index 534fc7e..8075aca 100644
--- a/docs/website/download.html
+++ b/docs/website/download.html
@@ -32,6 +32,23 @@  This and earlier releases (and their PGP signatures) can always be downloaded fr
 
 <p>
 
+<p>
+An official <a href="https://www.vagrantup.com/">Vagrantfile</a>
+is distributed within buildroot for your needs.
+If you want to setup an isolated buildroot environment on Linux or
+Mac Os X, paste this line onto your terminal:
+
+<pre>
+curl -O http://git.buildroot.net/buildroot/plain/support/misc/Vagrantfile; vagrant up
+</pre>
+
+If you are on Windows, paste this into your powershell:
+
+<pre>
+(new-object System.Net.WebClient).DownloadFile("http://git.buildroot.net/buildroot/plain/support/misc/Vagrantfile","Vagrantfile"); vagrant up
+</pre>
+</p>
+
 You can also obtain daily snapshots of the latest Buildroot source tree if you
 want to follow development, but cannot or do not wish to use Git.
 
diff --git a/support/misc/Vagrantfile b/support/misc/Vagrantfile
new file mode 100644
index 0000000..2d9151b
--- /dev/null
+++ b/support/misc/Vagrantfile
@@ -0,0 +1,51 @@ 
+################################################################################
+#
+# Vagrantfile
+#
+################################################################################
+
+### Change here for more memory/cores ###
+VM_MEMORY=1024
+VM_CORES=1
+
+Vagrant.configure('2') do |config|
+	config.vm.box = 'ubuntu/trusty64'
+
+	config.vm.provider :vmware_fusion do |v, override|
+		v.vmx['memsize'] = VM_MEMORY
+		v.vmx['numvcpus'] = VM_CORES
+	end
+
+	config.vm.provider :virtualbox do |v, override|
+		v.customize ['modifyvm', :id, '--memory', VM_MEMORY]
+		v.customize ['modifyvm', :id, '--cpus', VM_CORES]
+	end
+
+	config.vm.provision 'shell' do |s|
+		s.inline = 'echo Setting up machine name'
+
+		require 'open-uri'
+		open('http://git.buildroot.net/buildroot/plain/CHANGES') do |f|
+			$buildroot_version=f.read.lines.first.split(',')[0]
+		end
+
+		config.vm.provider :vmware_fusion do |v, override|
+			v.vmx['displayname'] = "Buildroot #{$buildroot_version}"
+		end
+
+		config.vm.provider :virtualbox do |v, override|
+			v.customize ['modifyvm', :id, '--name', "Buildroot #{$buildroot_version}"]
+		end
+	end
+
+	config.vm.provision 'shell', inline:
+		"sudo apt-get -q update
+		sudo apt-get -q -y install build-essential libncurses5-dev \
+			git bzr cvs mercurial subversion
+		sudo apt-get -q -y autoremove"
+
+	config.vm.provision 'shell', privileged: false, inline:
+		"echo 'Downloading and extracting buildroot #{$buildroot_version}'
+		wget -q -c http://buildroot.org/downloads/buildroot-#{$buildroot_version}.tar.gz
+		tar axf buildroot-#{$buildroot_version}.tar.gz"
+end