定制 Raspberry Pi ArchLinuxARM 镜像

From eLinux.org
Jump to: navigation, search

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 这种盘符,对应的是量产的光盘文件。