刘总的笔记小站

生活常识,娱乐搞笑,编程技巧,智能家居,深度学习,网络神经,数据挖掘

制作树莓派Raspbian系统镜像

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文件


版权所有,禁商业化,侵权必究



发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
搜索
«   2024年9月   »
1
2345678
9101112131415
16171819202122
23242526272829
30
网站分类
最新留言
文章归档
网站收藏
友情链接
图标汇集
Powered by Z-BlogPHP

  • Copyright ©2021 @liuzong All rights reserved.
  • 陕ICP备17016542号