Install GUI-less UBUNTU
(→Compile mobotware on new platform) |
(→UBUNTU packages) |
||
(36 intermediate revisions by one user not shown) | |||
Line 1: | Line 1: | ||
===Introduction=== | ===Introduction=== | ||
− | This guide is a guide to install UBUNTU on a robot without GUI. | + | This guide is a guide to install UBUNTU on a robot almost without GUI. |
+ | intended for robot operating system for SMRs | ||
− | + | Basically it is installation of xubuntu 12.04 on a 4GB disk for SMRs, where the GUI (lightdm) is disabled (but available to start by root). | |
===NB!=== | ===NB!=== | ||
− | RTAI installation requires patching and recompiling the kernel | + | RTAI installation requires patching and recompiling the kernel. |
− | This | + | This part is postponed, to be solved by Søren Hansen |
− | + | ===XUBUNTU installation=== | |
− | + | Installed per default, and modified as per package list and below | |
− | + | ====remining issued (todo)==== | |
− | + | '''todo''' | |
− | + | ||
− | + | * Test boot without WAN access | |
− | + | * Get small (old CRT) console to work (in text mode) at boot time | |
+ | * aukeeper do not connect to MARG | ||
+ | * new MARG laser client should be installed | ||
+ | * joystick control fails (OK in rhdtest, but no control of wheels) | ||
+ | * test with student login (access right to camera, sound, laser - etc) | ||
+ | * make script to copy image to other 4GB sticks | ||
− | + | '''bad standings''' | |
+ | * USB3 ports fail for Kinect | ||
+ | * reboot of a new cloned disk seems to fail at first boot, but OK at second boot. | ||
+ | * sometimes boot options do not timeout (like if a key is pressed) | ||
− | * | + | '''done''' |
− | * | + | * 2 kinect is OK |
− | * | + | * ULMS server is OK |
− | * | + | * guppi cam is OK |
+ | * MARG loads, but aukeeper do not connect | ||
+ | * NTP time sync is OK (to 192.38.66.1) | ||
+ | * switchtool work OK | ||
+ | * sound is OK from command-line (flite) | ||
+ | * MRC is running (one motor controller failed) | ||
− | + | ===installed packages=== | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | === | + | |
Install packages like: | Install packages like: | ||
Line 55: | Line 56: | ||
* make | * make | ||
* ncurses-dev | * ncurses-dev | ||
+ | * libcv-dev | ||
* libraw1394-dev (used by camera server) | * libraw1394-dev (used by camera server) | ||
− | * libdc1394-dev (used by camera server) | + | * not libdc1394-dev (used by camera server) |
− | * libpng-dev (used by camera server) | + | * isOK libpng-dev (used by camera server) |
− | * libexpat-dev | + | * isOK libexpat-dev |
* pciutils-dev | * pciutils-dev | ||
* libreadline-dev | * libreadline-dev | ||
− | * bison (used by MRC) | + | * isOK bison (used by MRC) |
* libudev-dev | * libudev-dev | ||
* libv4l-dev (used by camera server video 4 linux 2) | * libv4l-dev (used by camera server video 4 linux 2) | ||
− | * pkg-config | + | * isOK pkg-config |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
* autofs (to mount users home-dir) | * autofs (to mount users home-dir) | ||
− | * nis (for shared files - askes for a domain | + | * nis (for shared files - askes for a domain while installing) |
− | * gdb to be able to analyse e.g. core dumps | + | * isOK gdb (to be able to analyse e.g. core dumps) |
* valgrind (to analyse for memory leaks etc.) | * valgrind (to analyse for memory leaks etc.) | ||
* apache2 (to get default web access to robot - using MARG) | * apache2 (to get default web access to robot - using MARG) | ||
− | * lsof (to track open files - also device files) | + | * isOK lsof (to track open files - also device files) |
+ | * ssh (ssh server) | ||
+ | * sox (to play a waw file) | ||
+ | * flite (to play a text string) | ||
+ | * libusb-dev (mainly for kinect) | ||
+ | * libusb-1.0-0-dev (mainly for kinect) | ||
+ | * libboost-dev (for some AURS plugins) | ||
+ | * localepurge (maintaining only en_UK locale files) | ||
+ | * ntp (to time sync clock on robot) | ||
+ | * vim (line based editor) | ||
− | + | removed the following packages: | |
− | + | * firefox | |
+ | * xfburn | ||
+ | * games (mahjongg, mine, suduko, aislerion, gnome-games) | ||
+ | * gimp | ||
+ | * thunderbird | ||
+ | * xchat | ||
+ | * parole | ||
+ | * gmusicbrowser | ||
+ | * abiword | ||
+ | * calender | ||
+ | * aspell | ||
+ | * gcalc | ||
+ | * transmission | ||
+ | * pidgin | ||
+ | * dictionary | ||
− | + | (saved about 210 MB) | |
− | + | - installed on smr10 (xubuntu-12.04) / jca | |
− | + | ||
− | + | ||
====PCL==== | ====PCL==== | ||
Line 99: | Line 116: | ||
sudo apt-get install libpcl-all | sudo apt-get install libpcl-all | ||
− | ===Configure for kalman log-in=== | + | ===Configure for kalman log-in and disk share=== |
− | Copied | + | Copied from bode |
/etc/hosts.allow | /etc/hosts.allow | ||
Line 107: | Line 124: | ||
/etc/auto.master (NB! these auto* files must NOT be executable) | /etc/auto.master (NB! these auto* files must NOT be executable) | ||
/etc/auto.misc | /etc/auto.misc | ||
− | |||
− | + | Make links for home directories (NB! do NOT: sudo mkdir /misc) | |
− | |||
− | |||
− | |||
sudo ln -s /misc/vhome /vhome | sudo ln -s /misc/vhome /vhome | ||
sudo ln -s /misc/shome /shome | sudo ln -s /misc/shome /shome | ||
− | === | + | ===Limit SSH login=== |
− | + | Copied from bode | |
− | + | /etc/hosts.allow | |
+ | /etc/hosts.deny | ||
− | + | Edit /etc/hosts and add to the sshd line (to allow login from wired network): | |
+ | |||
+ | ,192.169.0.0/255.255.0.0 | ||
− | |||
− | + | ===Network setup=== | |
− | + | Wired network is set up to use 192.168.2.210 and mask 255.255.255.0 in /etc/network/interfaces: | |
− | + | auto lo | |
+ | # set wired network to manual IP | ||
+ | auto eth0 | ||
+ | iface eth0 inet static | ||
+ | address 192.168.2.210 | ||
+ | netmask 255.255.255.0 | ||
− | + | ===Environment variables=== | |
− | + | The bin path for mobotware is added to /etc/environment, so that it now reads | |
− | + | PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/smr/bin" | |
+ | The library path can not be added to /etc/environment, but is added as /etc/ld.so.conf.d/mobotware.conf as | ||
+ | |||
+ | /usr/local/smr/lib | ||
+ | |||
+ | But this do not work, so you must still add to your .bashrc file (sorry): | ||
+ | |||
+ | export LD_LIBRARY_PATH | ||
+ | |||
+ | If you want it to look elsewhere for applications and plugins, then redefine in your .bashrc file, | ||
+ | e.g. if you want to add a version of mobotware in /shome/ex22/mobotware/build/bin (applications) and /shome/ex22/mobotware/build/lib (plugins), add the following lines to ./bashrc in your home directory: | ||
+ | |||
+ | # file ./bashrc | ||
+ | export PATH="/shome/ex22/mobotware/build/bin:$PATH" | ||
+ | export LD_LIBRARY_PATH="/shome/ex22/mobotware/build/lib" | ||
+ | |||
+ | ===NIS start and switch=== | ||
+ | |||
+ | NIS start by default, when any network is up and running, this | ||
+ | does not work if wireless is used. | ||
+ | |||
+ | So edit /etc/init/ypbind.conf | ||
+ | |||
+ | change | ||
+ | start on (started portmap ON_BOOT= | ||
+ | or (started portmap ON_BOOT=y | ||
+ | and ((filesystem and static-network-up) or failsafe-boot))) | ||
to | to | ||
+ | start on (started portmap ON_BOOT= | ||
+ | or (started portmap ON_BOOT=y | ||
+ | and ((filesystem and net-device-up IFACE=wlan0) or failsafe-boot))) | ||
− | + | and change 3 lines in /etc/nsswitch, add nis as first option | |
− | + | ... | |
− | + | passwd: nis compat | |
− | + | group: nis compat | |
+ | shadow: nis compat | ||
+ | ... | ||
+ | |||
+ | Reboot when both changes are in place | ||
+ | (if nsswitch is changed only, it is likely that login will be impossible due to long timeouts. | ||
+ | then use failsafe boot | ||
+ | |||
+ | ====Failsafe boot==== | ||
+ | |||
+ | If system fails to boot due to bad configuration, | ||
+ | |||
+ | then use failsafe boot from GRUB | ||
+ | and select root shell to recover. | ||
+ | |||
+ | Then remount disk in rw mode: | ||
+ | mount -n -o remount,rw / | ||
+ | |||
+ | and fix the problem | ||
====ROS==== | ====ROS==== | ||
Line 198: | Line 265: | ||
sleep 1 | sleep 1 | ||
− | Then the switchtool (a bash script) is copied from old configuration to /usr/sbin/ - looks pt like this: | + | Then the switchtool (a bash script) is copied from old configuration to /usr/sbin/ - looks pt (June 2012) like this: |
/usr/sbin/switchtool: | /usr/sbin/switchtool: | ||
Line 239: | Line 306: | ||
exit 0 | exit 0 | ||
− | |||
− | - | + | ===Text console resolution=== |
− | - | + | |
+ | |||
+ | * Change the GRUB resolution in /etc/default/grub to include (ref: http://idyllictux.wordpress.com/) | ||
+ | |||
+ | GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset video=uvesafb:mode_option=640x480-16,mtrr=3,scroll=ywrap" | ||
+ | GRUB_CMDLINE_LINUX="" | ||
+ | GRUB_GFXMODE=640x480 | ||
+ | GRUB_GFXPAYLOAD_LINUX=text | ||
+ | |||
+ | * further changed /etc/initramfs-tools/modules to include uvesafb by adding the following line. | ||
+ | |||
+ | uvesafb mode_option=640-480-16 mtrr=3 scroll=ywrap | ||
+ | |||
+ | * Force the use of framebuffer: | ||
+ | echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash | ||
+ | |||
+ | * Update and we are done | ||
+ | |||
+ | sudo update-grub2 | ||
+ | sudo update-initramfs -u |
Latest revision as of 12:07, 16 July 2012
Contents |
[edit] Introduction
This guide is a guide to install UBUNTU on a robot almost without GUI. intended for robot operating system for SMRs
Basically it is installation of xubuntu 12.04 on a 4GB disk for SMRs, where the GUI (lightdm) is disabled (but available to start by root).
[edit] NB!
RTAI installation requires patching and recompiling the kernel. This part is postponed, to be solved by Søren Hansen
[edit] XUBUNTU installation
Installed per default, and modified as per package list and below
[edit] remining issued (todo)
todo
- Test boot without WAN access
- Get small (old CRT) console to work (in text mode) at boot time
- aukeeper do not connect to MARG
- new MARG laser client should be installed
- joystick control fails (OK in rhdtest, but no control of wheels)
- test with student login (access right to camera, sound, laser - etc)
- make script to copy image to other 4GB sticks
bad standings
- USB3 ports fail for Kinect
- reboot of a new cloned disk seems to fail at first boot, but OK at second boot.
- sometimes boot options do not timeout (like if a key is pressed)
done
- 2 kinect is OK
- ULMS server is OK
- guppi cam is OK
- MARG loads, but aukeeper do not connect
- NTP time sync is OK (to 192.38.66.1)
- switchtool work OK
- sound is OK from command-line (flite)
- MRC is running (one motor controller failed)
[edit] installed packages
Install packages like:
sudo apt-get install cmake
[edit] UBUNTU packages
Install also the following packages:
- cmake
- gcc
- g++
- make
- ncurses-dev
- libcv-dev
- libraw1394-dev (used by camera server)
- not libdc1394-dev (used by camera server)
- isOK libpng-dev (used by camera server)
- isOK libexpat-dev
- pciutils-dev
- libreadline-dev
- isOK bison (used by MRC)
- libudev-dev
- libv4l-dev (used by camera server video 4 linux 2)
- isOK pkg-config
- autofs (to mount users home-dir)
- nis (for shared files - askes for a domain while installing)
- isOK gdb (to be able to analyse e.g. core dumps)
- valgrind (to analyse for memory leaks etc.)
- apache2 (to get default web access to robot - using MARG)
- isOK lsof (to track open files - also device files)
- ssh (ssh server)
- sox (to play a waw file)
- flite (to play a text string)
- libusb-dev (mainly for kinect)
- libusb-1.0-0-dev (mainly for kinect)
- libboost-dev (for some AURS plugins)
- localepurge (maintaining only en_UK locale files)
- ntp (to time sync clock on robot)
- vim (line based editor)
removed the following packages:
- firefox
- xfburn
- games (mahjongg, mine, suduko, aislerion, gnome-games)
- gimp
- thunderbird
- xchat
- parole
- gmusicbrowser
- abiword
- calender
- aspell
- gcalc
- transmission
- pidgin
- dictionary
(saved about 210 MB)
- installed on smr10 (xubuntu-12.04) / jca
[edit] PCL
Add PCL repository to source list by adding this line to /etc/apt/sources.list
deb http://ppa.launchpad.net/v-launchpad-jochen-sprickerhof-de/pcl/ubuntu maverick main
then get new package list and install PCL like:
sudo apt-get update sudo apt-get install libpcl-all
[edit]
Copied from bode
/etc/hosts.allow /etc/hosts.deny /etc/auto.master (NB! these auto* files must NOT be executable) /etc/auto.misc
Make links for home directories (NB! do NOT: sudo mkdir /misc)
sudo ln -s /misc/vhome /vhome sudo ln -s /misc/shome /shome
[edit] Limit SSH login
Copied from bode
/etc/hosts.allow /etc/hosts.deny
Edit /etc/hosts and add to the sshd line (to allow login from wired network):
,192.169.0.0/255.255.0.0
[edit] Network setup
Wired network is set up to use 192.168.2.210 and mask 255.255.255.0 in /etc/network/interfaces:
auto lo # set wired network to manual IP auto eth0 iface eth0 inet static address 192.168.2.210 netmask 255.255.255.0
[edit] Environment variables
The bin path for mobotware is added to /etc/environment, so that it now reads
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/smr/bin"
The library path can not be added to /etc/environment, but is added as /etc/ld.so.conf.d/mobotware.conf as
/usr/local/smr/lib
But this do not work, so you must still add to your .bashrc file (sorry):
export LD_LIBRARY_PATH
If you want it to look elsewhere for applications and plugins, then redefine in your .bashrc file, e.g. if you want to add a version of mobotware in /shome/ex22/mobotware/build/bin (applications) and /shome/ex22/mobotware/build/lib (plugins), add the following lines to ./bashrc in your home directory:
# file ./bashrc export PATH="/shome/ex22/mobotware/build/bin:$PATH" export LD_LIBRARY_PATH="/shome/ex22/mobotware/build/lib"
[edit] NIS start and switch
NIS start by default, when any network is up and running, this does not work if wireless is used.
So edit /etc/init/ypbind.conf
change
start on (started portmap ON_BOOT= or (started portmap ON_BOOT=y and ((filesystem and static-network-up) or failsafe-boot)))
to
start on (started portmap ON_BOOT= or (started portmap ON_BOOT=y and ((filesystem and net-device-up IFACE=wlan0) or failsafe-boot)))
and change 3 lines in /etc/nsswitch, add nis as first option
... passwd: nis compat group: nis compat shadow: nis compat ...
Reboot when both changes are in place (if nsswitch is changed only, it is likely that login will be impossible due to long timeouts. then use failsafe boot
[edit] Failsafe boot
If system fails to boot due to bad configuration,
then use failsafe boot from GRUB and select root shell to recover.
Then remount disk in rw mode:
mount -n -o remount,rw /
and fix the problem
[edit] ROS
- ikke testet endnu
[edit] WEB server - MARG
With the apache server installed MARG can be active (java is not needed on this platform)
The apache server has its root in '/var/www', but to be compatible with other platforms, links are made from the /srv directory:
sudo ln -s /var/www /srv/httpd sudo ln -s /var/www /srv/www
And a directory for the aukeeper is needed, like
sudo mkdir /var/log/keeper
[edit] Switchtool
Switchtool consist of /etc/rc.smr, and this directory holds 2 files rc.smr and rc.smr_shutdown.
These are copied from old installation:
/etc/rc.smr/rc.smr:
#!/bin/bash /usr/local/smr/bin/rhd /usr/local/smr/bin/rhdconfig/rhdconfig.smrS1.xml& export LD_LIBRARY_PATH="/usr/local/smr/lib:/usr/local/smr/aurs/lib" /usr/local/smr/bin/aukeeper -a -s /usr/local/smr/bin/aursconf/aukeeper.ini > /dev/null & cp /usr/local/smr/marg/robot.xml /srv/httpd/htdocs/robot.xml SMRHN=`hostname` sed -i "s/smrhost/$SMRHN/g" /srv/httpd/htdocs/robot.xml exit 0
/etc/rc.smr/rc.smr_shutdown:
#!/bin/bash killall -q rhd pkill keeper pkill ulmsserver pkill ucamserver pkill keeper echo "Mobotware shutdown" exit 0
Then /etc/rc.local should be modified to load default configuration. This is also taken from old configuration (in /etc/rc.d/rc.local), add the following lines:
/etc/rc.local:
# Set standard sound level amixer set Master 80% unmute amixer set PCM 80% unmute # start default configuration /etc/rc.smr/rc.smr sleep 1
Then the switchtool (a bash script) is copied from old configuration to /usr/sbin/ - looks pt (June 2012) like this:
/usr/sbin/switchtool:
#!/bin/bash dir_name="/misc/opt/smr.${1}" if [ -z ${1} ]; then if [ ! -d /usr/local/smr.net/bin ]; then echo "Switching impossible. Kalman /opt not found." exit 1 fi elif [ "${1}" != "local" ]; then if [ ! -d $dir_name/bin ]; then echo "Switching impossible. Path: ${dir_name} not found." exit 2 fi fi if [ ! -x /etc/rc.smr/rc.smr_shutdown ]; then echo "Warning: Smr startup scripts not found. Is this a robot ?" else /etc/rc.smr/rc.smr_shutdown fi if [ -z ${1} ]; then echo "Switching to production mode" rm -f /usr/local/smr ln -sf /usr/local/smr.net /usr/local/smr elif [ "${1}" == "local" ]; then echo "Switching to local mode" rm -f /usr/local/smr ln -sf /usr/local/smr.local /usr/local/smr else echo "Switching to ${1} mode" rm -f /usr/local/smr ln -sf $dir_name /usr/local/smr fi if [ -x /etc/rc.smr/rc.smr ]; then /etc/rc.smr/rc.smr fi sleep 2 echo "done" exit 0
[edit] Text console resolution
- Change the GRUB resolution in /etc/default/grub to include (ref: http://idyllictux.wordpress.com/)
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset video=uvesafb:mode_option=640x480-16,mtrr=3,scroll=ywrap" GRUB_CMDLINE_LINUX="" GRUB_GFXMODE=640x480 GRUB_GFXPAYLOAD_LINUX=text
- further changed /etc/initramfs-tools/modules to include uvesafb by adding the following line.
uvesafb mode_option=640-480-16 mtrr=3 scroll=ywrap
- Force the use of framebuffer:
echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash
- Update and we are done
sudo update-grub2 sudo update-initramfs -u