0,官方树莓派Raspbian系统镜像预装了开发软件,树莓派Raspbian lite系统镜像又只支持命令行没有GUI桌面
# 如果给客户定制软件,需要标准桌面镜像文件,并且达到开箱即用,预装开发的各种软件,直接烧写镜像即可。
1,下载制IMG镜像的脚本文件,注意选择debian或ubuntu系统:【https://github.com/RPi-Distro/pi-gen/】
git clone https://github.com/RPi-Distro/pi-gen/tree/2018-06-27-raspbian-stretch
2,配置阶段:
Raspbian desktop: echo "IMG_NAME='Raspbian'" > config touch ./stage4/SKIP ./stage5/SKIP rm ./stage2/EXPORT_IMAGE ./stage2/EXPORT_NOOBS touch ./stage3/EXPORT_IMAGE ./stage3/EXPORT_NOOBS echo "IMG_SUFFIX='-desktop'" > ./stage3/EXPORT_IMAGE Raspbian lite: echo "IMG_NAME='Raspbian'" > config touch./stage3/SKIP./stage4/SKIP ./stage5/SKIP touch ./stage4/SKIP_IMAGES ./stage5/SKIP_IMAGES
3,配置脚本软件源,如果不配置直接从raspberrypi官网下载,异常缓慢:
jessie: sed -i 's#://mirrordirector.raspbian.org#s://mirrors.ustc.edu.cn/raspbian#g' `grep mirrordirector.raspbian.org -rl .` sed -i 's#://archive.raspberrypi.org/debian#s://mirrors.ustc.edu.cn/archive.raspberrypi.org#g' `grep archive.raspberrypi.org -rl .` stretch: sed -i 's#://raspbian.raspberrypi.org#s://mirrors.ustc.edu.cn/raspbian#g' `grep raspberrypi.org -rl .` sed -i 's#://archive.raspberrypi.org/debian#s://mirrors.ustc.edu.cn/archive.raspberrypi.org#g' `grep raspberrypi.org -rl .`
4,执行构建:
sudo ./build.sh # or ./build-docker.sh
5,烧写镜像:
linux: sudo dd bs=4M if=2017-07-05-raspbian-jessie-lite.img of=/dev/sdb win: Win32DiskImager-0.9.5-binary
6,完整脚本
#!/bin/bash #set -o errexit #set -o nounset echo "main init ------>>>" config_sourceUrl(){ osver=$(grep 'stretch' -c stage0/prerun.sh) if [ $osver -le 0 ]; then # jessie archive.raspberrypi.org mirrordirector.raspbian.org # grep -E '(archive.raspberrypi|mirrordirector.raspbian)\.org' -r --exclude-dir='work' . sourceFile=$(grep -E '(archive.raspberrypi|mirrordirector.raspbian)\.org' -rl stage* export*) sed -i 's#://mirrordirector.raspbian.org#s://mirrors.ustc.edu.cn/raspbian#g' $sourceFile sed -i 's#://archive.raspberrypi.org/debian#s://mirrors.ustc.edu.cn/archive.raspberrypi.org#g' $sourceFile else # stretch archive.raspberrypi.org raspbian.raspberrypi.org # grep -E '(raspbian|archive)\.raspberrypi.org' -r --exclude-dir='work' . sourceFile=$(grep -E '(raspbian|archive)\.raspberrypi.org' -rl stage* export*) sed -i 's#://raspbian.raspberrypi.org#s://mirrors.ustc.edu.cn/raspbian#g' $sourceFile sed -i 's#://archive.raspberrypi.org/debian#s://mirrors.ustc.edu.cn/archive.raspberrypi.org#g' $sourceFile fi } build_lite_image(){ # Raspbian lite: echo "build lite ------>>>" export LC_CTYPE="zh_CN.UTF-8" export LC_MESSAGES="zh_CN.UTF-8" export LC_ALL=zh_CN.utf8 echo "IMG_NAME='Raspbian'" > config rm -f ./stage3/EXPORT_IMAGE ./stage3/EXPORT_NOOBS touch ./stage3/SKIP ./stage4/SKIP ./stage5/SKIP touch ./stage3/SKIP_IMAGES ./stage4/SKIP_IMAGES ./stage5/SKIP_IMAGES touch ./stage2/EXPORT_IMAGE ./stage2/EXPORT_NOOBS echo "IMG_SUFFIX='-lite'" > ./stage2/EXPORT_IMAGE echo "543604" | sudo -S ./build.sh } build_desk_image(){ # Raspbian desktop: echo "build desk ------>>>" export LC_CTYPE="zh_CN.UTF-8" export LC_MESSAGES="zh_CN.UTF-8" export LC_ALL=zh_CN.utf8 echo "IMG_NAME='Raspbian'" > config rm -f ./stage2/EXPORT_IMAGE ./stage2/EXPORT_NOOBS rm -f ./stage3/SKIP ./stage3/SKIP_IMAGES touch ./stage4/SKIP ./stage5/SKIP touch ./stage4/SKIP_IMAGES ./stage5/SKIP_IMAGES touch ./stage3/EXPORT_IMAGE ./stage3/EXPORT_NOOBS echo "IMG_SUFFIX='-desk'" > ./stage3/EXPORT_IMAGE echo "543604" | sudo -S ./build.sh } echo "config_sourceUrl begin ------>>>" config_sourceUrl echo "config_sourceUrl end ------>>>" echo "build_lite_image begin ------>>>" build_lite_image echo "build_lite_image end ------>>>" echo "build_desk_image begin ------>>>" build_desk_image echo "build_desk_image end ------>>>" echo "main exit ------>>>" exit 0
7,开机运行:
# startx # username: pi password: raspberry
8,备注:
# 在此需要说明编译Raspbian desktop或者Raspbian lite命令有细微的区别,区别在于EXPORT_IMAGE只能有一个 # 如果编译lite版本,默认在stage2里面就行,其他后面stage创建的EXPORT_IMAGE将无效,只有最前面的才有效 # 如果编译desktop版本,删除默认在stage2里面的EXPORT_IMAGE文件,再在stage3里创建EXPORT_IMAGE文件
版权所有,禁商业化,侵权必究