Skip to content

Instantly share code, notes, and snippets.

@arvati
Last active September 7, 2023 19:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arvati/8f59e3b03458567424efa42174992705 to your computer and use it in GitHub Desktop.
Save arvati/8f59e3b03458567424efa42174992705 to your computer and use it in GitHub Desktop.
Install Alpine Linux on sdcard

Mount Destination partition on sdcard

lsblk -f
sudo fdisk /dev/sda
sudo mkfs -t ext4 /dev/sda1
sudo mount -t auto /dev/sda1 /mnt
cd /mnt
sudo su

mkdir -p ./etc/apk
wget http://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/apk-tools-static-2.14.0-r2.apk
wget http://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/apk-tools-2.14.0-r2.apk
tar -xzf apk-tools-static-2.14.0-r2.apk
tar -xzf apk-tools-2.14.0-r2.apk

./sbin/apk.static -U --allow-untrusted --root /mnt --initdb --arch x86_64 \
  -X http://nl.alpinelinux.org/alpine/v3.18/main \
  -X http://nl.alpinelinux.org/alpine/v3.18/community \
  -X http://nl.alpinelinux.org/alpine/edge/testing \
  add alpine-baselayout busybox busybox-suid busybox-mdev-openrc alpine-release \
  eudev udev-init-scripts udev-init-scripts-openrc mdevd mdevd-openrc \
  musl-utils alpine-base alpine-keys efi-mkkeys apk-tools \
  linux-lts mkinitfs pigz linux-firmware wireless-regdb \
  ca-certificates ssl_client haveged dosfstools zzz pm-utils \
  btrfs-progs f2fs-tools e2fsprogs iwd wpa_supplicant b43-fwcutter \
  network-extras openssl openssh chrony git sbctl grub-efi p7zip \
  tzdata acpi hdparm cpufreqd sudo nano acpid secureboot-hook efibootmgr\
  iptables ip6tables iputils iproute2 drill bonding bridge vlan \
  mesa-dri-gallium mesa-va-gallium intel-media-driver libva-intel-driver \
  v86d linux-firmware-amdgpu linux-firmware-radeon xf86-video-ati \
  lightdm xfce4 xfce4-terminal xfce4-screensaver lightdm-gtk-greeter dbus \
  elogind polkit-elogind gvfs udisks2 gvfs-smb gvfs-lang gvfs-nfs gvfs-fuse \
  fuse-openrc adwaita-icon-theme adw-gtk3 xorg-server xf86-input-libinput xinit udev \
  pciutils xf86-video-sis kbd xf86-input-libinput xf86-input-evdev \
  xf86-input-synaptics setxkbmap dbus-x11 openbox xterm openrc execline \
  firefox-esr libnotify chromium paxctl bluez bluez-deprecated hidapi pulseaudio-bluez \
  xrdp xorgxrdp bash cups cups-libs cups-pdf cups-client cups-filters hplip \
  pulseaudio pulseaudio-alsa alsa-plugins-pulse alsa-utils alsa-utils-doc alsa-lib alsaconf alsa-ucm-conf \
  libusb ghostscript python3 py-reportlab libjpeg libjpeg-turbo net-snmp gutenprint gutenprint-doc \
  font-terminus font-inconsolata font-dejavu font-noto font-noto-cjk font-awesome font-noto-extra

rm apk-tools*.apk
rm .PKGINFO

cat > ./etc/resolv.conf <<-EOF
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 2620:0:ccc::2
nameserver 2001:470:20::2
EOF

cat > ./etc/apk/repositories <<-EOF
http://nl.alpinelinux.org/alpine/v3.18/main
http://nl.alpinelinux.org/alpine/v3.18/community
http://nl.alpinelinux.org/alpine/edge/testing
EOF


mkdir -p ./etc/zoneinfo/America/
cp ./usr/share/zoneinfo/America/Sao_Paulo ./etc/zoneinfo/America/Sao_Paulo
ln -sf zoneinfo/America/Sao_Paulo ./etc/localtime
echo "America/Sao_Paulo" | tee ./etc/timezone

modprobe ipv6
echo "ipv6" >> ./etc/modules

echo 'ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100' >> ./etc/inittab
echo ttyS0 >> ./etc/securetty

mkdir -p ./etc/mkinitfs
echo 'features="base bootchart keymap ata ide scsi usb mmc nvme dhcp network https raid lvm squashfs ubifs btrfs ext4 ext2 f2fs xfs"' | sudo tee -a ./etc/mkinitfs/mkinitfs.conf

Enter chroot

mount -v -t proc none ./proc
mount -v --rbind /sys ./sys
mount --make-rprivate ./sys
mount -v --rbind /dev ./dev
mount --make-rprivate ./dev
mkdir -p ./run/shm
mount -v --bind /run/shm ./run/shm
mount --make-private ./run/shm
mount -t tmpfs tmp ./tmp -o mode=1777,nosuid,nodev,strictatime

chroot . /usr/bin/env -i SHELL=/bin/sh HOME=/root TERM="$TERM" PATH=/usr/sbin:/usr/bin:/sbin:/bin PS1='chroot # ' /bin/sh -l "$@"


Exit chroot

exit
cat /proc/mounts | cut -d' ' -f2 | grep /mnt/ | sort -r | while read path; do umount -vlfn "$path" ; done