Ubuntu 16.04 on Raspberry Pi 3 

##元記事
https://wiki.ubuntu.com/ARM/RaspberryPi

##Installation（ubuntu16.04のイメージの準備)
Installation is the same as other Raspberry Pi images; a generic installation guide from raspberrypi.org is available here.

[ここからイメージをダウンロードする](https://www.finnie.org/software/raspberrypi/ubuntu-rpi3/ubuntu-16.04-preinstalled-server-armhf+raspi3.img.xz)
今回は、[DD for windows](http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows)でイメージをコピー

###Tips
ホスト名 ubuntuを正引きする際にタイムアウト（時間がかかる）まで待ってしまうので、
/etc/hostsに以下を追加する。
127.0.0.1 ubuntu 

##重要（これをやらないと、apt-get upgradeを実行したあとに起動しなくなる。）
**However, the Raspberry Pi has its own built in bootloader. This can be used with a few changes to the config.txt file on the system-boot partition:** 
u-bootは使わずvmlinuzを使う
`sudo vi  /boot/firmware/config.txt
`$ kernel=vmlinuz`
`initramfs initrd.img followkernel`
`#device_tree_address=0x02000000`

**Note
the change to the kernel line, the addition of the initramfs line, and the commenting out (#) of the device_tree_address line.**

All that remains is to copy bcm2710-rpi-3-b.dtb (plus the overlay folder if needed) from /lib/firmware/4.4.0-1065-raspi2/device-tree to the system-boot partition.

この後、rebootで再起動することを確認する。
次に

    $ sudo apt-get update
    $ sudo apt-get upgrade 
    E: Could not get lock /var/lib/dpkg/lock - open (11: 
    Resource temporarily unavailable)
    E: Unable to lock the administration directory 
    (/var/lib/dpkg/), is another process using it?
    /var/lib/dpkg/lockを開いているプロセスを確認する。
   
    $ sudo lsof /var/lib/dpkg/lock
     COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
     unattende 1153 root    5uW  REG  179,2        0 41402 
     /var/lib/dpkg/lock
     unattemde<--自動更新用のプロセスが/var/lib/dpkg/lockを開いていた
     これをuninstall 
    $ sudo apt-get remove update-manager
     E: dpkg was interrupted, you must manually run 'sudo 
     dpkg --configure -a' to correct the problem.
    $ sudo dpkg --configure -a
    $ apt-get upgrade reboot

    無事成功


##Optional PPAs
While the official image includes compatible firmware, bootloader and kernel, there are a few packages available in an unofficial PPA (ppa:ubuntu-raspi2/ppa) which are useful on the Raspberry Pi, including:

libraspberrypi-bin - VideoCore utilities from https://github.com/raspberrypi/userland such as vcgencmd, raspistill, etc.

libraspberrypi-bin-nonfree - Binary VideoCore utilities not provided in the open source userland repository, currently vcdbg and edidparser.

xserver-xorg-video-fbturbo - An accelerated x.org video driver, though this is limited to hardware accelerated window moving/scrolling on the Raspberry Pi.

hello-dkms - Not strictly to do with the Raspberry Pi, but a small example DKMS project to test building kernel DKMS modules.

###To install:(オプションのリポジトリを追加する）

    $ sudo add-apt-repository ppa:ubuntu-raspi2/ppa
     https://wiki.ubuntu.com/ARM/RaspberryPi

     Optional PPA for Raspberry Pi 2/3 installations.
     More info: https://launchpad.net/~ubuntu-raspi2/+archive/ubuntu/ppa
     Press [ENTER] to continue or ctrl-c to cancel adding it
 
     gpg: keyring `/tmp/tmpe3iizixs/secring.gpg' created
     gpg: keyring `/tmp/tmpe3iizixs/pubring.gpg' created
     gpg: requesting key 8CBCF2F2 from hkp server keyserver.ubuntu.com
     gpg: /tmp/tmpe3iizixs/trustdb.gpg: trustdb created
     gpg: key 8CBCF2F2: public key "Launchpad PPA for Raspberry Pi 2 Ubuntu" 
     imported
     gpg: Total number processed: 1
     gpg:               imported: 1  (RSA: 1)
     OK
    $ sudo apt-get update

Further Raspberry Pi packages can be found in the Ubuntu Pi Flavour Maker PPA.


###To install Desktop
デスクトップをインストールする。
ubuntu-desktopをインストールしたら重すぎて動かないので削除する。

    $ sudo apt autoremove sudo apt install ubuntu-desktop gnome-session-flashback xserver-xorg-video-fbturbo dphys-swapfile
    $ sudo apt autoremove compiz*

ubuntuお勧めのxubuntu-desktopをインストールする。

    $ sudo apt-get install xubuntu-desktop

~~sudo apt install ubuntu-desktop gnome-session-flashback xserver-xorg-video-fbturbo dphys-swapfile
Then add this to /etc/X11/xorg.conf (create if it doesn't already exist):
以下の内容でxorg.confを作成する。
Section "Device"
Identifier "Raspberry Pi FBDEV"
Driver "fbturbo"
Option "fbdev" "/dev/fb0"
Option "SwapbuffersWait" "true"
EndSection~~


### To install Accelerated X driver
An accelerated x.org video driver is available (fbturbo), though this is limited to hardware accelerated window moving/scrolling on the Raspberry Pi. Install the optional PPA above, then:

    $ sudo apt-get install xserver-xorg-video-fbturbo
      Then add this to /etc/X11/xorg.conf (create if it doesn't already exist):

    Section "Device"
        Identifier "Raspberry Pi FBDEV"
        Driver "fbturbo"
        Option "fbdev" "/dev/fb0"
        Option "SwapbuffersWait" "true"
    EndSection

###To install VideoCore
As with Raspbian, VideoCore packages are available. Install the optional PPA above, then:

これらをインストールするとvcgencmdが使えるようになる。
$ sudo apt-get install libraspberrypi-bin libraspberrypi-dev
However, since these packages are compiled from source during build, the files are installed in their "proper" locations in /usr. Some third-party scripts may expect e.g. /opt/vc/bin/vcgencmd; if so, this hack should do it:
**Rapberry Piのオリジナルカメラがある場合は、接続して以下を確認してみる。**
   
    $ vcgencmd get_camera
     supported=1 detected=1 <--- このように出力さえれればOK

     supported=0 detected=0 <--- こう出力された場合は、カメラが認識されていないので

    /boot/firmware/config.txtの最後に以下の２行を追加後、リブートする。
     start_x=1
     gpu_mem=128
    カメラの動作確認
    $ raspistill -d

https://raspberrypi.stackexchange.com/questions/37359/how-to-use-raspistill-on-ubuntu

However, since these packages are compiled from source during build, the files are installed in their "proper" locations in /usr. Some third-party scripts may expect e.g. /opt/vc/bin/vcgencmd; if so, this hack should do it:
サードパーティーようにシンボリックリンクをはってっておく。
$ sudo ln -s /usr /opt/vc
(Raspbian packages use precompiled repositories during build, which install in /opt/vc.) vcdbg and edidparser are not part of the open source package and must be installed separately:

$ sudo apt-get install libraspberrypi-bin-nonfree
 

##Wifi wlan0が認識されない
[ここを参照](https://github.com/ryuichiueda/raspimouse_book_info/issues/1)させてもらったが、URLが変わっていたので以下の通り。
    uname -a 
    Linux ubuntu 4.4.0-1086-raspi2 #94-Ubuntu SMP Wed Mar 14 09:29:41 UTC 2018 armv7l armv7l armv7l GNU/Linux

    $ cd /lib/firmware/brcm/
    $ sudo wget https://github.com/RPi-Distro/firmware-nonfree/blob/master/brcm/brcmfmac43430- sdio.bin
    $ sudo wget https://github.com/RPi-Distro/firmware-nonfree/blob/master/brcm/brcmfmac43430- sdio.bin
    $ sudo reboot
    $ ifconfig
     eth0      Link encap:Ethernet  HWaddr b8:27:eb:4c:44:e2
               inet addr:192.168.11.13  Bcast:192.168.11.255  Mask:255.255.255.0
               inet6 addr: fe80::e47b:2c82:3bc1:4755/64 Scope:Link
               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
               RX packets:22 errors:0 dropped:0 overruns:0 frame:0
               TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
               collisions:0 txqueuelen:1000
               RX bytes:4123 (4.1 KB)  TX bytes:5843 (5.8 KB)

     lo        Link encap:Local Loopback
               inet addr:127.0.0.1  Mask:255.0.0.0
               inet6 addr: ::1/128 Scope:Host
               UP LOOPBACK RUNNING  MTU:65536  Metric:1
               RX packets:165 errors:0 dropped:0 overruns:0 frame:0
               TX packets:165 errors:0 dropped:0 overruns:0 carrier:0
               collisions:0 txqueuelen:1
               RX bytes:12085 (12.0 KB)  TX bytes:12085 (12.0 KB)

**認識されない？？**
~~[ここからリンクをたどって](https://github.com/ryuichiueda/raspimouse_book_info/issues/1)
ここへhttps://www.raspberrypi.org/forums/viewtopic.php?f=28&t=141834#p1152584
でもってここからhttps://github.com/DougieLawson/RaspberryPi/tree/master/brcm
brcm.7zをダウンロードして解凍して~~

このディレクトリにあるファイルを全部/lib/firmware/brcm/にコピーする。
https://github.com/RPi-Distro/firmware-nonfree/tree/master/brcm

    $ sudo cp brcm*.* /lib/firmware/brcm/
    $ sudo  reboot
           
    $ ifconfig
     eth0      Link encap:Ethernet  HWaddr b8:27:eb:4c:44:e2
               inet addr:192.168.11.13  Bcast:192.168.11.255  Mask:255.255.255.0
               inet6 addr: fe80::e47b:2c82:3bc1:4755/64 Scope:Link
               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
               RX packets:161 errors:0 dropped:0 overruns:0 frame:0
               TX packets:52 errors:0 dropped:0 overruns:0 carrier:0
               collisions:0 txqueuelen:1000
               RX bytes:24125 (24.1 KB)  TX bytes:7037 (7.0 KB)

     lo        Link encap:Local Loopback
               inet addr:127.0.0.1  Mask:255.0.0.0
               inet6 addr: ::1/128 Scope:Host
               UP LOOPBACK RUNNING  MTU:65536  Metric:1
               RX packets:165 errors:0 dropped:0 overruns:0 frame:0
               TX packets:165 errors:0 dropped:0 overruns:0 carrier:0
               collisions:0 txqueuelen:1
               RX bytes:12085 (12.0 KB)  TX bytes:12085 (12.0 KB)

     wlan0     Link encap:Ethernet  HWaddr b8:27:eb:19:11:b7
               inet addr:192.168.11.11  Bcast:192.168.11.255  Mask:255.255.255.0
               inet6 addr: fe80::ba27:ebff:fe19:11b7/64 Scope:Link
               UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
               RX packets:527 errors:0 dropped:7 overruns:0 frame:0
               TX packets:445 errors:0 dropped:0 overruns:0 carrier:0
               collisions:0 txqueuelen:1000
              RX bytes:163766 (163.7 KB)  TX bytes:106717 (106.7 KB)

**wlan0が認識された。**
https://wiki.debian.org/WiFi/HowToUse#GNOME

~~#ubuntuでRaspberry Pi Camera moduleを使う
https://github.com/UbiquityRobotics/raspicam_node/tree/indigo_safe
cd catkin_ws/src 
git clone https://github.com/UbiquityRobotics/raspicam_node.git
cd ../
catkin_make 
-- +++ processing catkin package: 'raspicam_node'
-- ==> add_subdirectory(raspicam_node)
CMake Error at raspicam_node/CMakeLists.txt:39 (MESSAGE):
Could not find vchostif library            
-- Configuring incomplete, errors occurred!
See also "/usb/catkin_ws/build/CMakeFiles/CMakeOutput.log".
See also "/usb/catkin_ws/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed
`sudo apt-get install libgeos-dev~~

###ROS Kineticnをインストール
http://wiki.ros.org/kinetic/Installation/Ubuntu

###ROSでRaspberry Pi camera moduleをつかう。
元記事
https://github.com/UbiquityRobotics/raspicam_node

インストール順が重要
VideiCore -> ROS -> raspicam_node
この順でないとraspicam_nodeがbuild errorになる。


http://linux.just4fun.biz/?Ubuntu/Ubuntu%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%A7%E8%87%AA%E5%8B%95%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%82%92%E6%9C%89%E5%8A%B9%E3%83%BB%E7%84%A1%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95

http://mprg-robot.isc.chubu.ac.jp/image_transport/

###image_transport
    $ rosrun image_transport republish theora in:=/raspicam_node/image raw out:=/raspicam_node/image_raw