Difference between revisions of "IoTGateway/BSP/Linux/iMX6/BuildingUbuntuRootfs"
From ESS-WIKI
(Created page with "{{DISPLAYTITLE:Building Ubuntu Rootfs for i.MX6}} <!-- {| align="right" |- | <span class="fck_mw_magic" _fck_mw_customtag="true" _fck_mw_tagname="TOC" _fck_mw_tagtype="c">_</s...") |
|||
Line 5: | Line 5: | ||
|} | |} | ||
--> | --> | ||
+ | = Host Prerequisites = | ||
+ | get the following packages installed | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | sudo apt-get install binfmt-support qemu-user-static wget | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | = Building Procedures = | ||
+ | == get the ubuntu base image == | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | wget http://cdimage.ubuntu.com/ubuntu-base/releases/14.04/release/ubuntu-base-14.04-core-armhf.tar.gz | ||
+ | export ROOTFS=~/rootfs | ||
+ | |||
+ | mkdir $ROOTFS | ||
+ | sudo tar xpvf ubuntu-base-14.04-core-armhf.tar.gz -C $ROOTFS | ||
+ | sudo cp /etc/resolv.conf $ROOTFS/etc/resolv.conf | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == pre-enter chroot environment == | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | sudo cp -a /usr/bin/qemu-arm-static $ROOTFS/usr/bin | ||
+ | sudo mount -t proc proc $ROOTFS/proc | ||
+ | sudo mount -t sysfs sysfs $ROOTFS/sys | ||
+ | sudo mount --bind /dev $ROOTFS/dev | ||
+ | sudo mount --bind /dev/pts $ROOTFS/dev/pts | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == enter chroot environment == | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | HOME=/root sudo chroot $ROOTFS /bin/bash --login -i | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == install the necessary packages == | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | cd ~ | ||
+ | cp -a /etc/apt/sources.list /etc/apt/sources.list.orig | ||
+ | |||
+ | cat <<EOT > /etc/apt/sources.list | ||
+ | deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe multiverse | ||
+ | #deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe multiverse | ||
+ | #deb http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse | ||
+ | |||
+ | #deb http://ports.ubuntu.com/ubuntu-ports/ trusty main universe | ||
+ | deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main universe | ||
+ | EOT | ||
+ | |||
+ | apt-get update | ||
+ | |||
+ | apt-get install sudo openssh-server net-tools wireless-tools lxde iputils-ping rsyslog alsa-utils --no-install-recommends | ||
+ | apt-get install xserver-xorg x11-utils x11-xserver-utils xterm lxdm lxmusic chromium-browser | ||
+ | apt-get install xscreensaver --no-install-recommends | ||
+ | apt-get install alsa-base python python3-dbus python3-apport samba-common smbclient gvfs | ||
+ | apt-get install anacron at-spi2-core avahi-daemon bc bluez-alsa bogofilter btrfs-tools colord dc galculator \ | ||
+ | gdbserver genisoimage gksu gtk2-engines gvfs-fuse gvfs-backends hicolor-icon-theme inputattach kerneloops-daemon \ | ||
+ | krb5-locales lftp menu menu-xdg ncurses-term p7zip-full pcmciautils policykit-desktop-privileges python-xdg rfkill \ | ||
+ | screen scrot smemcap ssh-import-id tcpd ttf-dejavu-core ttf-freefont usbutils wamerican wget wpasupplicant xml-core \ | ||
+ | xz-utils zip | ||
+ | |||
+ | wget -P ~ http://launchpadlibrarian.net/197440683/libdrm-freedreno1_2.4.56-1~ubuntu2_armhf.deb | ||
+ | dpkg -i ~/libdrm-freedreno1_2.4.56-1~ubuntu2_armhf.deb | ||
+ | |||
+ | apt-get install libegl1-mesa libgles1-mesa libgles2-mesa libgtk-3-bin | ||
+ | |||
+ | apt-get install libfm-modules libglib2.0-data libgtk2.0-bin libhtml-form-perl libhtml-format-perl libfont-afm-perl \ | ||
+ | libhttp-daemon-perl libio-socket-inet6-perl libjpeg-progs libmailtools-perl libpam-ck-connector libxp6 | ||
+ | |||
+ | adduser adv && addgroup adv adm && addgroup adv sudo && addgroup adv audio && addgroup adv video && addgroup adv plugdev | ||
+ | sed -i "s/^root:[^:]\+:/root::/" /etc/shadow | ||
+ | sed -i "s/# autologin=dgod/autologin=adv/" /etc/lxdm/lxdm.conf | ||
+ | echo "imx6" > /etc/hostname | ||
+ | echo -e "127.0.0.1 localhost \n127.0.1.1 `cat /etc/hostname`\n" > /etc/hosts | ||
+ | |||
+ | cat >> /etc/network/interfaces << EOT | ||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | auto eth0 | ||
+ | iface eth0 inet dhcp | ||
+ | EOT | ||
+ | |||
+ | cat << EOT > /etc/init/ttymxc0.conf | ||
+ | start on stopped rc RUNLEVEL=[2345] | ||
+ | stop on runlevel [!2345] | ||
+ | respawn | ||
+ | exec /sbin/getty -L 115200 ttymxc0 | ||
+ | EOT | ||
+ | |||
+ | ln -sf ../run/resolvconf/resolv.conf /etc/resolv.conf | ||
+ | dpkg-reconfigure tzdata | ||
+ | apt-get clean | ||
+ | history -c && rm ~/.bash_history | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == leave chroot environment == | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | logout | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == post-leave chroot environment == | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | sudo umount $ROOTFS/dev/pts | ||
+ | sudo umount $ROOTFS/dev | ||
+ | sudo umount $ROOTFS/sys | ||
+ | sudo umount $ROOTFS/proc | ||
+ | sudo rm $ROOTFS/usr/bin/qemu-arm-static | ||
+ | </syntaxhighlight> | ||
[[Category:Editor]] | [[Category:Editor]] |
Revision as of 04:10, 20 July 2017
Contents
Host Prerequisites
get the following packages installed
sudo apt-get install binfmt-support qemu-user-static wget
Building Procedures
get the ubuntu base image
wget http://cdimage.ubuntu.com/ubuntu-base/releases/14.04/release/ubuntu-base-14.04-core-armhf.tar.gz
export ROOTFS=~/rootfs
mkdir $ROOTFS
sudo tar xpvf ubuntu-base-14.04-core-armhf.tar.gz -C $ROOTFS
sudo cp /etc/resolv.conf $ROOTFS/etc/resolv.conf
pre-enter chroot environment
sudo cp -a /usr/bin/qemu-arm-static $ROOTFS/usr/bin
sudo mount -t proc proc $ROOTFS/proc
sudo mount -t sysfs sysfs $ROOTFS/sys
sudo mount --bind /dev $ROOTFS/dev
sudo mount --bind /dev/pts $ROOTFS/dev/pts
enter chroot environment
HOME=/root sudo chroot $ROOTFS /bin/bash --login -i
install the necessary packages
cd ~
cp -a /etc/apt/sources.list /etc/apt/sources.list.orig
cat <<EOT > /etc/apt/sources.list
deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe multiverse
#deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe multiverse
#deb http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
#deb http://ports.ubuntu.com/ubuntu-ports/ trusty main universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main universe
EOT
apt-get update
apt-get install sudo openssh-server net-tools wireless-tools lxde iputils-ping rsyslog alsa-utils --no-install-recommends
apt-get install xserver-xorg x11-utils x11-xserver-utils xterm lxdm lxmusic chromium-browser
apt-get install xscreensaver --no-install-recommends
apt-get install alsa-base python python3-dbus python3-apport samba-common smbclient gvfs
apt-get install anacron at-spi2-core avahi-daemon bc bluez-alsa bogofilter btrfs-tools colord dc galculator \
gdbserver genisoimage gksu gtk2-engines gvfs-fuse gvfs-backends hicolor-icon-theme inputattach kerneloops-daemon \
krb5-locales lftp menu menu-xdg ncurses-term p7zip-full pcmciautils policykit-desktop-privileges python-xdg rfkill \
screen scrot smemcap ssh-import-id tcpd ttf-dejavu-core ttf-freefont usbutils wamerican wget wpasupplicant xml-core \
xz-utils zip
wget -P ~ http://launchpadlibrarian.net/197440683/libdrm-freedreno1_2.4.56-1~ubuntu2_armhf.deb
dpkg -i ~/libdrm-freedreno1_2.4.56-1~ubuntu2_armhf.deb
apt-get install libegl1-mesa libgles1-mesa libgles2-mesa libgtk-3-bin
apt-get install libfm-modules libglib2.0-data libgtk2.0-bin libhtml-form-perl libhtml-format-perl libfont-afm-perl \
libhttp-daemon-perl libio-socket-inet6-perl libjpeg-progs libmailtools-perl libpam-ck-connector libxp6
adduser adv && addgroup adv adm && addgroup adv sudo && addgroup adv audio && addgroup adv video && addgroup adv plugdev
sed -i "s/^root:[^:]\+:/root::/" /etc/shadow
sed -i "s/# autologin=dgod/autologin=adv/" /etc/lxdm/lxdm.conf
echo "imx6" > /etc/hostname
echo -e "127.0.0.1 localhost \n127.0.1.1 `cat /etc/hostname`\n" > /etc/hosts
cat >> /etc/network/interfaces << EOT
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
EOT
cat << EOT > /etc/init/ttymxc0.conf
start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]
respawn
exec /sbin/getty -L 115200 ttymxc0
EOT
ln -sf ../run/resolvconf/resolv.conf /etc/resolv.conf
dpkg-reconfigure tzdata
apt-get clean
history -c && rm ~/.bash_history
leave chroot environment
logout
post-leave chroot environment
sudo umount $ROOTFS/dev/pts
sudo umount $ROOTFS/dev
sudo umount $ROOTFS/sys
sudo umount $ROOTFS/proc
sudo rm $ROOTFS/usr/bin/qemu-arm-static