Classic install or sys mode on Raspberry Pi
A howto for classic installation, or "sys mode".
This method works with a desktop PC under Ubuntu and other Linuxes.
Preparation
Download the archive from the Rasperry Pi armhf link here. Sha256 and GPG links appear next to the link to check the download.
On a class 10 sd-card with a size of 8Go or more, create two partitions:-
- First in fat16 with size of 256Mo. You may have to check
boot
andlba
flags - Second in ext4 with the remaining place
Eject and insert your SD card in order to recognize all the partitions.
Now go into the first partition (fat16).
Untar the archive with tar:
tar zxvf ~/Download/alpine-rpi-*-armhf.tar.gz
Due to a bug, it is recommended to add a file named usercfg.txt
into the partition. The file should contain the following single line:
enable_uart=1
Eject the SD card properly, insert it into the Raspberry Pi, plug a usb keyboard in plus the HDMI and network cables, and power on.
When a prompt displays, connect as root without a password.
Installation
Execute the following commands.
setup-alpine
Set the mapping keyboard, the timezone, how to connect to the network (dhcp is the best method), say none at save config
and save cache
.
apk update
Raspberry Pi has no battery for his hardware clock, so synchronize with an ntp server:
apk add chrony service chronyd restart apk add e2fsprogs mount /dev/mmcblk0p2 /mnt # The second partition, in ext4 format, where Alpine Linux is installing in sys mode setup-disk -m sys /mnt mount -o remount,rw /dev/mmcblk0p1 # An update in the first partition is required for the next reboot.
Clean up the boot folder in the first partition to drop unused files:
rm -f /media/mmcblk0p1/boot/* cd /mnt # We are in the second partition rm boot/boot # Drop the unused symbolink link
Move the image and init ram
for Alpine Linux into the right place:
mv boot/* /media/mmcblk0p1/boot/ rm -Rf boot mkdir media/mmcblk0p1 # It's the mount point for the first partition on the next reboot
Don't worry about the error with the following:
ln -s media/mmcblk0p1/boot boot
Update /etc/fstab
:
echo "/dev/mmcblk0p1 /media/mmcblk0p1 vfat defaults 0 0" >> etc/fstab sed -i '/cdrom/d' etc/fstab # Of course, you don't have any cdrom or floppy on the Raspberry Pi sed -i '/floppy/d' etc/fstab cd /media/mmcblk0p1
If you want to active edge repository
sed -i '/edge/s/^#//' etc/apk/repositories # But enable the repository for community if you want vim, mc, php, apache, nginx, etc.
For the next boot, indicate that the root filesystem is on the second partition:
sed -i 's/^/root=\/dev\/mmcblk0p2 /' cmdline.txt reboot
That works on Raspberry Pi 3B and 1B, but if you have the 1B version, let's be very, very patient (several tens of minutes).
If a hard disk is connected via usb, you can replace the /dev/mmcblk0p2
above with /dev/sda1
, for example.
If you don't like the sed above and its expressions, you can use a nano editor instead after executing the following command:
apk add nano
Post-installation
The Raspberry Pi (RPI) has no battery to keep the time updated. Therefore, we need to enable the right service to synchronize with an ntp server:
rc-update del hwclock boot rc-update add swclock boot service hwclock stop service swclock start
Update and upgrade the system:
apk update apk upgrade
If you want a cool editor (vim), a file manager (mc), and to determine which tasks are running and which services are starting on boot (htop), add the right packages:
apk add vim mc htop htop rc-update
The RPI 3B has wifi on board for networking, so start the service for the encrypted key on wpa2 protocol:
apk add wpa_supplicant rc-update add wpa_supplicant boot service wpa_supplicant start setup-interface
Replace the IP address by dhcp for all the interfaces if necessary; select the SSID network for wifi; and add password.
ip addr # to know the IP address for all interfaces
If you want to connect on your remote RPI via ssh
, an additional user (foo) and the sudo package are required because it's forbidden to connect as root:
apk add sudo adduser foo adduser foo wheel visudo
Uncomment line #82 with wheel ALL=(ALL) ALL
. If vim is installed, save the changes by typing Esc :x