xuv's notebook

Side notes, howtos and random bits of information related to Julien Deswaef's activities

User Tools

Site Tools


os:arch:arch_on_the_pi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
os:arch:arch_on_the_pi [2026/08/22 11:51] – removed - external edit (Unknown date) 127.0.0.1os:arch:arch_on_the_pi [2026/09/22 14:46] (current) – [Python UnicodeEncodeError horror] Julien Deswaef
Line 1: Line 1:
 +# Arch on a Pi
 +
 +Some random notes related to [[http://archlinuxarm.org|Arch Linux ARM]] on a Raspberry Pi. Some of these notes might be turned into their own page one day.
 +
 +## Blender
 +### Installing from packages on RPi3
 +[[https://archlinuxarm.org/packages/aarch64/blender|Blender is compiled for ARMv8 architecture only for AArch64]].
 +
 +See bottom of this page for the right archive to use at installation: https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3#installation
 +
 +Rendering a default file seems to require `xvfb`:
 +<code>
 +xvfb-run blender -b -noaudio untitled_e.blend -o // -f 1
 +</code>
 +
 +
 +### Compiling on RPi2
 +If it's still not in the repositories, here's a way to compile latest stable Blender for RPi2
 +[[https://projects.archlinux.org/svntogit/community.git/tree/trunk?h=packages/blender|Download these two files]]. And change these two lines from PKGBUILD:
 +
 +<code>
 +arch=('i686' 'x86_64')
 +…
 +  make -j4 # -j5 needs 48 GB of RAM while -j9 needs 64 GB
 +</code>
 +into 
 +<code>
 +arch=('armv7h')
 +…
 +  make -j2
 +</code>
 +This will get it compiled on the Raspberry Pi 2 itself. It will take a while ( couple hours ).
 +
 +## Installing web server
 +As root
 +<code=bash>
 +pacman -Syu nginx php-fpm
 +</code>
 +
 +Start and enable nginx and php-fpm
 +<code=bash>
 +systemctl start nginx 
 +systemctl start php-fpm
 +systemctl enable nginx
 +systemctl enable php-fpm
 +</code>
 +
 +Check if it is serving the default pages, but it should be.
 +
 +Change /etc/nginx/nginx.conf
 +
 +<code>
 +user http;
 +
 +server {
 +        listen       80;
 +        
 +        # watch out for the root location here, must be accessible from the user http
 + root /srv/http; 
 +
 +        location / {
 +            # add index.php to this line
 +            index  index.html index.htm index.php;
 +        }
 +
 +        # pass the PHP scripts to FastCGI server listening on php-fpm.sock
 +        location ~ \.php$ {
 +            fastcgi_pass   unix:/run/php-fpm/php-fpm.sock; 
 +            fastcgi_index  index.php;
 +            include        fastcgi.conf;
 +        }
 +
 +</code>
 +
 +## Installing ikiwiki
 +Install git and dev tools.
 +<code>
 +$: sudo pacman -Syu git base-devel
 +</code>
 +
 +Install [[https://aur.archlinux.org/packages/ikiwiki/| ikiwiki from Aur package]]. 
 +
 +You'll need 2 extra dependencies from Aur: 
 +  * [[https://aur.archlinux.org/packages/perl-cgi-formbuilder/ | perl-cgi-formbuilder]]
 +  * [[https://aur.archlinux.org/packages/perl-rpc-xml/ | perl-rpc-xml]]. 
 +Install those first. Compiling ikiwiki takes a while on a Raspberry Pi. Be patient.
 +
 +If you want to have images handle by the wiki, you will need also Imagemagick 
 +
 +Although ikiwiki could be running from any server, I found it easier to run it behind Apache. So be sure to have that installed.
 +
 +Create an unprivileged user (here called wiki) who will be editing the wiki:
 +<code>
 +sudo useradd -m wiki
 +sudo passwd wiki
 +</code>
 +
 +Following https://www.linode.com/docs/websites/wikis/ikiwiki-on-arch-linux/
 +
 +## Resizing a partition
 +*Copied from  [[http://raspberrypi.stackexchange.com/a/501]]*
 +
 + * `sudo fdisk /dev/mmcblk0`
 + * Type `p` to list the partition table
 +
 +   <code>
 +   Device         Boot  Start      End  Sectors  Size Id Type
 +   /dev/mmcblk0p1        2048   206847   204800  100M  c W95 FAT32 (LBA)
 +   /dev/mmcblk0p2      206848 60588031 60381184 28.8G 83 Linux
 +   </code>
 +
 + * Take note of the start number for partition 2 (if that's the one you want to resize)
 + * Type `d` to delete a partition. \\ You will then be prompted for the number of the partition you want to delete. In the case above you want to delete partition 2.
 + * Type `n` to create a new partition.
 + * This new partition needs to be a primary partition so type `p`.
 + * Next enter `2` when prompted for a partition number.
 + * You will now be prompted for the first sector for the new partition. Enter the start number from the partition 2 you deleted before.
 + * Next you will be prompted for the last sector you can just hit enter to accept the default which will utilize the remaining disk space.
 + * Type `w` to save the changes you have made. (There will be some error showing saying: "Re-reading the partition table failed.: Device or resource busy", but no worries).
 + * Reboot the Pi: `sudo reboot`
 + * Once the system has reboot and you are back at the commandline enter: ''sudo resize2fs /dev/mmcblk0p2'' Note: this can take a long time (epending on the card size and speed) be patient and let it finish.
 + * Reboot one more time.
 + * You can now verify that the system is using the full capacity of the SD Card by entering the following command: `df -h`
 +
 +#### Why This Works
 +Actually, when we delete a partition, we don't delete data, we just delete the reference to the partition in the partition table. By creating a new partition exactly from the same spot and of the same type, we keep the data but expanded the size to the full available space of the SD card.
 +
 +By resizing (which is safe to run on a mounted disk), we tell the file system to use all the space in the new partition.
 +
 +
 +## Python UnicodeEncodeError horror
 +So your Python script works on your machine. But when you port it to a freshly installed Arch Linux Arm on a Pi, all hell breaks loose as soon as a weird character pops up. Something like this shows up: 
 +<code>UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 227: ordinal not in range(128)</code>
 +Well, don't start modifying your Python code (as you said, it does not have that problem on your machine).  It's because the default locale of Arch Linux is `LANG-C` and what you want is UTF-8 support. There is many ways to solve this, including forcing Python to use a locale different from the system. But I like to have my systems with similar settings. So just follow tutorials [[https://wiki.archlinux.org/index.php/Locale|here]].
  
os/arch/arch_on_the_pi.1787392303.txt.gz · Last modified: by 127.0.0.1