Version 1 (modified by 7 years ago) ( diff ) | ,
---|
Ubuntu on Newport
This page is dedicated details regarding running Ubuntu on an Gateworks Newport Board.
See also:
- the Gateworks Ventana third party linux page for more details on how to use other linux distro on Ventana.
- Gateworks Ubuntu Page for general notes
See also:
Root filesystem
A popular way to create an Ubuntu root filesystem is to use the deboostrap
utility on a Debian or Ubuntu host. This tool provides a 2-stage install where the second stage is within a chroot environment using qemu.
Requirements:
- Linux Ubuntu or Debian System with network connection and sudo permissions
Important notes:
- we set and use target and distro env variables in step 2 and use those env variables in the remaining steps to make this tutorial more version-agnostic. Please be aware of this and do not deviate from the steps unless or until you completely understand what you are doing.
Steps:
- Install pre-requisites:
sudo apt-get install qemu-user-static debootstrap binfmt-support
- Perform first stage install of minimal filesystem for
arm64
architecture:target=rootfs distro=xenial sudo debootstrap --arch=arm64 --foreign $distro $target # copy qemu-arm-static binary for the binfmt packages to find it and copy in resolv.conf from host sudo cp /usr/bin/qemu-aarch64-static $target/usr/bin
- See http://ports.ubuntu.com/ubuntu-ports/dists/ for a list of current Ubuntu releases: 16.10=yakkety (latest), 16.04=xenial (latest LTS), 15.04=vivid, 14.10=utopic (LTS), 14.04=trusty (LTS), 12.04=precise (LTS), 10.04=lucid (LTS).
- this minimal rootfs can be considered about the same as an Ubuntu-core downloaded rootfs however it is still missing some core packages and configuration before it can be booted. These steps are taken care of in a 2nd stage install within a chroot shell
- the chroot shell below will provide network support (inherited from the host)
- we now have a minimal Ubuntu rootfs - chroot to it and perform the 2nd stage install:
sudo chroot $target # now we are in the chroot distro=xenial export LANG=C # setup second stage /debootstrap/debootstrap --second-stage
- this is the most minimal rootfs we would recommend
- (optional) add additional apt package repos:
cat <<EOT > /etc/apt/sources.list deb http://ports.ubuntu.com/ubuntu-ports $distro main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports $distro-updates main restricted universe multiverse deb http://ports.ubuntu.com/ubuntu-ports $distro-security main restricted universe multiverse EOT
- you may want to customize the above list, depending on your needs. See below for more detail on Ubuntu package feeds
- (optional) update package database and setup locales (do not skip this step if you are needing to install any packages for the steps below or otherwise)
apt-get update apt-get -f install # fixup missing package dependencies apt-get install locales dialog dpkg-reconfigure locales
- set hostname:
echo ${distro}-$(uname -m) > /etc/hostname
- set a root passwd so you can login
passwd
- or consider adding a user via
adduser
:adduser myuser usermod -a -G tty myuser # add to tty group for tty access usermod -a -G dialout myuser # add to dialout group for UART access usermod -a -G sudo myuser # add to sudo group for root access
- or consider adding a user via
- (optional) configure networking:
- wired ethernet with DHCP on eth0
cat <<EOF >> /etc/network/interfaces allow-hotplug eth0 auto eth0 iface eth0 inet dhcp EOF
- or static IP:
cat <<EOF >> /etc/network/interfaces allow-hotplug eth0 auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 gateway 192.168.1.254 EOF
- or wireless (requires ~3MB of additional packages):
apt-get install wpasupplicant iw cat << EOF >> /etc/network/interfaces # Wireless interface auto wlan0 iface wlan0 inet dhcp wireless_mode managed wireless_essid any wpa-driver nl80211 wpa-conf /etc/wpa_supplicant.conf EOF wpa_passphrase <myssid> <mypass> >> /etc/wpa_supplicant.conf
- wired ethernet with DHCP on eth0
- (optional) install some useful packages
apt-get install openssh-server # ssh server for remote access apt-get install can-utils i2c-tools usbutils pciutils # cmdline tools for various hardware support
- Note that by default root ssh access is disabled for security. See below for info on enabling it
- install Gateworks pre-built kernel:
apt-get install wget cd / wget http://svn.gateworks.com/newport/images/gateworks-linux-arm64-4.14.tar.bz2 tar -xvf gateworks-linux-arm64-4.14.tar.bz2
- exit the chroot shell and remove files we no longer need
exit sudo rm $target/usr/bin/qemu-arm-static
- install to bootable media:
- For a removable block storage device supported by your board such as a USB Mass Storage device, a microSD, an mSATA SSD the example below will create a single ext4 rootfs partition on a removable block storage device. Ensure you set DEVICE properly for your system. We use the 'udisks' application for mount/unmount so that the mount-point is obvious - if you know what your doing you could use standard mount/unmount as well:
DEVICE=/dev/sdc # unmount all auto-mounted partitions for this device sudo umount ${DEVICE}? # partition disk - single ext partition printf ",,L,,\n" | sudo sfdisk -uS ${DEVICE} sync sudo mkfs.ext4 -L rootfs ${DEVICE}1 # mount partition (will mount to /media/rootfs/) sudo udisks --mount ${DEVICE}1 # copy the root filesystem sudo cp -rupv $target/* /media/rootfs/ # unmount the disk sudo udisks --unmount ${DEVICE}1
- For a removable block storage device supported by your board such as a USB Mass Storage device, a microSD, an mSATA SSD the example below will create a single ext4 rootfs partition on a removable block storage device. Ensure you set DEVICE properly for your system. We use the 'udisks' application for mount/unmount so that the mount-point is obvious - if you know what your doing you could use standard mount/unmount as well:
Note:
See TracWiki
for help on using the wiki.