
{"id":370,"date":"2018-11-25T19:52:25","date_gmt":"2018-11-25T19:52:25","guid":{"rendered":"http:\/\/blog.gordonbuchan.com\/blog\/?p=370"},"modified":"2021-02-07T13:46:43","modified_gmt":"2021-02-07T13:46:43","slug":"installing-fedora-29-on-the-raspberry-pi-3-b","status":"publish","type":"post","link":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/2018\/11\/25\/installing-fedora-29-on-the-raspberry-pi-3-b\/","title":{"rendered":"Installing Fedora 29 on the Raspberry Pi 3 B+"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-371\" src=\"http:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2018\/11\/piboard-200x300.jpg\" alt=\"\" width=\"200\" height=\"300\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2018\/11\/piboard-200x300.jpg 200w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2018\/11\/piboard.jpg 608w\" sizes=\"auto, (max-width: 200px) 100vw, 200px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-372\" src=\"http:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2018\/11\/pibox-300x192.jpg\" alt=\"\" width=\"300\" height=\"192\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2018\/11\/pibox-300x192.jpg 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2018\/11\/pibox-768x490.jpg 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2018\/11\/pibox.jpg 880w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<h1>TL;DR<\/h1>\n<p>The recent release of Fedora 29 for the Raspberry Pi means that the hobbyist hardware platform can finally be considered as a viable alternative to Windows-on-Intel (\u201cWintel\u201d) hardware to host Linux server applications. Although too slow to operate as a useful Graphical User Interface (\u201cGUI\u201d) desktop, the Pi does a good job running a text-only web, file, and vpn server. This makes Fedora on Pi perfect for serving video files at home, or as a vpn server for a small home office or satellite office.<\/p>\n<h1>Actual practical HOWTO section<\/h1>\n<p>This section contains actual procedural information. After the practical information, there is a \u201cRant section.\u201d<\/p>\n<h2>Choosing the version you will install<\/h2>\n<p>For now, I suggest you avoid the GUI desktop altogether and stick with a text-only web, file, and vpn server based on Fedora 29 Minimal.<\/p>\n<h2>Downloading the Fedora 29 image file<\/h2>\n<p>Download the file for Fedora Minimal:<\/p>\n<p><a href=\"https:\/\/alt.fedoraproject.org\/alt\">https:\/\/alt.fedoraproject.org\/alt<\/a><\/p>\n<h2>How this is different from a Wintel install<\/h2>\n<p>A Wintel build consists of boot media, either a usb drive or a dvd drive, which contains a bootable image that includes an installer used to format another device, typically a hard drive, with boot and other partitions.<\/p>\n<p>The Raspberry Pi Fedora installer consists of an ISO image you will image to a micro-SD card. In the Pi world, everything boots from a FAT32 UEFI partition on a micro-SD card.<\/p>\n<h2>Understanding the Fedora 29 image file<\/h2>\n<p>The Fedora 29 image contains a FAT32 partition with an implementation of UEFI, and several ext4 partitions.<\/p>\n<h2>Decompressing the file containing the Fedora 29 image file<\/h2>\n<p>In Windows, use WinRAR to decompress the image file.<\/p>\n<p>In Linux:<\/p>\n<p>from: <a href=\"https:\/\/fedoraproject.org\/wiki\/Architectures\/ARM\/Raspberry_Pi\">https:\/\/fedoraproject.org\/wiki\/Architectures\/ARM\/Raspberry_Pi<\/a><\/p>\n<p>xzcat Fedora-IMAGE-NAME.raw.xz | sudo dd status=progress bs=4M of=\/dev\/XXX # Location of your media (will be sdX or mmcblkX depending on hardware)<\/p>\n<h2>Formatting the micro-SD card with the image<\/h2>\n<p>Windows:<\/p>\n<p><a href=\"https:\/\/sourceforge.net\/projects\/win32diskimager\/\">https:\/\/sourceforge.net\/projects\/win32diskimager\/<\/a><\/p>\n<p>Linux:<\/p>\n<p>(Decompression and image write to media part of the same operation above under \u201cDecompressing the Fedora image file\u201d)<\/p>\n<h2>Using a partition tool to expand the \/ partition on the micro-SD card<\/h2>\n<p>Windows:<\/p>\n<p><a href=\"https:\/\/www.easeus.com\/partition-manager\/epm-free.html\">https:\/\/www.easeus.com\/partition-manager\/epm-free.html<\/a><\/p>\n<p>Linux:<\/p>\n<p>gparted \/dev\/XXX<\/p>\n<h2>Following the text setup wizard<\/h2>\n<p>On first boot, at the bottom of the screen, you will see a set of questions regarding initial system username, password, and other settings. Follow the wizard \u2013 make sure you create a root password, The system will boot.<\/p>\n<h2>Rebooting into a standard machine<\/h2>\n<p>You will boot into a standard Linux login screen. Login as root.<\/p>\n<h1>Doing standard housekeeping and a standard build<\/h1>\n<p>From this point on in the build, the machine feels like a \u201cnormal\u201d Linux box.<\/p>\n<h2>Using nmcli to set a static ip address<\/h2>\n<p><a href=\"https:\/\/unix.stackexchange.com\/questions\/290938\/assigning-static-ip-address-using-nmcli\">https:\/\/unix.stackexchange.com\/questions\/290938\/assigning-static-ip-address-using-nmcli<\/a><\/p>\n<h2>Using dnf to install nano, rsync, and net-tools<\/h2>\n<p>A lot of things that you take for granted, like nano, rsync, and ifconfig (part of net-tools), do not exist until you add them with dnf.<\/p>\n<h2>Editing the selinux config file<\/h2>\n<p><a href=\"https:\/\/www.centos.org\/docs\/5\/html\/5.1\/Deployment_Guide\/sec-sel-enable-disable.html\">https:\/\/www.centos.org\/docs\/5\/html\/5.1\/Deployment_Guide\/sec-sel-enable-disable.html<\/a><\/p>\n<h2>Modifying or disabling firewalld<\/h2>\n<p>systemctl stop firewalld; systemctl disable firewalld<\/p>\n<p>(some people like firewalls, I think they are lazy \u2013 just turn off unneeded ports!)<\/p>\n<h2>Enabling an SSHD server<\/h2>\n<p>systemctl start sshd; systemctl enable sshd<\/p>\n<h2>Adding the rpmfusion repos<\/h2>\n<p><a href=\"https:\/\/rpmfusion.org\/Configuration\">https:\/\/rpmfusion.org\/Configuration<\/a><\/p>\n<p>dnf clean all; dnf update<\/p>\n<p>reboot<\/p>\n<h2>Doing a standard LAMP build<\/h2>\n<p><a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-install-lamp-linux-apache-mysql-php-on-fedora\">https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-install-lamp-linux-apache-mysql-php-on-fedora<\/a><\/p>\n<p>(notes: dnf install mariadb mariadb-server instead of dnf install mysql mysql-server, dnf install php-mysqlnd instead of dnf install php-mysql)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-373\" src=\"http:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2018\/11\/phpinfo-300x269.jpg\" alt=\"\" width=\"627\" height=\"562\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2018\/11\/phpinfo-300x269.jpg 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2018\/11\/phpinfo-768x689.jpg 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2018\/11\/phpinfo.jpg 966w\" sizes=\"auto, (max-width: 627px) 100vw, 627px\" \/><\/p>\n<h2>Installing a free cert with Let\u2019s Encrypt<\/h2>\n<p><a href=\"https:\/\/letsencrypt.org\/\">https:\/\/letsencrypt.org\/<\/a><\/p>\n<h2>Installing Nextcloud<\/h2>\n<p>Normally, I would just say, dnf install nextcloud and watch yum dependencies in action. Unfortunately, there is a missing dependency for php-composer(ircmaxell\/password-compat) which breaks nextcloud in yum\/dnf. This is not a good thing, however it is not specific to the Pi, it is a Fedora 29\/Nextcloud thing (and it would appear that Owncloud and Nextcloud do not get a lot of maintainer love in the yum repos).<\/p>\n<p>As it happens, I was able to deploy nextcloud 2 weeks ago on a cloud server using this script, and it worked just as well on this installation of Nextcloud on Fedora on the Pi:<\/p>\n<p><a href=\"https:\/\/help.nextcloud.com\/t\/fully-automated-nextcloud-on-fedora-installation-script\/27276\">https:\/\/help.nextcloud.com\/t\/fully-automated-nextcloud-on-fedora-installation-script\/27276<\/a><\/p>\n<h2>Doing a standard Samba build<\/h2>\n<p><a href=\"https:\/\/www.digitalocean.com\/community\/questions\/installing-configuring-samba-on-centos-7-droplet\">https:\/\/www.digitalocean.com\/community\/questions\/installing-configuring-samba-on-centos-7-droplet<\/a><\/p>\n<h3>Optimizing Samba file shares, especially for MacOS Finder clients:<\/h3>\n<p><a href=\"http:\/\/blog.gordonbuchan.com\/blog\/index.php\/2018\/10\/21\/fixing-slow-macos-finder-on-samba-file-share-optimizing-for-windows-clients\/\">http:\/\/blog.gordonbuchan.com\/blog\/index.php\/2018\/10\/21\/fixing-slow-macos-finder-on-samba-file-share-optimizing-for-windows-clients\/<\/a><\/p>\n<h2>Doing a standard OpenVPN build<\/h2>\n<p><a href=\"http:\/\/blog.gordonbuchan.com\/blog\/index.php\/2018\/01\/28\/a-corrected-procedure-for-the-installation-of-openvpn-on-fedora-27\/\">http:\/\/blog.gordonbuchan.com\/blog\/index.php\/2018\/01\/28\/a-corrected-procedure-for-the-installation-of-openvpn-on-fedora-27\/<\/a><\/p>\n<h2>Enabling the rc-local service in system<\/h2>\n<p><a href=\"https:\/\/www.linuxbabe.com\/linux-server\/how-to-enable-etcrc-local-with-systemd\">https:\/\/www.linuxbabe.com\/linux-server\/how-to-enable-etcrc-local-with-systemd<\/a><\/p>\n<h1>Rant section<\/h1>\n<p>Although some people like the rant, others just want a HOWTO. So the rant goes here, after the practical.<\/p>\n<h2>It is a big deal that Fedora treats the Pi\u2019s aarch64 as equal to Wintel\u2019s x64<\/h2>\n<p>The ability to use standard Red Hat software tools and procedures means that aside from differences in the installation process, the Pi feels like a normal, if slightly slow, Red Hat machine. Because Fedora on Pi has full standard repositories, you can use standard howtos and procedures to do a build.<\/p>\n<h2>Until now, Linux was effectively relegated to dumpster-diving Wintel boxen<\/h2>\n<p>Intel hardware originally designed for Windows is the commodity computing platform on which Linux was born. It is comforting to know that Linux now has a second viable hardware platform, which will grow in capability over time.<\/p>\n<h2>A motorcycle engine trying to power a car<\/h2>\n<p>I remember a TV show where a team of mechanics scoured a junkyard and found a motorcycle engine powerful enough to drive a car-sized frame, chassis, and wheels. The motorcycle engine was large by motorcycle standards \u2013 and was able to power the car form factor, but it struggled with the task. Like the motorcycle engine in the TV show, the Pi is now powerful enough to run a full Red Hat Linux (Fedora) server, but it struggles with a full GUI desktop like Gnome 3 or XFCE.<\/p>\n<h2>Vision and leadership and big decisions by Fedora and rpmfusion yum repo maintainers<\/h2>\n<p>The big decision by Fedora to provide full support for the Pi\u2019s aarch64 ARM cpu gives Linux its own hardware platform, for the first time. The Fedora project maintainers and the rpmfusion repo maintainers did an excellent job of ensuring that the yum repositories contained aarch64 binary rpm packages for everything that had an x64 package. Let me just say it is inspiring to see people with vision actually execute and do something like this.<\/p>\n<h2>Using standard procedures and software libraries<\/h2>\n<p>What is impressive is that the main yum repositories for fc29, as well as the rpmfusion free and non-free repositories, fully support aarch64. That means you can dnf install vlc filezilla, and it will work. Some repositories are not there yet, such as the remi rpm repo for php56 support on modern fedora, so I will be limited to php72 for the moment. Some third-party repos, like google-chrome, do not yet support aarch64, however I was able to install Chromium.<\/p>\n<h2>What the Pi is not so good at: GUI desktop<\/h2>\n<p>When I first installed Fedora 29 Workstation on the Pi, the GUI was virtually unusable. It became better over time, but would sometimes freeze. I turned off the Gnome 3 desktop, did all the dnf updates, then turned on Gnome 3. After a few tweaks with the Gnome tweaks took I was able to run LibreOffice Writer, Chromium, and FileZilla, but only very slowly. XFCE was slightly faster but not enough to make a difference. Although rpmfusion allowed me to dnf install vlc, VLC was virtually unusable \u2013 but props to everyone in that value chain for vision \u2013 a hardware rev or 2 from now the VLC will be usable.<\/p>\n<h2>The Pi is fast as a text server<\/h2>\n<p>I decided to go the other way and install a text-only server from the ground up. There are some Raspberry Pi-specifics to the build I will address in the Install procedure section. However, the rest was identical to the way one would build a wintel linux box. On my brother\u2019s advice, I decided to use Fedora 29 Minimal. It really is minimal: I had to use dnf to install nano and rsync. However, I was able to do a dnf update including the rpmfusion free and non-free repositories. Because I had full standard repositories, I could use standard howtos and procedures to do my build.<\/p>\n<p>I then built a standard LAMP web server, an SSL cert with let\u2019s encrypt, an installation of nextcloud media server, samba file share server, openvpn vpn server. The server performed well \u2013 so well that I am already planning to deploy a few in the field as openvpn servers and rsync backup data dumps.<\/p>\n<h2>A random reference to a satirical book about home servers<\/h2>\n<p><a href=\"https:\/\/gizmodo.com\/342499\/microsofts-brainwashing-childrens-book-mommy-where-do-servers-come-from\">https:\/\/gizmodo.com\/342499\/microsofts-brainwashing-childrens-book-mommy-where-do-servers-come-from<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-374\" src=\"http:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2018\/11\/homeserver-300x285.png\" alt=\"\" width=\"779\" height=\"740\" srcset=\"https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2018\/11\/homeserver-300x285.png 300w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2018\/11\/homeserver-768x730.png 768w, https:\/\/blog.gordonbuchan.com\/blog\/wp-content\/uploads\/2018\/11\/homeserver.png 800w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>TL;DR The recent release of Fedora 29 for the Raspberry Pi means that the hobbyist hardware platform can finally be considered as a viable alternative to Windows-on-Intel (\u201cWintel\u201d) hardware to host Linux server applications. Although too slow to operate as a useful Graphical User Interface (\u201cGUI\u201d) desktop, the Pi does a good job running a &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/2018\/11\/25\/installing-fedora-29-on-the-raspberry-pi-3-b\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Installing Fedora 29 on the Raspberry Pi 3 B+&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-370","post","type-post","status-publish","format-standard","hentry","category-linux"],"_links":{"self":[{"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=370"}],"version-history":[{"count":12,"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/370\/revisions"}],"predecessor-version":[{"id":693,"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/370\/revisions\/693"}],"wp:attachment":[{"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.gordonbuchan.com\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}