Permalink
Browse files

Changes to the Vagrant file, README and gitignore for better Vagrant …

…support. (#597)
  • Loading branch information...
1 parent 62adbc2 commit b90f575ec766969f2c87c03bcf3efdc47752b79f @gabegundy gabegundy committed with zador-blood-stained Jan 4, 2017
Showing with 77 additions and 64 deletions.
  1. +3 −0 .gitignore
  2. +48 −4 README.md
  3. +26 −60 Vagrantfile
View
@@ -0,0 +1,3 @@
+.vagrant/
+output/
+ubuntu-*-cloudimg-console.log
View
@@ -8,35 +8,79 @@ http://www.armbian.com
Supported build environments:
- [Ubuntu Xenial 16.04 x64](http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/installer-amd64/current/images/netboot/mini.iso) guest inside a [VirtualBox](https://www.virtualbox.org/wiki/Downloads) or other virtualization software,
+- [Ubuntu Xenial 16.04 x64](http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/installer-amd64/current/images/netboot/mini.iso) guest managed by [Vagrant](https://www.vagrantup.com/). This uses Virtualbox (as above) but does so in an easily repeatable way,
- [Ubuntu Xenial 16.04 x64](http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/installer-amd64/current/images/netboot/mini.iso) inside a [Docker](https://www.docker.com/), [systemd-nspawn](https://www.freedesktop.org/software/systemd/man/systemd-nspawn.html) or other container environment [(example)](https://github.com/igorpecovnik/lib/pull/255#issuecomment-205045273). Building full OS images inside containers may not work, so this option is mostly for the kernel compilation,
- [Ubuntu Xenial 16.04 x64](http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/installer-amd64/current/images/netboot/mini.iso) running natively on a dedicated PC or a server,
- [Ubuntu Trusty 14.04 x64](http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/installer-amd64/current/images/netboot/mini.iso) may still be used for the kernel compilation but it is not recommended,
- **20GB disk space** or more and **2GB RAM** or more available for the VM, container or native OS,
- superuser rights (configured `sudo` or root access).
**Execution**
-
+
apt-get -y install git
git clone https://github.com/igorpecovnik/lib --depth 1
cp lib/compile.sh .
./compile.sh
-
+
You will be prompted with a selection menu for a build option, a board name, a kernel branch and an OS release. Please check the documentation for [advanced options](https://docs.armbian.com/Developer-Guide_Build-Options/) and [additional customization](https://docs.armbian.com/Developer-Guide_User-Configurations/).
Build process uses caching for the compilation and the debootstrap process, so consecutive runs with similar settings will be much faster.
## How to change a kernel configuration?
Edit `compile.sh` and set
-
+
KERNEL_CONFIGURE="yes"
-
+
or pass this option as a command line parameter like
./compile.sh KERNEL_CONFIGURE=yes
to display the kernel configuration menu during the compilation process
+## Quick Start with Vagrant
+
+First, you'll need to [install vargrant](https://www.vagrantup.com/downloads.html) on your host box. You'll also need to install a plug-in that will enable us to resize the primary storage device. Without it, Vagrant images are too small to build Armbian.
+
+ vagrant plugin install vagrant-disksize
+
+Now we'll need to [install git](https://git-scm.com/downloads) and check out the Armbian code. While this might seem obvious, we'll rely on it being there when we use Vagrant.
+
+ # Check out the code.
+ git clone --depth 1 https://github.com/igorpecovnik/lib.git lib
+
+ # Make the Vagrant box available. This might take a while but only needs to be done once.
+ vagrant box add ubuntu/xenial64
+
+ # If the box gets updated by the folks at HashiCorp, we'll want to update our copy too.
+ # This only needs done once and a while.
+ vagrant box update
+
+ # Finally! Let's bring the box up. This might take a minute or two.
+ cd lib
+ vagrant up
+
+ # When the box has been installed we can get access via ssh.
+ vagrant ssh
+
+Once it's finally up and you're logged in, it works much like any of the other install (note: these commands are run on the *guest* box).
+
+ cp lib/compile.sh .
+ sudo ./compile.sh
+
+There are two directories that are mapped from the host to the guest:
+
+* You'll find the git repo is shared, and
+* The *output* directory is also shared (makes it easy to preserve cache, downloads, and IOSs between builds). It also makes them easily accessible on your host box.
+
+Wrap up your vagrant box when no longer needed (log out of the guest before running these on the host system):
+
+ # Shutdown, but leave the box around for more building at a later time:
+ vagrant halt
+
+ # Trash the box and remove all the related storage devices.
+ vagrant destroy
+
More info:
- [Documentation](http://www.armbian.com/using-armbian-tools/)
View
@@ -1,73 +1,39 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
-# All Vagrant configuration is done below. The "2" in Vagrant.configure
-# configures the configuration version (we support older styles for
-# backwards compatibility). Please don't change it unless you know what
-# you're doing.
Vagrant.configure(2) do |config|
- # The most common configuration options are documented and commented below.
- # For a complete reference, please see the online documentation at
- # https://docs.vagrantup.com.
- # Every Vagrant development environment requires a box. You can search for
- # boxes at https://atlas.hashicorp.com/search.
- config.vm.box = "ubuntu/xenial64"
+ # What box should we base this build on?
+ config.vm.box = "ubuntu/xenial64"
- # Disable automatic box update checking. If you disable this, then
- # boxes will only be checked for updates when the user runs
- # `vagrant box outdated`. This is not recommended.
- config.vm.box_check_update = true
+ #######################################################################
+ # THIS REQUIRES YOU TO INSTALL A PLUGIN. RUN THE COMMAND BELOW...
+ #
+ # $ vagrant plugin install vagrant-disksize
+ #
+ #######################################################################
- # Create a forwarded port mapping which allows access to a specific port
- # within the machine from a port on the host machine. In the example below,
- # accessing "localhost:8080" will access port 80 on the guest machine.
- # config.vm.network "forwarded_port", guest: 80, host: 8080
+ # Default images are not big enough to build Armbian.
+ config.disksize.size = "40GB"
- # Create a private network, which allows host-only access to the machine
- # using a specific IP.
- # config.vm.network "private_network", ip: "192.168.33.10"
+ # So we don't have to download the code a 2nd time.
+ config.vm.synced_folder ".", "/home/ubuntu/lib"
- # Create a public network, which generally matched to bridged network.
- # Bridged networks make the machine appear as another physical device on
- # your network.
- config.vm.network "public_network"
+ #######################################################################
+ # We could sync more folders (that seems like the best way to go),
+ # but in many cases builds fail because hardlinks are not supported.
+ # So, a more failproof approach is to just use a larger disk.
- # Share an additional folder to the guest VM. The first argument is
- # the path on the host to the actual folder. The second argument is
- # the path on the guest to mount the folder. And the optional third
- # argument is a set of non-required options.
- config.vm.synced_folder ".", "/vagrant/lib"
- config.vm.synced_folder "./output", "/vagrant/output", create: true
+ # Share folders with the host to make it easy to get our images out.
+ config.vm.synced_folder "./output", "/home/ubuntu/output", create: true
- # Provider-specific configuration so you can fine-tune various
- # backing providers for Vagrant. These expose provider-specific options.
- # Example for VirtualBox:
- #
- config.vm.provider "virtualbox" do |vb|
- # Display the VirtualBox GUI when booting the machine
- vb.gui = true
+ config.vm.provider "virtualbox" do |vb|
+ vb.name = "Armbian Builder"
+ vb.gui = true
- # Customize the amount of memory on the VM:
- vb.memory = "8192"
- vb.cpus = "4"
- end
- #
- # View the documentation for the provider you are using for more
- # information on available options.
+ # Tweak these to fit your needs.
+ vb.memory = "8192"
+ vb.cpus = "4"
- # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
- # such as FTP and Heroku are also available. See the documentation at
- # https://docs.vagrantup.com/v2/push/atlas.html for more information.
- # config.push.define "atlas" do |push|
- # push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
- # end
-
- # Enable provisioning with a shell script. Additional provisioners such as
- # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
- # documentation for more information about their specific syntax and use.
- # config.vm.provision "shell", inline: <<-SHELL
- # sudo apt-get update
- # sudo apt-get install -y apache2
- # SHELL
-end
+ end
+end

0 comments on commit b90f575

Please sign in to comment.