HCL:Raspberry Pi
tagline: From openSUSE
The Raspberry Pi is a credit-card sized computer that plugs into your TV and a keyboard. It’s a capable little PC which can be used for many of the things that your desktop PC does, like spreadsheets, word-processing and games. It also plays high-definition video.
Contents
- 1 Technical Data
- 2 Installing openSUSE images using upstream kernel (does not include hardware video decoding)
- 3 Installing openSUSE images using downstream kernel (includes hardware video decoding)
- 4 Additional software for Raspberry Pi
- 5 Misc
- 5.1 Configuring the openSUSE system on the Raspberry Pi
- 5.1.1 Using the system headless
- 5.1.2 Manual Yast2 Install
- 5.1.3 SuSEfirewall2
- 5.1.4 Resizing openSUSE RPi SD card using YaST2
- 5.1.5 Configure Boot & System startup parameters /boot/config.txt
- 5.1.6 Using a keyboard
- 5.1.7 Configure default system runlevel for headless
- 5.1.8 Manual Network Setup for Static IP
- 5.1.9 Disable IPV6
- 5.1.10 Disable LINKLOCAL / Zeroconf / 169.254.0.0/16 on headless
- 5.1.11 openSUSE self kernel compile
- 5.1.12 HP hplip Cups drivers for RPi
- 5.2 Troubleshooting RPi
- 5.1 Configuring the openSUSE system on the Raspberry Pi
Technical Data
- Broadcom BCM2835 SoC
- ARM1176JZ-F CPU (ARMv6)
- Dual Core VideoCore IV® Multimedia Co-Processor
- 1080p30 Full HD HP H.264 Video Encode/Decode
- Advanced Image Sensor Pipeline (ISP) for up to 20-megapixel cameras operating at up to 220 megapixels per second
- Low power, high performance OpenGL-ES® 1.1/2.0 VideoCore GPU. 1 Gigapixel per second fill rate.
- High performance display outputs. Simultaneous high resolution LCD and HDMI with HDCP at 1080p60
- 26-pin connector (model A/B) or 40-pin connector (A+/B+)
More technical data (tests and configurations) on openSUSE:Raspberry_Pi.
Also the E-Linux Org PI HUB at http://elinux.org/RPi_Hub give you a lot of help in case of setup, hardware compatibility, use cases and more.
Installing openSUSE images using upstream kernel (does not include hardware video decoding)
Installing the openSUSE Tumbleweed image
- Download the image you want (Leap is stable, Tumbleweed is rolling) from here:
If the direct links above do not work for you (as we are constantly building new images), please check the general download directory for the images.
Version:TumbleweedJeOS image E20 image XFCE image LXQT image X11 image - As root extract the image onto your SD card (replace sdX with the device name of your SD card).
WARNING: all previous data on the SD card will be lost. Check first if the device you have selected is really your SD card!xzcat [image].raw.xz | dd bs=4M of=/dev/sdX iflag=fullblock oflag=direct; sync
- Insert the SD card with the openSUSE image into your board.
- Connect the board to your PC via serial port (optional, but helpful for debugging; USB-TTL serial cable needed).
- Connect the board to your monitor (via DVI/HDMI, optional).
- Power on the board.
- Ethernet is configured to request an IP via DHCP, check your DHCP server for the board IP if used.
- Have a lot of fun...
Alternatively can download Etcher, an open source tool to flash your image graphically.
Default login is root:linux, works on serial console, via ssh, GUI.
Known Issues with Tumbleweed (upstream)
The frame buffer needs to be set to get the appropriate resolution in the x images
- 1. edit /boot/boot.script
- set bcm2708_fb.fbwidth=1280 and bcm2708_fb.fbheight=1024 in bootargs
- 2. Then rebuild the boot.scr
- mkimage -C none -A arm -T script -d boot.script boot.scr
Tips for Tumbleweed (upstream)
If you do not see any kernel output on serial or HDMI, you can add earlycon=pl011,0x20201000,115200n8 to the kernel command line for troubleshooting (e.g., by editing the GRUB menu item).
Installing openSUSE images using downstream kernel (includes hardware video decoding)
Installing the non-upstream openSUSE Tumbleweed image
- Download the image you want (Leap is stable, Tumbleweed is rolling) from here:
If the direct links above do not work for you (as we are constantly building new images), please check the general download directory for the images.
Version:TumbleweedJeOS image E20 image XFCE image LXQT image X11 image - As root extract the image onto your SD card (replace sdX with the device name of your SD card).
WARNING: all previous data on the SD card will be lost. Check first if the device you have selected is really your SD card!xzcat [image].raw.xz | dd bs=4M of=/dev/sdX iflag=fullblock oflag=direct; sync
- Insert the SD card with the openSUSE image into your board.
- Connect the board to your PC via serial port (optional, but helpful for debugging; USB-TTL serial cable needed).
- Connect the board to your monitor (via DVI/HDMI, optional).
- Power on the board.
- Ethernet is configured to request an IP via DHCP, check your DHCP server for the board IP if used.
- Have a lot of fun...
Alternatively can download Etcher, an open source tool to flash your image graphically.
Default login is root:linux, works on serial console, via ssh, GUI.
Known Issues with Tumbleweed (downstream)
None.
Installing the openSUSE 13.2 Image
- Download the latest image at http://download.opensuse.org/repositories/devel:/ARM:/13.2:/Contrib:/RaspberryPi/images/
- JeOS image for a minimal system openSUSE-13.2-ARM-JeOS-raspberrypi-*.raw.xz
- As root extract the image onto your SD-Card (replace sdX with the device name of your SD-Card).
xzcat [image].raw.xz | dd bs=4M of=/dev/sdX oflag=sync
First start / Login
The SD card is formatted with GPT (GUID Partition Table). On the first boot with this SD card, the card will be repartitioned by the image to have 4 partitions:
- a small FAT partition
- a small EXT3 partition
- a large EXT4 partition (takes whatever the other 3 leave behind)
- a SWAP partition.
Known Issues with 13.2
- Do not repartition the SD card like with 13.1, after putting the image in the card.
- One of the three software repositories defined in the image is wrong. The OSS and update OSS are OK.
- To start the RPi headless, remove the file /var/lib/YaST2/reconfig_system from the EXT4 partition on the SD card.
- zypper update and zypper dist-upgrade may fail on old JeOS images. Just do a zypper ref before your zypper update or zypper dist-upgrade.
- See HCL:Raspberry_Pi#Toubleshooting_RPI for help
Installing the openSUSE 13.1 Image
- Download the latest image at http://download.opensuse.org/repositories/devel:/ARM:/13.1:/Contrib:/RaspberryPi/images/
- JeOS image for a minimal system openSUSE-13.1-ARM-JeOS-raspberrypi-*.raw.xz
- As root extract the image onto your SD-Card (replace sdX with the device name of your SD-Card). WARNING: all previous data on the SD-Card will be lost.
xzcat [image].raw.xz | dd bs=4M of=/dev/sdX oflag=sync
First start / Login
- Insert the SD card with the openSUSE image into your Raspberry Pi
- Connect the Raspberry Pi to your monitor via DVI or HDMI.
- Power on the Raspberry Pi.
- Walk through the first boot steps and YaST2 firstboot will be auto-started (auto-resize, configure initial values: user, password, etc.).
- Install software you want to have
- Have a lot of fun...
Known Issues with 13.1
- No initrd is used, so auto-resize of partition is not performed. You can extend the EXT partition (2nd partition) to match the size of your SD card using YaST2 partitioner (or other partitioning tools).
- To start the RPi headless, remove the file /var/lib/YaST2/reconfig_system from the EXT4 partition on the SD card.
- zypper update and zypper dist-upgrade may fail on old JeOS images. Just do a zypper ref before your zypper update or zypper dist-upgrade.
- See HCL:Raspberry_Pi#Toubleshooting_RPI for help
Additional software for Raspberry Pi
Some additional software is available for Raspberry Pi. Some is in official openSUSE repositories, others are in Packman repositories.
Packman repos
You should add Essentials and Multimedia repos if you want to get multimedia software.
| Version: Tumbleweed
|
zypper ar -f http://pmbs.links2linux.de:82/Essentials/openSUSE_Factory_ARM/Essentials.repo zypper ar -f http://pmbs.links2linux.de:82/Multimedia/openSUSE_Factory_ARM/Multimedia.repo |
| Version: 13.2
|
zypper ar -f http://pmbs.links2linux.de:82/Essentials/openSUSE_13.2_ARM/Essentials.repo zypper ar -f http://pmbs.links2linux.de:82/Multimedia/openSUSE_13.2_ARM/Multimedia.repo |
| Version: 13.1
|
zypper ar -f http://pmbs.links2linux.de:82/Essentials/openSUSE_13.1_ARM/Essentials.repo zypper ar -f http://pmbs.links2linux.de:82/Multimedia/openSUSE_13.1_ARM/Multimedia.repo |
Multimedia
In multimedia software, you may want to install:
- omxplayer: a command line media player making use of Raspberry Pi video hardware acceleration
- kodi-noX-raspberry-pi: a media center (without X server and including Raspberry Pi video hardware acceleration)
Misc
Configuring the openSUSE system on the Raspberry Pi
Using the system headless
A headless system does not have a display and a keyboard connected. It is only connected to the network.
- The image above is setup to require a display and a keyboard to set some system parameters. However this prevents the image to start headless. The solution is to remove the file /var/lib/YaST2/reconfig_system from the ext4 partition on the SD card.
- Connect to the system using ssh and the login information, user: root password: linux and the IP address the system received from your DHCP server in your network.
- Use zypper to install the necessary services and applications (the system already contains a link to the repository containing this software).
- If you are not familiar using config files for services and application, but you are using YaST, you can install a number of YaST modules and use the ncurses interface to YaST to configure your system.
Manual Yast2 Install
# Note: this requires around 150MB free disk space on a freshly new SD. # Yast2 Base: zypper install yast2 # Yast2 YOU base: zypper install yast2-online-update yast2-online-update-configuration yast2-online-update-frontend ncurses libyui-ncurses libyui-ncurses-pkg4 # Yast2 base sysconfig: zypper install yast2_basis patterns-openSUSE-yast2_basis yast2-inetd yast2-network yast2-storage yast2-sysconfig yast2-trans yast2-sudo yast2-sshd yast2-runlevel yast2-pam Yast2 .. some modules. zypper install yast2-instserver yast2-installation yast2-ldap-client yast2-mail yast2-samba-server yast2-samba-client # If you think you miss a Yast2 module, install it ... zypper search yast2 | egrep -v '(debuginfo|debugsource|devel|Quellpaket)' zypper install <module>
In case you want the more familiar YaST2 windows, you have to install an x11 package and a number of yast qt packages
zypper in yast2-x11 yast2-control-center-qt libui-qt-pkg4(a number of needed packages are also pulled in) and start YaST using
yast2In this case you have to make the ssh connection using
ssh -X root@<IP address RPi>Warning: It may take up to 60 seconds before you get the YaST window on your screen.
- Have a lot of fun installing and configuring...
SuSEfirewall2
To install Firewall and manage it with YaST2, you need to install Yast2 and iptables:
zypper install yast2-firewall iptables SuSEfirewall2
Resizing openSUSE RPi SD card using YaST2
To increase the size of the root filesystem itself:
It is not possible to resize a mounted filesystem, but without a mounted root you can't use any programs. So you will need a second computer to perform the following.
- If you have data on the SD card, make a backup & verify it!
- Poweroff the RPi and take the SD card to a second machine.
- Resize / Partition actions with Yast2:
(See docu http://de.opensuse.org/YaST_Module_Partitionierer) - In German
Yast2 -> menu : System -> menu : Partitioner -> Menu -> Partition: /dev/mmcblk0p3 <return> -> menu : "Resize..."
menu : "Custom Size ", enter the size you want for the root FS, at least 2 G should be used.
Edit the size to what you like ... i.e. 10GB
Save & run it ("Finish").
errors can be ignored, just force it, say yes at questions
- Install the SD card and boot your RPi.
- Login as root.
Run this command - may not be necessary for all builds.
- resize2fs /dev/mmclk0p2
(see http://linux.die.net/man/8/resize2fs)
Configure Boot & System startup parameters /boot/config.txt
Using a keyboard
- Manual way of updating keyboard:
zypper install vim vi /etc/sysconfig/keyboard
- Change to e.g. (sample for standard german 105 keytype´s):
KEYTABLE="de-latin1-nodeadkeys"
reboot your Pi after changes.
Configure default system runlevel for headless
with Opensuse after 12.3 for RPi systemd are the default, no sys5 init system anymore :-)
How do I change the runlevel? systemd has the concept of targets which is a more flexible replacement for runlevels in sysvinit.
Run level 3 is emulated by multi-user.target. Run level 5 is emulated by graphical.target. runlevel3.target is a symbolic link to multi-user.target and runlevel5.target is a symbolic link to graphical.target.
You can switch to ‘runlevel 3′ by running
- systemctl isolate multi-user.target (or) systemctl isolate runlevel3.target
You can switch to ‘runlevel 5′ by running
- systemctl isolate graphical.target (or) systemctl isolate runlevel5.target
To set runlevel 5 and 3 we should modify a symbolic link to point a specific Target symbolic link metric:
(runlevel 5) : rm /etc/systemd/system/default.target ln -sf /usr/lib/systemd/system/graphical.target /etc/systemd/system/default.target
(runlevel 3) : rm /etc/systemd/system/default.target ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
Manual Network Setup for Static IP
Steps to Setup Static Network on Factory OpenSuSE Image below
Assume your network is an Class C 192.168.1.x with Router/gateway/dns a at .1
and your local domain called "local"
echo "default 192.168.1.1 - -" >/etc/sysconfig/network/routes cp -p /etc/sysconfig/network/ifcfg-eth0_orig cat << EOF >/etc/sysconfig/network/ifcfg-eth0 STARTMODE='auto' BOOTPROTO='static' BROADCAST='192.168.1.255' ETHTOOL_OPTIONS='' IPADDR='192.168.1.20/24' MTU='' NAME='eth0' NETWORK='192.168.1.0' REMOTE_IPADDR='' USERCONTROL='no' # EOF cp -p /etc/resolv.conf /etc/resolv.conf.orig cat << EOF >/etc/resolv.conf nameserver 192.168.1.1 domain local search local # EOF For permanent DNS / NTP settings edit the /etc/sysconfig/network/config settings instead of /etc/resolv.conf & /etc/ntp.conf upon your own needs. NETCONFIG_DNS_STATIC_SERVERS NETCONFIG_DNS_STATIC_SEARCHLIST NETCONFIG_DNS_RESOLVER_OPTIONS NETCONFIG_NTP_STATIC_SERVERS echo "192.168.1.20 MyPIHostname.local MyPIHostname >>/etc/hosts echo MyPIHostname >/etc/HOSTNAME
and do:
rcnetwork reload rcntp reload "
Disable IPV6
Steps for disabling ipv6:
echo "net.ipv6.conf.all.disable_ipv6=1" >/etc/sysctl.d/disableipv6.conf The non-systemd way (typically for 12.2 and earlier) Code: sysctl -p The systemd way (12.3 and later although the above should still work indefinitely) Code: systemctl restart systemd-sysctl.service
Disable LINKLOCAL / Zeroconf / 169.254.0.0/16 on headless
The link-local (169.254.0.0/16) zero conf network may not always required - i.e., at headless to disable it do the following steps:
Change "NOZEROCONF" to yes.
vi /etc/sysconfig/network/config NOZEROCONF="yes"
save it exec : rcnetwork restart
openSUSE self kernel compile
For some RPi kernels available the source and running kernel do not match due to the automated image build failing. The workaround for this is self compile and install your own kernel.
Steps to do:
First we pick an up to date RPi kernel source from GitHub RPi - the standard kernel sources do not have all patches.
cd /usr/src
cat << EOL >git3.11.y-update.sh
#!/bin/sh
cd /usr/src
if [ ! -d SOURCES ]; then
mkdir SOURCES
fi
if [ ! -d GIT ]; then
mkdir GIT
fi
cd GIT
if [ -d .git ]; then
rm -rf .git
rm .gitignore .mailmap
fi
git init
D=2013-12-20
if [ -d rpi-3.11.y. ]; then
rm -rf rpi-3.11.y
fi
cd /usr/src/GIT
mkdir rpi-3.11.y
git fetch git://github.com/raspberrypi/linux.git rpi-3.11.y:refs/remotes/origin/rpi-3.11.y
git checkout origin/rpi-3.11.y
mv ./* rpi-3.11.y
tar cpfj /usr/src/SOURCES/rpi-3.11.y.tar.bz2 rpi-3.11.y
cd /usr/src
tar xpfj SOURCES/rpi-3.11.y.tar.bz2
rm linux
ln -s rpi-3.11.y linux
#
EOL
chmod 750 git3.11.y-update.sh nohup git3.11.y-update.sh &
This take 2-4 ...depend on your network speed and SD card , cpu load.
now we build the kernel
cat << EOL >make-linux.sh cd /usr/src/linux kversion=$(make -s kernelrelease) echo $kversion #make distclean clean #make cloneconfig #make oldconfig zcat /proc/config.gz >/boot/config-$kversion ## zcat /proc/config.gz >.config #cp -p /boot/System.map-$kversion /usr/src/linux/System.map touch /usr/src/linux/include/linux/modversions.h nohup make \ CPPFLAGS="-Ofast -mfpu=vfp -march=armv6zk -mtune=arm1176jzf-s" \ CFLAGS="-Ofast -mfpu=vfp -march=armv6zk -mtune=arm1176jzf-s" \ dep zImage modules & # EOL
cd linux make oldconfig cd .. nohup make-linux.sh &
This can take up to 30H ..depend on your and SD card , cpu load. This requires a swapfile configured with at least 512M - I use 1G .
once done, install it:
cd /usr/src cat << EOL >installkernel.sh /bin/sh D=`date +%Y%m%d_%H%M` mkdir /boot.old-$D echo "backing up /boot to /boot.old-$D" cp -p /boot/* /boot.old-$D/ cd /usr/src/linux kversion=$(make -s kernelrelease) echo "Installing selfcompiled $kversion kernel" cp System.map /boot/System.map-$kversion cp System.map /boot/System.map make ARCH=arm modules_install INSTALL_MOD_PATH=/ make ARCH=arm INSTALL_PATH=/boot/ install cp .config /boot/config-$kversion cp ./Module.symvers /boot/symvers-$kversion cp arch/arm/boot/Image /boot/kernel.img echo "You can reboot now rebooting" echo " In case of failures , copy back the backup from /boot.old-$D \nwith use of an sdcard reader and an Opensuse Live cd within an OS emulator Like vmware Player" echo ""
Reboot after done that. In case of possibly failure - restore old kernel.
HP hplip Cups drivers for RPi
as not yet build by oss service for RPi, see 3rd party Build Project on GITHUB https://github.com/remsnet/OpenSuSE-hplip
The created build for Raspberry Pi
RPM & SRPM created for openSUSE 13.1 RPi arm
are stored at our Drop Box URL for openSUSE RPi
https://www.dropbox.com/sh/ofpzj8u3j2v43zq/mqoFqLLzQB
Troubleshooting RPi
Moved to openSUSE:Raspberry_Pi#Troubleshooting_RPi

