From 77fea74aad17cb6ba390fb5f37c498b8d385819f Mon Sep 17 00:00:00 2001 From: yafen Date: Mon, 20 Jul 2020 13:29:05 +0800 Subject: [PATCH 1/2] shell and spec for build raspi image --- README.en.md | 17 +- README.md | 16 +- raspberrypi-build.spec | 30 +++ raspi-image-build/99-com.rules | 54 +++++ .../LICENCE.raspberrypi-sys-mods | 32 +++ raspi-image-build/chroot.sh | 16 ++ raspi-image-build/config.txt | 65 +++++ raspi-image-build/create-image.sh | 229 ++++++++++++++++++ raspi-image-build/hosts | 2 + raspi-image-build/ifup-eth0 | 16 ++ raspi-image-build/openEuler-20.03-LTS.repo | 50 ++++ raspi-image-build/pi-bluetooth.tar.gz | Bin 0 -> 34399 bytes 12 files changed, 512 insertions(+), 15 deletions(-) create mode 100644 raspberrypi-build.spec create mode 100644 raspi-image-build/99-com.rules create mode 100644 raspi-image-build/LICENCE.raspberrypi-sys-mods create mode 100644 raspi-image-build/chroot.sh create mode 100644 raspi-image-build/config.txt create mode 100644 raspi-image-build/create-image.sh create mode 100644 raspi-image-build/hosts create mode 100644 raspi-image-build/ifup-eth0 create mode 100644 raspi-image-build/openEuler-20.03-LTS.repo create mode 100644 raspi-image-build/pi-bluetooth.tar.gz diff --git a/README.en.md b/README.en.md index 2837741..f8d490e 100644 --- a/README.en.md +++ b/README.en.md @@ -1,22 +1,25 @@ # raspberrypi-build #### Description + Scripts of building images for Raspberry Pi #### Software Architecture -Software architecture description + +AArch64 #### Installation -1. xxxx -2. xxxx -3. xxxx +`dnf install raspberrypi-build` #### Instructions -1. xxxx -2. xxxx -3. xxxx +After installing raspberrypi-build, you can find the scripts and related files for building openEuler image of Raspberry Pi in `/opt/raspi-image-build`. + +To build an image, run `sudo bash create-image.sh OUTDIR`, where `OUTDIR` is the directory for storing the image and other temporary files. If `OUTDIR` does not exist, it will be created automatically. + +After building the image, you can find the image in `OUTDIR/raspi_output/img/` as shown in the script output. + #### Contribution diff --git a/README.md b/README.md index cb609c7..3f740f2 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,23 @@ # raspberrypi-build #### 介绍 -Scripts of building images for Raspberry Pi + +树莓派镜像构建脚本程序。 #### 软件架构 -软件架构说明 +AArch64 #### 安装教程 -1. xxxx -2. xxxx -3. xxxx +`dnf install raspberrypi-build` #### 使用说明 -1. xxxx -2. xxxx -3. xxxx +安装 raspberrypi-build 后,树莓派镜像构建的脚本及相关文件会保存在 `/opt/raspi-image-build`。 + +构建镜像需执行 `sudo bash create-image.sh OUTDIR`,其中 `OUTDIR` 为构建镜像的输出目录,如不存在则会自动创建。脚本运行结束后,会提示镜像的存储位置,默认保存在 `OUTDIR/raspi_output/img/` 下。 + #### 参与贡献 diff --git a/raspberrypi-build.spec b/raspberrypi-build.spec new file mode 100644 index 0000000..a26854c --- /dev/null +++ b/raspberrypi-build.spec @@ -0,0 +1,30 @@ +%global debug_package %{nil} + +Name: raspberrypi-build +Version: 0.1 +Release: 1 +Summary: Scripts of building images for RaspberryPi +License: Mulan v2 +ExclusiveArch: aarch64 + +Provides: raspberrypi-build = %{version}-%{release} + +Source0: raspi-image-build.tar.gz + +%description +Scripts of building images for Raspberry Pi + +%prep +%setup -q -c + +%install +mkdir -p %{buildroot}/opt/raspi-image-build +install -p -m 644 raspi-image-build/* %{buildroot}/opt/raspi-image-build + +%files +/opt/raspi-image-build + + +%changelog +* Thu Jun 11 2020 EulixOS Buildteam - 0.1-1 +- Init package with build scripts. \ No newline at end of file diff --git a/raspi-image-build/99-com.rules b/raspi-image-build/99-com.rules new file mode 100644 index 0000000..8911a52 --- /dev/null +++ b/raspi-image-build/99-com.rules @@ -0,0 +1,54 @@ +SUBSYSTEM=="input", GROUP="input", MODE="0660" +SUBSYSTEM=="i2c-dev", GROUP="i2c", MODE="0660" +SUBSYSTEM=="spidev", GROUP="spi", MODE="0660" +SUBSYSTEM=="bcm2835-gpiomem", GROUP="gpio", MODE="0660" +SUBSYSTEM=="rpivid-*", GROUP="video", MODE="0660" + +KERNEL=="vcsm-cma", GROUP="video", MODE="0660" + +SUBSYSTEM=="gpio", GROUP="gpio", MODE="0660" +SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c '\ + chown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio;\ + chown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/virtual/gpio;\ + chown -R root:gpio /sys$devpath && chmod -R 770 /sys$devpath\ +'" + +SUBSYSTEM=="pwm*", PROGRAM="/bin/sh -c '\ + chown -R root:gpio /sys/class/pwm && chmod -R 770 /sys/class/pwm;\ + chown -R root:gpio /sys/devices/platform/soc/*.pwm/pwm/pwmchip* && chmod -R 770 /sys/devices/platform/soc/*.pwm/pwm/pwmchip*\ +'" + +KERNEL=="ttyAMA0", PROGRAM="/bin/sh -c '\ + ALIASES=/proc/device-tree/aliases; \ + if cmp -s $ALIASES/uart0 $ALIASES/serial0; then \ + echo 0;\ + elif cmp -s $ALIASES/uart0 $ALIASES/serial1; then \ + echo 1; \ + else \ + exit 1; \ + fi\ +'", SYMLINK+="serial%c" + +KERNEL=="ttyAMA1", PROGRAM="/bin/sh -c '\ + ALIASES=/proc/device-tree/aliases; \ + if [ -e /dev/ttyAMA0 ]; then \ + exit 1; \ + elif cmp -s $ALIASES/uart0 $ALIASES/serial0; then \ + echo 0;\ + elif cmp -s $ALIASES/uart0 $ALIASES/serial1; then \ + echo 1; \ + else \ + exit 1; \ + fi\ +'", SYMLINK+="serial%c" + +KERNEL=="ttyS0", PROGRAM="/bin/sh -c '\ + ALIASES=/proc/device-tree/aliases; \ + if cmp -s $ALIASES/uart1 $ALIASES/serial0; then \ + echo 0; \ + elif cmp -s $ALIASES/uart1 $ALIASES/serial1; then \ + echo 1; \ + else \ + exit 1; \ + fi \ +'", SYMLINK+="serial%c" diff --git a/raspi-image-build/LICENCE.raspberrypi-sys-mods b/raspi-image-build/LICENCE.raspberrypi-sys-mods new file mode 100644 index 0000000..bb23a05 --- /dev/null +++ b/raspi-image-build/LICENCE.raspberrypi-sys-mods @@ -0,0 +1,32 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: raspberrypi-sys-mods +Source: https://github.com/RPi-Distro/raspberrypi-sys-mods + +Files: * +Copyright: 2015 Raspberry Pi Foundation +License: BSD-3-Clause + +License: BSD-3-Clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE HOLDERS OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/raspi-image-build/chroot.sh b/raspi-image-build/chroot.sh new file mode 100644 index 0000000..954cf62 --- /dev/null +++ b/raspi-image-build/chroot.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -e +systemctl enable sshd +systemctl enable ntpd +systemctl enable hciuart +echo openEuler > /etc/hostname +echo "openeuler" | passwd --stdin root +if [ -f /usr/share/zoneinfo/Asia/Shanghai ]; then + if [ -f /etc/localtime ]; then + rm -f /etc/localtime + fi + ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime +fi +if [ -f /etc/rc.d/rc.local ]; then + chmod +x /etc/rc.d/rc.local +fi \ No newline at end of file diff --git a/raspi-image-build/config.txt b/raspi-image-build/config.txt new file mode 100644 index 0000000..9a8ef12 --- /dev/null +++ b/raspi-image-build/config.txt @@ -0,0 +1,65 @@ +# For more options and information see +# http://rpf.io/configtxt +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +#hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +#hdmi_group=1 +#hdmi_mode=1 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +#hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +#dtparam=i2c_arm=on +#dtparam=i2s=on +#dtparam=spi=on + +# Uncomment this to enable infrared communication. +#dtoverlay=gpio-ir,gpio_pin=17 +#dtoverlay=gpio-ir-tx,gpio_pin=18 + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on + +[pi4] +# Enable DRM VC4 V3D driver on top of the dispmanx display stack +dtoverlay=vc4-fkms-v3d +max_framebuffers=2 + +[all] +#dtoverlay=vc4-fkms-v3d diff --git a/raspi-image-build/create-image.sh b/raspi-image-build/create-image.sh new file mode 100644 index 0000000..073bc44 --- /dev/null +++ b/raspi-image-build/create-image.sh @@ -0,0 +1,229 @@ +#!/bin/bash + +set -e + +ERROR(){ + echo `date` - ERROR, $* +} + +LOG(){ + echo `date` - INFO, $* +} + +if [ "$EUID" -ne 0 ]; then + ERROR Error: Please run as root! + exit +fi + +if [[ $# -ne 1 ]]; then + ERROR need one params. + LOG Example1: sudo bash $0 OUTDIR + exit 1 +fi + +if [ ! -d $1 ] ; then + LOG output dir $1 does not exists. + mkdir -p $1 + LOG output dir: $1 created. +fi + +workdir=$(cd "$(dirname $1)"; pwd)/$(basename $1) + +repo_file=`ls *.repo 2>/dev/null| head -n 1` + +if [ "$repo_file" == "" ] || [ ! -f $repo_file ]; then + ERROR repo file $repo_file can not be found. + exit 1 +fi + +rootfs_dir=${workdir}/raspi_output/rootfs +root_mnt=${workdir}/raspi_output/root +boot_mnt=${workdir}/raspi_output/boot +tmp_dir=${workdir}/raspi_output/tmp +img_dir=${workdir}/raspi_output/img + +repo_file_name=${repo_file##*/} +img_suffix=${repo_file_name%%-*} +img_suffix=`echo $img_suffix | grep -Eo "^[a-zA-Z ]*"` +os_release_name=${img_suffix}-release +img_name=${repo_file_name%.*}-aarch64-raspi.img +img_file=${img_dir}/${img_name} + +LOG "prepare begin..." +dnf makecache +dnf install -y dnf-plugins-core tar parted dosfstools + +if [ -d ${rootfs_dir} ]; then + rm -rf ${rootfs_dir} +fi +if [ ! -d ${tmp_dir} ]; then + mkdir -p ${tmp_dir} +fi +if [ ! -d ${img_dir} ]; then + mkdir -p ${img_dir} +fi + +dnf makecache +yumdownloader --downloaddir=${tmp_dir} $os_release_name -c ${repo_file} +os_release_name=`ls -r ${tmp_dir}/${os_release_name}*.rpm 2>/dev/null| head -n 1` +if [ -z "${os_release_name}" ]; then + ERROR "Fail to download ${os_release_name}!" + exit 1 +fi +LOG "prepare end." + +make_rootfs(){ + LOG "make rootfs for ${repo_file} begin..." + if [[ -d ${rootfs_dir} ]]; then + if [[ -d ${rootfs_dir}/dev && `ls ${rootfs_dir}/dev | wc -l` -gt 1 ]]; then + umount -l ${rootfs_dir}/dev + fi + if [[ -d ${rootfs_dir}/proc && `ls ${rootfs_dir}/proc | wc -l` -gt 0 ]]; then + umount -l ${rootfs_dir}/proc + fi + if [[ -d ${rootfs_dir}/sys && `ls ${rootfs_dir}/sys | wc -l` -gt 0 ]]; then + umount -l ${rootfs_dir}/sys + fi + rm -rf ${rootfs_dir} + fi + mkdir -p ${rootfs_dir} + mkdir -p ${rootfs_dir}/var/lib/rpm + rpm --root ${rootfs_dir} --initdb + rpm -ivh --nodeps --root ${rootfs_dir}/ ${os_release_name} + if [[ ! -d ${rootfs_dir}/etc/yum.repos.d ]]; then + mkdir -p ${rootfs_dir}/etc/yum.repos.d + fi + cp ${repo_file} $rootfs_dir/etc/yum.repos.d/ + dnf --installroot=${rootfs_dir}/ install dnf --nogpgcheck -y #--repofrompath=${repo_file_name},${rootfs_dir}/etc/yum.repos.d/${repo_file_name} + dnf --installroot=${rootfs_dir}/ makecache + dnf --installroot=${rootfs_dir}/ install -y alsa-utils wpa_supplicant vim net-tools iproute iputils NetworkManager openssh-server passwd hostname ntp bluez pulseaudio-module-bluetooth + dnf --installroot=${rootfs_dir}/ install -y raspberrypi-kernel raspberrypi-firmware openEuler-repos + set +e + cat ${rootfs_dir}/etc/ntp.conf | grep "^server*" + if [ $? -ne 0 ]; then + echo -e "\nserver 0.cn.pool.ntp.org\nserver 1.asia.pool.ntp.org\nserver 2.asia.pool.ntp.org\nserver 127.0.0.1">>${rootfs_dir}/etc/ntp.conf + fi + cat ${rootfs_dir}/etc/ntp.conf | grep "^fudge*" + if [ $? -ne 0 ]; then + echo -e "\nfudge 127.0.0.1 stratum 10">>${rootfs_dir}/etc/ntp.conf + fi + set -e + cp ./hosts ${rootfs_dir}/etc/hosts + if [ ! -d $rootfs_dir/etc/sysconfig/network-scripts ]; then + mkdir -p $rootfs_dir/etc/sysconfig/network-scripts + fi + cp ./ifup-eth0 $rootfs_dir/etc/sysconfig/network-scripts/ifup-eth0 + mkdir -p ${rootfs_dir}/usr/bin ${rootfs_dir}/lib/udev/rules.d ${rootfs_dir}/lib/systemd/system + cp ./*.rules ${rootfs_dir}/lib/udev/rules.d/ + tar -zxf pi-bluetooth.tar.gz + cp ./pi-bluetooth/usr/bin/* ${rootfs_dir}/usr/bin/ + cp ./pi-bluetooth/lib/udev/rules.d/90-pi-bluetooth.rules ${rootfs_dir}/lib/udev/rules.d/ + cp ./pi-bluetooth/debian/pi-bluetooth.bthelper\@.service ${rootfs_dir}/lib/systemd/system/bthelper\@.service + cp ./pi-bluetooth/debian/pi-bluetooth.hciuart.service ${rootfs_dir}/lib/systemd/system/hciuart.service + cp ./chroot.sh ${rootfs_dir}/chroot.sh + chmod +x ${rootfs_dir}/chroot.sh + mount --bind /dev ${rootfs_dir}/dev + mount -t proc /proc ${rootfs_dir}/proc + mount -t sysfs /sys ${rootfs_dir}/sys + chroot ${rootfs_dir} /bin/bash -c "echo 'Y' | /chroot.sh" + umount -l ${rootfs_dir}/dev + umount -l ${rootfs_dir}/proc + umount -l ${rootfs_dir}/sys + rm ${rootfs_dir}/chroot.sh + LOG "make rootfs for ${repo_file} end." +} + +make_img(){ + LOG "make ${img_file} begin..." + size=`du -sh --block-size=1MiB ${rootfs_dir} | cut -f 1 | xargs` + size=$(($size+1100)) + losetup -D + dd if=/dev/zero of=${img_file} bs=1MiB count=$size && sync + parted ${img_file} mklabel msdos mkpart primary fat32 8192s 593919s + parted ${img_file} -s set 1 boot + parted ${img_file} mkpart primary linux-swap 593920s 1593343s + parted ${img_file} mkpart primary ext4 1593344s 100% + device=`losetup -f --show -P ${img_file}` + LOG "after losetup: ${device}" + LOG "image ${img_file} created and mounted as ${device}" + # loopX=`kpartx -va ${device} | sed -E 's/.*(loop[0-9])p.*/\1/g' | head -1` + # LOG "after kpartx: ${loopX}" + kpartx -va ${device} + loopX=${device##*\/} + partprobe ${device} + bootp=/dev/mapper/${loopX}p1 + swapp=/dev/mapper/${loopX}p2 + rootp=/dev/mapper/${loopX}p3 + LOG "bootp: " ${bootp} "rootp: " ${rootp} + mkfs.vfat -n boot ${bootp} + mkswap ${swapp} + mkfs.ext4 ${rootp} + set +e + if [ -d ${root_mnt} ]; then + df -lh | grep ${root_mnt} + if [ $? -eq 0 ]; then + umount ${root_mnt} + fi + rm -rf ${root_mnt} + fi + if [ -d ${boot_mnt} ]; then + df -lh | grep ${boot_mnt} + if [ $? -eq 0 ]; then + umount ${boot_mnt} + fi + rm -rf ${boot_mnt} + fi + set -e + mkdir -p ${root_mnt} ${boot_mnt} + mount -t vfat -o uid=root,gid=root,umask=0000 ${bootp} ${boot_mnt} + mount -t ext4 ${rootp} ${root_mnt} + fstab_array=("" "" "" "") + for line in `blkid | grep /dev/mapper/${loopX}p` + do + uuid=${line#*UUID=\"} + fstab_array[${line:18:1}]=${uuid%%\"*} + done + echo "UUID=${fstab_array[3]} / ext4 defaults,noatime 0 0" > ${rootfs_dir}/etc/fstab + echo "UUID=${fstab_array[1]} /boot vfat defaults,noatime 0 0" >> ${rootfs_dir}/etc/fstab + echo "UUID=${fstab_array[2]} swap swap defaults,noatime 0 0" >> ${rootfs_dir}/etc/fstab + + cp -a ${rootfs_dir}/boot/* ${boot_mnt}/ + cp ./config.txt ${boot_mnt}/ + echo "console=serial0,115200 console=tty1 root=/dev/mmcblk0p3 rootfstype=ext4 elevator=deadline rootwait" > ${boot_mnt}/cmdline.txt + + if [ -f ${tmp_dir}/rootfs.tar ]; then + rm ${tmp_dir}/rootfs.tar + fi + pushd ${rootfs_dir} + rm -rf boot + tar cpf ${tmp_dir}/rootfs.tar . + popd + pushd ${root_mnt} + tar xpf ${tmp_dir}/rootfs.tar -C . + popd + sync + sleep 10 + umount ${root_mnt} + umount ${boot_mnt} + + kpartx -d ${device} + losetup -d ${device} + + rm ${tmp_dir}/rootfs.tar + rm -rf ${rootfs_dir} + losetup -D + pushd ${img_dir} + if [ -f ${img_file} ]; then + sha256sum $(basename ${img_file}) > ${img_file}.sha256sum + xz -T 20 -z -c ${img_file} > ${img_file}.xz + sha256sum $(basename ${img_file}.xz) > ${img_file}.xz.sha256sum + LOG "made sum files for ${img_file}" + fi + popd + LOG "write ${img_file} done." + LOG "make ${img_file} end." +} + +IFS=$'\n' +make_rootfs +make_img \ No newline at end of file diff --git a/raspi-image-build/hosts b/raspi-image-build/hosts new file mode 100644 index 0000000..8329024 --- /dev/null +++ b/raspi-image-build/hosts @@ -0,0 +1,2 @@ +127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 +::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 \ No newline at end of file diff --git a/raspi-image-build/ifup-eth0 b/raspi-image-build/ifup-eth0 new file mode 100644 index 0000000..c91969b --- /dev/null +++ b/raspi-image-build/ifup-eth0 @@ -0,0 +1,16 @@ +TYPE=Ethernet +PROXY_METHOD=none +BROWSER_ONLY=no +BOOTPROTO=dhcp +DEFROUTE=yes +IPV4_FAILURE_FATAL=no +IPV6INIT=yes +IPV6_AUTOCONF=yes +IPV6_DEFROUTE=yes +IPV6_FAILURE_FATAL=no +IPV6_ADDR_GEN_MODE=stable-privacy +NAME=eth0 +UUID=851a6f36-e65c-3a43-8f4a-78fd0fc09dc9 +ONBOOT=yes +AUTOCONNECT_PRIORITY=-999 +DEVICE=eth0 \ No newline at end of file diff --git a/raspi-image-build/openEuler-20.03-LTS.repo b/raspi-image-build/openEuler-20.03-LTS.repo new file mode 100644 index 0000000..47a1fc1 --- /dev/null +++ b/raspi-image-build/openEuler-20.03-LTS.repo @@ -0,0 +1,50 @@ +#generic-repos is licensed under the Mulan PSL v2. +#You can use this software according to the terms and conditions of the Mulan PSL v2. +#You may obtain a copy of Mulan PSL v2 at: +# http://license.coscl.org.cn/MulanPSL2 +#THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR +#IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR +#PURPOSE. +#See the Mulan PSL v2 for more details. + +[OS] +name=OS +baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/ +enabled=1 +gpgcheck=1 +gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler + +[everything] +name=everything +baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/everything/$basearch/ +enabled=1 +gpgcheck=1 +gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/everything/$basearch/RPM-GPG-KEY-openEuler + +[EPOL] +name=EPOL +baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/EPOL/$basearch/ +enabled=1 +gpgcheck=1 +gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler + +[debuginfo] +name=debuginfo +baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/debuginfo/$basearch/ +enabled=1 +gpgcheck=1 +gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/debuginfo/$basearch/RPM-GPG-KEY-openEuler + +[source] +name=source +baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/source/ +enabled=1 +gpgcheck=1 +gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/source/RPM-GPG-KEY-openEuler + +[update] +name=update +baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/update/$basearch/ +enabled=0 +gpgcheck=1 +gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler diff --git a/raspi-image-build/pi-bluetooth.tar.gz b/raspi-image-build/pi-bluetooth.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..edeececae4baa5f5b47d443bc7a1548d8cea4f52 GIT binary patch literal 34399 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 Date: Tue, 21 Jul 2020 17:59:22 +0800 Subject: [PATCH 2/2] tar scripts --- raspi-image-build.tar.gz | Bin 0 -> 41201 bytes raspi-image-build/99-com.rules | 54 ----- .../LICENCE.raspberrypi-sys-mods | 32 --- raspi-image-build/chroot.sh | 16 -- raspi-image-build/config.txt | 65 ----- raspi-image-build/create-image.sh | 229 ------------------ raspi-image-build/hosts | 2 - raspi-image-build/ifup-eth0 | 16 -- raspi-image-build/openEuler-20.03-LTS.repo | 50 ---- raspi-image-build/pi-bluetooth.tar.gz | Bin 34399 -> 0 bytes 10 files changed, 464 deletions(-) create mode 100644 raspi-image-build.tar.gz delete mode 100644 raspi-image-build/99-com.rules delete mode 100644 raspi-image-build/LICENCE.raspberrypi-sys-mods delete mode 100644 raspi-image-build/chroot.sh delete mode 100644 raspi-image-build/config.txt delete mode 100644 raspi-image-build/create-image.sh delete mode 100644 raspi-image-build/hosts delete mode 100644 raspi-image-build/ifup-eth0 delete mode 100644 raspi-image-build/openEuler-20.03-LTS.repo delete mode 100644 raspi-image-build/pi-bluetooth.tar.gz diff --git a/raspi-image-build.tar.gz b/raspi-image-build.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..b32c469ab8d1fbf4ebf60a1579f48196eea1ce2b GIT binary patch literal 41201 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 literal 0 HcmV?d00001 diff --git a/raspi-image-build/99-com.rules b/raspi-image-build/99-com.rules deleted file mode 100644 index 8911a52..0000000 --- a/raspi-image-build/99-com.rules +++ /dev/null @@ -1,54 +0,0 @@ -SUBSYSTEM=="input", GROUP="input", MODE="0660" -SUBSYSTEM=="i2c-dev", GROUP="i2c", MODE="0660" -SUBSYSTEM=="spidev", GROUP="spi", MODE="0660" -SUBSYSTEM=="bcm2835-gpiomem", GROUP="gpio", MODE="0660" -SUBSYSTEM=="rpivid-*", GROUP="video", MODE="0660" - -KERNEL=="vcsm-cma", GROUP="video", MODE="0660" - -SUBSYSTEM=="gpio", GROUP="gpio", MODE="0660" -SUBSYSTEM=="gpio*", PROGRAM="/bin/sh -c '\ - chown -R root:gpio /sys/class/gpio && chmod -R 770 /sys/class/gpio;\ - chown -R root:gpio /sys/devices/virtual/gpio && chmod -R 770 /sys/devices/virtual/gpio;\ - chown -R root:gpio /sys$devpath && chmod -R 770 /sys$devpath\ -'" - -SUBSYSTEM=="pwm*", PROGRAM="/bin/sh -c '\ - chown -R root:gpio /sys/class/pwm && chmod -R 770 /sys/class/pwm;\ - chown -R root:gpio /sys/devices/platform/soc/*.pwm/pwm/pwmchip* && chmod -R 770 /sys/devices/platform/soc/*.pwm/pwm/pwmchip*\ -'" - -KERNEL=="ttyAMA0", PROGRAM="/bin/sh -c '\ - ALIASES=/proc/device-tree/aliases; \ - if cmp -s $ALIASES/uart0 $ALIASES/serial0; then \ - echo 0;\ - elif cmp -s $ALIASES/uart0 $ALIASES/serial1; then \ - echo 1; \ - else \ - exit 1; \ - fi\ -'", SYMLINK+="serial%c" - -KERNEL=="ttyAMA1", PROGRAM="/bin/sh -c '\ - ALIASES=/proc/device-tree/aliases; \ - if [ -e /dev/ttyAMA0 ]; then \ - exit 1; \ - elif cmp -s $ALIASES/uart0 $ALIASES/serial0; then \ - echo 0;\ - elif cmp -s $ALIASES/uart0 $ALIASES/serial1; then \ - echo 1; \ - else \ - exit 1; \ - fi\ -'", SYMLINK+="serial%c" - -KERNEL=="ttyS0", PROGRAM="/bin/sh -c '\ - ALIASES=/proc/device-tree/aliases; \ - if cmp -s $ALIASES/uart1 $ALIASES/serial0; then \ - echo 0; \ - elif cmp -s $ALIASES/uart1 $ALIASES/serial1; then \ - echo 1; \ - else \ - exit 1; \ - fi \ -'", SYMLINK+="serial%c" diff --git a/raspi-image-build/LICENCE.raspberrypi-sys-mods b/raspi-image-build/LICENCE.raspberrypi-sys-mods deleted file mode 100644 index bb23a05..0000000 --- a/raspi-image-build/LICENCE.raspberrypi-sys-mods +++ /dev/null @@ -1,32 +0,0 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: raspberrypi-sys-mods -Source: https://github.com/RPi-Distro/raspberrypi-sys-mods - -Files: * -Copyright: 2015 Raspberry Pi Foundation -License: BSD-3-Clause - -License: BSD-3-Clause - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. Neither the name of the University nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE HOLDERS OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/raspi-image-build/chroot.sh b/raspi-image-build/chroot.sh deleted file mode 100644 index 954cf62..0000000 --- a/raspi-image-build/chroot.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -set -e -systemctl enable sshd -systemctl enable ntpd -systemctl enable hciuart -echo openEuler > /etc/hostname -echo "openeuler" | passwd --stdin root -if [ -f /usr/share/zoneinfo/Asia/Shanghai ]; then - if [ -f /etc/localtime ]; then - rm -f /etc/localtime - fi - ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime -fi -if [ -f /etc/rc.d/rc.local ]; then - chmod +x /etc/rc.d/rc.local -fi \ No newline at end of file diff --git a/raspi-image-build/config.txt b/raspi-image-build/config.txt deleted file mode 100644 index 9a8ef12..0000000 --- a/raspi-image-build/config.txt +++ /dev/null @@ -1,65 +0,0 @@ -# For more options and information see -# http://rpf.io/configtxt -# Some settings may impact device functionality. See link above for details - -# uncomment if you get no picture on HDMI for a default "safe" mode -#hdmi_safe=1 - -# uncomment this if your display has a black border of unused pixels visible -# and your display can output without overscan -#disable_overscan=1 - -# uncomment the following to adjust overscan. Use positive numbers if console -# goes off screen, and negative if there is too much border -#overscan_left=16 -#overscan_right=16 -#overscan_top=16 -#overscan_bottom=16 - -# uncomment to force a console size. By default it will be display's size minus -# overscan. -#framebuffer_width=1280 -#framebuffer_height=720 - -# uncomment if hdmi display is not detected and composite is being output -#hdmi_force_hotplug=1 - -# uncomment to force a specific HDMI mode (this will force VGA) -#hdmi_group=1 -#hdmi_mode=1 - -# uncomment to force a HDMI mode rather than DVI. This can make audio work in -# DMT (computer monitor) modes -#hdmi_drive=2 - -# uncomment to increase signal to HDMI, if you have interference, blanking, or -# no display -#config_hdmi_boost=4 - -# uncomment for composite PAL -#sdtv_mode=2 - -#uncomment to overclock the arm. 700 MHz is the default. -#arm_freq=800 - -# Uncomment some or all of these to enable the optional hardware interfaces -#dtparam=i2c_arm=on -#dtparam=i2s=on -#dtparam=spi=on - -# Uncomment this to enable infrared communication. -#dtoverlay=gpio-ir,gpio_pin=17 -#dtoverlay=gpio-ir-tx,gpio_pin=18 - -# Additional overlays and parameters are documented /boot/overlays/README - -# Enable audio (loads snd_bcm2835) -dtparam=audio=on - -[pi4] -# Enable DRM VC4 V3D driver on top of the dispmanx display stack -dtoverlay=vc4-fkms-v3d -max_framebuffers=2 - -[all] -#dtoverlay=vc4-fkms-v3d diff --git a/raspi-image-build/create-image.sh b/raspi-image-build/create-image.sh deleted file mode 100644 index 073bc44..0000000 --- a/raspi-image-build/create-image.sh +++ /dev/null @@ -1,229 +0,0 @@ -#!/bin/bash - -set -e - -ERROR(){ - echo `date` - ERROR, $* -} - -LOG(){ - echo `date` - INFO, $* -} - -if [ "$EUID" -ne 0 ]; then - ERROR Error: Please run as root! - exit -fi - -if [[ $# -ne 1 ]]; then - ERROR need one params. - LOG Example1: sudo bash $0 OUTDIR - exit 1 -fi - -if [ ! -d $1 ] ; then - LOG output dir $1 does not exists. - mkdir -p $1 - LOG output dir: $1 created. -fi - -workdir=$(cd "$(dirname $1)"; pwd)/$(basename $1) - -repo_file=`ls *.repo 2>/dev/null| head -n 1` - -if [ "$repo_file" == "" ] || [ ! -f $repo_file ]; then - ERROR repo file $repo_file can not be found. - exit 1 -fi - -rootfs_dir=${workdir}/raspi_output/rootfs -root_mnt=${workdir}/raspi_output/root -boot_mnt=${workdir}/raspi_output/boot -tmp_dir=${workdir}/raspi_output/tmp -img_dir=${workdir}/raspi_output/img - -repo_file_name=${repo_file##*/} -img_suffix=${repo_file_name%%-*} -img_suffix=`echo $img_suffix | grep -Eo "^[a-zA-Z ]*"` -os_release_name=${img_suffix}-release -img_name=${repo_file_name%.*}-aarch64-raspi.img -img_file=${img_dir}/${img_name} - -LOG "prepare begin..." -dnf makecache -dnf install -y dnf-plugins-core tar parted dosfstools - -if [ -d ${rootfs_dir} ]; then - rm -rf ${rootfs_dir} -fi -if [ ! -d ${tmp_dir} ]; then - mkdir -p ${tmp_dir} -fi -if [ ! -d ${img_dir} ]; then - mkdir -p ${img_dir} -fi - -dnf makecache -yumdownloader --downloaddir=${tmp_dir} $os_release_name -c ${repo_file} -os_release_name=`ls -r ${tmp_dir}/${os_release_name}*.rpm 2>/dev/null| head -n 1` -if [ -z "${os_release_name}" ]; then - ERROR "Fail to download ${os_release_name}!" - exit 1 -fi -LOG "prepare end." - -make_rootfs(){ - LOG "make rootfs for ${repo_file} begin..." - if [[ -d ${rootfs_dir} ]]; then - if [[ -d ${rootfs_dir}/dev && `ls ${rootfs_dir}/dev | wc -l` -gt 1 ]]; then - umount -l ${rootfs_dir}/dev - fi - if [[ -d ${rootfs_dir}/proc && `ls ${rootfs_dir}/proc | wc -l` -gt 0 ]]; then - umount -l ${rootfs_dir}/proc - fi - if [[ -d ${rootfs_dir}/sys && `ls ${rootfs_dir}/sys | wc -l` -gt 0 ]]; then - umount -l ${rootfs_dir}/sys - fi - rm -rf ${rootfs_dir} - fi - mkdir -p ${rootfs_dir} - mkdir -p ${rootfs_dir}/var/lib/rpm - rpm --root ${rootfs_dir} --initdb - rpm -ivh --nodeps --root ${rootfs_dir}/ ${os_release_name} - if [[ ! -d ${rootfs_dir}/etc/yum.repos.d ]]; then - mkdir -p ${rootfs_dir}/etc/yum.repos.d - fi - cp ${repo_file} $rootfs_dir/etc/yum.repos.d/ - dnf --installroot=${rootfs_dir}/ install dnf --nogpgcheck -y #--repofrompath=${repo_file_name},${rootfs_dir}/etc/yum.repos.d/${repo_file_name} - dnf --installroot=${rootfs_dir}/ makecache - dnf --installroot=${rootfs_dir}/ install -y alsa-utils wpa_supplicant vim net-tools iproute iputils NetworkManager openssh-server passwd hostname ntp bluez pulseaudio-module-bluetooth - dnf --installroot=${rootfs_dir}/ install -y raspberrypi-kernel raspberrypi-firmware openEuler-repos - set +e - cat ${rootfs_dir}/etc/ntp.conf | grep "^server*" - if [ $? -ne 0 ]; then - echo -e "\nserver 0.cn.pool.ntp.org\nserver 1.asia.pool.ntp.org\nserver 2.asia.pool.ntp.org\nserver 127.0.0.1">>${rootfs_dir}/etc/ntp.conf - fi - cat ${rootfs_dir}/etc/ntp.conf | grep "^fudge*" - if [ $? -ne 0 ]; then - echo -e "\nfudge 127.0.0.1 stratum 10">>${rootfs_dir}/etc/ntp.conf - fi - set -e - cp ./hosts ${rootfs_dir}/etc/hosts - if [ ! -d $rootfs_dir/etc/sysconfig/network-scripts ]; then - mkdir -p $rootfs_dir/etc/sysconfig/network-scripts - fi - cp ./ifup-eth0 $rootfs_dir/etc/sysconfig/network-scripts/ifup-eth0 - mkdir -p ${rootfs_dir}/usr/bin ${rootfs_dir}/lib/udev/rules.d ${rootfs_dir}/lib/systemd/system - cp ./*.rules ${rootfs_dir}/lib/udev/rules.d/ - tar -zxf pi-bluetooth.tar.gz - cp ./pi-bluetooth/usr/bin/* ${rootfs_dir}/usr/bin/ - cp ./pi-bluetooth/lib/udev/rules.d/90-pi-bluetooth.rules ${rootfs_dir}/lib/udev/rules.d/ - cp ./pi-bluetooth/debian/pi-bluetooth.bthelper\@.service ${rootfs_dir}/lib/systemd/system/bthelper\@.service - cp ./pi-bluetooth/debian/pi-bluetooth.hciuart.service ${rootfs_dir}/lib/systemd/system/hciuart.service - cp ./chroot.sh ${rootfs_dir}/chroot.sh - chmod +x ${rootfs_dir}/chroot.sh - mount --bind /dev ${rootfs_dir}/dev - mount -t proc /proc ${rootfs_dir}/proc - mount -t sysfs /sys ${rootfs_dir}/sys - chroot ${rootfs_dir} /bin/bash -c "echo 'Y' | /chroot.sh" - umount -l ${rootfs_dir}/dev - umount -l ${rootfs_dir}/proc - umount -l ${rootfs_dir}/sys - rm ${rootfs_dir}/chroot.sh - LOG "make rootfs for ${repo_file} end." -} - -make_img(){ - LOG "make ${img_file} begin..." - size=`du -sh --block-size=1MiB ${rootfs_dir} | cut -f 1 | xargs` - size=$(($size+1100)) - losetup -D - dd if=/dev/zero of=${img_file} bs=1MiB count=$size && sync - parted ${img_file} mklabel msdos mkpart primary fat32 8192s 593919s - parted ${img_file} -s set 1 boot - parted ${img_file} mkpart primary linux-swap 593920s 1593343s - parted ${img_file} mkpart primary ext4 1593344s 100% - device=`losetup -f --show -P ${img_file}` - LOG "after losetup: ${device}" - LOG "image ${img_file} created and mounted as ${device}" - # loopX=`kpartx -va ${device} | sed -E 's/.*(loop[0-9])p.*/\1/g' | head -1` - # LOG "after kpartx: ${loopX}" - kpartx -va ${device} - loopX=${device##*\/} - partprobe ${device} - bootp=/dev/mapper/${loopX}p1 - swapp=/dev/mapper/${loopX}p2 - rootp=/dev/mapper/${loopX}p3 - LOG "bootp: " ${bootp} "rootp: " ${rootp} - mkfs.vfat -n boot ${bootp} - mkswap ${swapp} - mkfs.ext4 ${rootp} - set +e - if [ -d ${root_mnt} ]; then - df -lh | grep ${root_mnt} - if [ $? -eq 0 ]; then - umount ${root_mnt} - fi - rm -rf ${root_mnt} - fi - if [ -d ${boot_mnt} ]; then - df -lh | grep ${boot_mnt} - if [ $? -eq 0 ]; then - umount ${boot_mnt} - fi - rm -rf ${boot_mnt} - fi - set -e - mkdir -p ${root_mnt} ${boot_mnt} - mount -t vfat -o uid=root,gid=root,umask=0000 ${bootp} ${boot_mnt} - mount -t ext4 ${rootp} ${root_mnt} - fstab_array=("" "" "" "") - for line in `blkid | grep /dev/mapper/${loopX}p` - do - uuid=${line#*UUID=\"} - fstab_array[${line:18:1}]=${uuid%%\"*} - done - echo "UUID=${fstab_array[3]} / ext4 defaults,noatime 0 0" > ${rootfs_dir}/etc/fstab - echo "UUID=${fstab_array[1]} /boot vfat defaults,noatime 0 0" >> ${rootfs_dir}/etc/fstab - echo "UUID=${fstab_array[2]} swap swap defaults,noatime 0 0" >> ${rootfs_dir}/etc/fstab - - cp -a ${rootfs_dir}/boot/* ${boot_mnt}/ - cp ./config.txt ${boot_mnt}/ - echo "console=serial0,115200 console=tty1 root=/dev/mmcblk0p3 rootfstype=ext4 elevator=deadline rootwait" > ${boot_mnt}/cmdline.txt - - if [ -f ${tmp_dir}/rootfs.tar ]; then - rm ${tmp_dir}/rootfs.tar - fi - pushd ${rootfs_dir} - rm -rf boot - tar cpf ${tmp_dir}/rootfs.tar . - popd - pushd ${root_mnt} - tar xpf ${tmp_dir}/rootfs.tar -C . - popd - sync - sleep 10 - umount ${root_mnt} - umount ${boot_mnt} - - kpartx -d ${device} - losetup -d ${device} - - rm ${tmp_dir}/rootfs.tar - rm -rf ${rootfs_dir} - losetup -D - pushd ${img_dir} - if [ -f ${img_file} ]; then - sha256sum $(basename ${img_file}) > ${img_file}.sha256sum - xz -T 20 -z -c ${img_file} > ${img_file}.xz - sha256sum $(basename ${img_file}.xz) > ${img_file}.xz.sha256sum - LOG "made sum files for ${img_file}" - fi - popd - LOG "write ${img_file} done." - LOG "make ${img_file} end." -} - -IFS=$'\n' -make_rootfs -make_img \ No newline at end of file diff --git a/raspi-image-build/hosts b/raspi-image-build/hosts deleted file mode 100644 index 8329024..0000000 --- a/raspi-image-build/hosts +++ /dev/null @@ -1,2 +0,0 @@ -127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 -::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 \ No newline at end of file diff --git a/raspi-image-build/ifup-eth0 b/raspi-image-build/ifup-eth0 deleted file mode 100644 index c91969b..0000000 --- a/raspi-image-build/ifup-eth0 +++ /dev/null @@ -1,16 +0,0 @@ -TYPE=Ethernet -PROXY_METHOD=none -BROWSER_ONLY=no -BOOTPROTO=dhcp -DEFROUTE=yes -IPV4_FAILURE_FATAL=no -IPV6INIT=yes -IPV6_AUTOCONF=yes -IPV6_DEFROUTE=yes -IPV6_FAILURE_FATAL=no -IPV6_ADDR_GEN_MODE=stable-privacy -NAME=eth0 -UUID=851a6f36-e65c-3a43-8f4a-78fd0fc09dc9 -ONBOOT=yes -AUTOCONNECT_PRIORITY=-999 -DEVICE=eth0 \ No newline at end of file diff --git a/raspi-image-build/openEuler-20.03-LTS.repo b/raspi-image-build/openEuler-20.03-LTS.repo deleted file mode 100644 index 47a1fc1..0000000 --- a/raspi-image-build/openEuler-20.03-LTS.repo +++ /dev/null @@ -1,50 +0,0 @@ -#generic-repos is licensed under the Mulan PSL v2. -#You can use this software according to the terms and conditions of the Mulan PSL v2. -#You may obtain a copy of Mulan PSL v2 at: -# http://license.coscl.org.cn/MulanPSL2 -#THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -#IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -#PURPOSE. -#See the Mulan PSL v2 for more details. - -[OS] -name=OS -baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/ -enabled=1 -gpgcheck=1 -gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler - -[everything] -name=everything -baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/everything/$basearch/ -enabled=1 -gpgcheck=1 -gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/everything/$basearch/RPM-GPG-KEY-openEuler - -[EPOL] -name=EPOL -baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/EPOL/$basearch/ -enabled=1 -gpgcheck=1 -gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler - -[debuginfo] -name=debuginfo -baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/debuginfo/$basearch/ -enabled=1 -gpgcheck=1 -gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/debuginfo/$basearch/RPM-GPG-KEY-openEuler - -[source] -name=source -baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/source/ -enabled=1 -gpgcheck=1 -gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/source/RPM-GPG-KEY-openEuler - -[update] -name=update -baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/update/$basearch/ -enabled=0 -gpgcheck=1 -gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler diff --git a/raspi-image-build/pi-bluetooth.tar.gz b/raspi-image-build/pi-bluetooth.tar.gz deleted file mode 100644 index edeececae4baa5f5b47d443bc7a1548d8cea4f52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34399 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