定制 Raspberry Pi ArchLinuxARM 镜像

Build Environment

 * piimg

piimg 用来 mount pi 的 image 文件

packer -S --noedit --noconfirm piimg-git


 * binfmt-qemu-static

binfmt 可以在 Host 机器上执行不同指令集的二进制文件

packer -S --noedit --noconfirm binfmt-qemu-static


 * qemu-static

qemu-static 作为 binfmt 所需要的二进制解释器

packer -S --noedit --noconfirm qemu-static

增加 archphile repo
[archphile] SigLevel = Never Server = http://archphile.org/repo/arm7

修改 hosts 节省国内 DNS 时间

137.132.155.168 sg2.mirror.archlinuxarm.org 51.254.158.135 archphile.org

在 /boot/config.txt 中打开 DAC 驱动和音频控制所需要的各类总线：

device_tree_param=i2c_arm=on device_tree_param=i2c_vc=on device_tree_param=i2s=on dtoverlay=rpi-dac

 mpd.conf  文件

zeroconf_enabled "no" follow_outside_symlinks        "yes" follow_inside_symlinks "yes" db_file        "/var/lib/mpd/mpd.db" log_file       "/var/log/mpd.log" pid_file       "/var/run/mpd/pid" music_directory        "/var/lib/mpd/music" playlist_directory     "/var/lib/mpd/playlists" state_file     "/var/lib/mpd/mpdstate" bind_to_address        "0.0.0.0" port   "6600" log_level      "default" volume_normalization   "no" audio_buffer_size      "2048" buffer_before_play     "20%" filesystem_charset     "UTF-8" id3v1_encoding "UTF-8" gapless_mp3_playback   "yes" auto_update    "no" mixer_type     "hardware" max_connections "20" restore_paused "no"

decoder { plugin "ffmpeg" enabled "yes" }

input { plugin "curl" }

audio_output { enabled        "yes" type           "alsa" name           "IQAudio+" device         "hw:0,0" mixer_control  "Digital" auto_resample  "no" auto_channels  "no" auto_format    "no" dsd_usb        "yes" }

IMAGE 软件包安装
pacman -S dialog wpa_supplicant iw mpd ympd-archphile proxychains-ng libpulse opus mpd

开发 IMAGE 的包
pacman -S base-devel linux-raspberrypi-headers

扩展 root 分区，使用全部 SD 卡的空间
做 image 的时候，如果直接做一个 32G 的 image ，在 dd 写入 sd 卡的时候会有大量的无效IO，因此，一般做 image 都是只做一个 2G/4G 大小的. dd 完以后， 我们需要在系统内扩展分区，让系统能够使用全量的 sd 卡空间.


 * cfdisk 删除最后一个分区


 * cfdisk 新建最后一个分区 ，使用全量的剩余空间


 * resize2fs /dev/mmcblk0p2

自动 mount U 盘
pacman -S udevil

然后对 /etc/udevil/udevil.conf 文件中，做如下修改：

allowed_devices = /dev/sd*1,/dev/sd*2,/dev/sd*3

因为某些量产过后的 U 盘，/dev/sda 这种盘符，对应的是量产的光盘文件.