mirror of
https://github.com/brain-hackers/buildbrain
synced 2026-03-29 09:11:08 +09:00
Compare commits
5 Commits
2024-02-04
...
emmc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9134d2b25c | ||
|
|
575b450af9 | ||
|
|
5852372b9b | ||
|
|
3817fc5eeb | ||
|
|
462651541a |
31
.github/workflows/build.yml
vendored
31
.github/workflows/build.yml
vendored
@@ -12,7 +12,7 @@ jobs:
|
|||||||
outputs:
|
outputs:
|
||||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
submodules: false
|
submodules: false
|
||||||
@@ -41,11 +41,11 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
needs: [create_release]
|
needs: [create_release]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
- name: Workaround for apt update failure
|
- name: Workaround for apt update failure
|
||||||
run: sudo rm -f /etc/apt/sources.list.d/github_git-lfs.*
|
run: sudo rm /etc/apt/sources.list.d/github_git-lfs.*
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: sudo apt update && sudo apt install build-essential bison flex libncurses5-dev gcc-arm-linux-gnueabi qemu-user-static debootstrap python3-pip
|
run: sudo apt update && sudo apt install build-essential bison flex libncurses5-dev gcc-arm-linux-gnueabi qemu-user-static debootstrap python3-pip
|
||||||
- name: Upgrade pip and setuptools
|
- name: Upgrade pip and setuptools
|
||||||
@@ -91,11 +91,11 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
needs: [create_release]
|
needs: [create_release]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
- name: Workaround for apt update failure
|
- name: Workaround for apt update failure
|
||||||
run: sudo rm -f /etc/apt/sources.list.d/github_git-lfs.*
|
run: sudo rm /etc/apt/sources.list.d/github_git-lfs.*
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: sudo apt update && sudo apt install build-essential bison flex libncurses5-dev gcc-arm-linux-gnueabihf libssl-dev lzop qemu-user-static debootstrap
|
run: sudo apt update && sudo apt install build-essential bison flex libncurses5-dev gcc-arm-linux-gnueabihf libssl-dev lzop qemu-user-static debootstrap
|
||||||
- name: Configure for Linux
|
- name: Configure for Linux
|
||||||
@@ -128,12 +128,9 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- model: a7200
|
- model: g5300
|
||||||
nk: edna3exe.bin
|
nk: edna3exe.bin
|
||||||
lilo: gen2.bin
|
lilo: gen2.bin
|
||||||
- model: a7400
|
|
||||||
nk: edna3exe.bin
|
|
||||||
lilo: gen2_7400.bin
|
|
||||||
- model: sh1
|
- model: sh1
|
||||||
nk: edsa1exe.bin
|
nk: edsa1exe.bin
|
||||||
lilo: gen3_1.bin
|
lilo: gen3_1.bin
|
||||||
@@ -157,11 +154,11 @@ jobs:
|
|||||||
lilo: gen3_7.bin
|
lilo: gen3_7.bin
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
- name: Workaround for apt update failure
|
- name: Workaround for apt update failure
|
||||||
run: sudo rm -f /etc/apt/sources.list.d/github_git-lfs.*
|
run: sudo rm /etc/apt/sources.list.d/github_git-lfs.*
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: sudo apt update && sudo apt install build-essential bison flex libncurses5-dev gcc-arm-linux-gnueabi qemu-user-static debootstrap
|
run: sudo apt update && sudo apt install build-essential bison flex libncurses5-dev gcc-arm-linux-gnueabi qemu-user-static debootstrap
|
||||||
- name: Build nkbin-maker
|
- name: Build nkbin-maker
|
||||||
@@ -203,11 +200,11 @@ jobs:
|
|||||||
- model: h1
|
- model: h1
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
- name: Workaround for apt update failure
|
- name: Workaround for apt update failure
|
||||||
run: sudo rm -f /etc/apt/sources.list.d/github_git-lfs.*
|
run: sudo rm /etc/apt/sources.list.d/github_git-lfs.*
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: sudo apt update && sudo apt install build-essential bison flex libncurses5-dev gcc-arm-linux-gnueabihf libssl-dev lzop qemu-user-static debootstrap
|
run: sudo apt update && sudo apt install build-essential bison flex libncurses5-dev gcc-arm-linux-gnueabihf libssl-dev lzop qemu-user-static debootstrap
|
||||||
- name: Configure for U-Boot
|
- name: Configure for U-Boot
|
||||||
@@ -237,7 +234,7 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
needs: [create_release]
|
needs: [create_release]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
- name: Make /opt writable
|
- name: Make /opt writable
|
||||||
@@ -248,7 +245,7 @@ jobs:
|
|||||||
unzip -q cegcc.zip
|
unzip -q cegcc.zip
|
||||||
cp -r cegcc /opt/
|
cp -r cegcc /opt/
|
||||||
- name: Workaround for apt update failure
|
- name: Workaround for apt update failure
|
||||||
run: sudo rm -f /etc/apt/sources.list.d/github_git-lfs.*
|
run: sudo rm /etc/apt/sources.list.d/github_git-lfs.*
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: sudo apt update && sudo apt install kpartx build-essential bison flex libncurses5-dev gcc-arm-linux-gnueabi qemu-user-static debootstrap
|
run: sudo apt update && sudo apt install kpartx build-essential bison flex libncurses5-dev gcc-arm-linux-gnueabi qemu-user-static debootstrap
|
||||||
- name: Configure for Linux
|
- name: Configure for Linux
|
||||||
@@ -280,11 +277,11 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
needs: [create_release]
|
needs: [create_release]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
- name: Workaround for apt update failure
|
- name: Workaround for apt update failure
|
||||||
run: sudo rm -f /etc/apt/sources.list.d/github_git-lfs.*
|
run: sudo rm /etc/apt/sources.list.d/github_git-lfs.*
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: sudo apt update && sudo apt install kpartx build-essential bison flex libncurses5-dev gcc-arm-linux-gnueabihf libssl-dev lzop qemu-user-static debootstrap
|
run: sudo apt update && sudo apt install kpartx build-essential bison flex libncurses5-dev gcc-arm-linux-gnueabihf libssl-dev lzop qemu-user-static debootstrap
|
||||||
- name: Upgrade pip and setuptools
|
- name: Upgrade pip and setuptools
|
||||||
|
|||||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -13,6 +13,3 @@
|
|||||||
[submodule "brainlilo"]
|
[submodule "brainlilo"]
|
||||||
path = brainlilo
|
path = brainlilo
|
||||||
url = https://github.com/brain-hackers/brainlilo.git
|
url = https://github.com/brain-hackers/brainlilo.git
|
||||||
[submodule "buildroot"]
|
|
||||||
path = buildroot
|
|
||||||
url = https://github.com/brain-hackers/buildroot.git
|
|
||||||
|
|||||||
29
Makefile
29
Makefile
@@ -1,8 +1,8 @@
|
|||||||
JOBS=$(shell grep -c '^processor' /proc/cpuinfo)
|
JOBS=$(shell grep -c '^processor' /proc/cpuinfo)
|
||||||
|
|
||||||
UBOOT_CROSS=$(shell ./tools/getcross u-boot)
|
UBOOT_CROSS?=$(shell ./tools/getcross u-boot)
|
||||||
LINUX_CROSS=$(shell ./tools/getcross linux)
|
LINUX_CROSS?=$(shell ./tools/getcross linux)
|
||||||
ROOTFS_CROSS=$(shell ./tools/getcross rootfs)
|
ROOTFS_CROSS?=$(shell ./tools/getcross rootfs)
|
||||||
export ARCH=arm
|
export ARCH=arm
|
||||||
|
|
||||||
.PHONY:
|
.PHONY:
|
||||||
@@ -135,6 +135,7 @@ lilobuild:
|
|||||||
liloclean:
|
liloclean:
|
||||||
make -C ./brainlilo clean
|
make -C ./brainlilo clean
|
||||||
|
|
||||||
|
|
||||||
brainux:
|
brainux:
|
||||||
@if [ "$(shell uname)" != "Linux" ]; then \
|
@if [ "$(shell uname)" != "Linux" ]; then \
|
||||||
echo "Debootstrap is only available in Linux!"; \
|
echo "Debootstrap is only available in Linux!"; \
|
||||||
@@ -143,32 +144,24 @@ brainux:
|
|||||||
sudo mkdir -p brainux
|
sudo mkdir -p brainux
|
||||||
@if [ "$(CI)" = "true" ]; then \
|
@if [ "$(CI)" = "true" ]; then \
|
||||||
echo "I'm in CI and debootstrap without cache."; \
|
echo "I'm in CI and debootstrap without cache."; \
|
||||||
sudo debootstrap --arch=$(ROOTFS_CROSS) --foreign bullseye brainux/; \
|
sudo debootstrap --arch=$(ROOTFS_CROSS) --foreign buster brainux/; \
|
||||||
else \
|
else \
|
||||||
sudo debootstrap --arch=$(ROOTFS_CROSS) --foreign bullseye brainux/ http://localhost:65432/debian/; \
|
sudo debootstrap --arch=$(ROOTFS_CROSS) --foreign buster brainux/ http://localhost:65432/debian/; \
|
||||||
fi
|
fi
|
||||||
sudo cp /usr/bin/qemu-arm-static brainux/usr/bin/
|
sudo cp /usr/bin/qemu-arm-static brainux/usr/bin/
|
||||||
sudo cp ./os-brainux/setup_brainux.sh brainux/
|
sudo cp ./os-brainux/setup_brainux.sh brainux/
|
||||||
sudo ./os-brainux/override-pre.sh ./os-brainux/override ./brainux
|
|
||||||
sudo -E chroot brainux /setup_brainux.sh
|
sudo -E chroot brainux /setup_brainux.sh
|
||||||
sudo rm brainux/setup_brainux.sh
|
sudo rm brainux/setup_brainux.sh
|
||||||
sudo ./os-brainux/override.sh ./os-brainux/override ./brainux
|
sudo ./os-brainux/override.sh ./os-brainux/override ./brainux
|
||||||
|
|
||||||
buildroot_rootfs:
|
|
||||||
make -C buildroot brain_imx28_defconfig
|
|
||||||
make -C buildroot -j 12
|
|
||||||
sudo mkdir -p buildroot_rootfs
|
|
||||||
sudo tar -C ./buildroot_rootfs -xf buildroot/output/images/rootfs.tar
|
|
||||||
|
|
||||||
image/sd.img: clean_work
|
image/sd.img: clean_work
|
||||||
./image/build_image.sh brainux sd.img 3072
|
./image/build_image.sh
|
||||||
|
|
||||||
|
image/emmc.img: clean_work
|
||||||
|
./image/build_image_emmc.sh
|
||||||
|
|
||||||
image/sd_x1.img: clean_work
|
image/sd_x1.img: clean_work
|
||||||
./image/build_image_x1.sh brainux sd_x1.img 3072
|
./image/build_image_x1.sh
|
||||||
|
|
||||||
image/sd_buildroot.img: clean_work
|
|
||||||
./image/build_image.sh buildroot_rootfs sd_buildroot.img 128
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY:
|
.PHONY:
|
||||||
clean_work:
|
clean_work:
|
||||||
|
|||||||
20
README.md
20
README.md
@@ -94,8 +94,8 @@ Build Linux
|
|||||||
1. Confirm that `linux-brain/arch/arm/boot/zImage` exists.
|
1. Confirm that `linux-brain/arch/arm/boot/zImage` exists.
|
||||||
|
|
||||||
|
|
||||||
Build a Debian rootfs
|
Bootstrap Debian 11 (bullseye)
|
||||||
---------------------
|
------------------------------
|
||||||
|
|
||||||
1. Run `make ldefconfig lbuild`.
|
1. Run `make ldefconfig lbuild`.
|
||||||
|
|
||||||
@@ -107,23 +107,9 @@ Build a Debian rootfs
|
|||||||
|
|
||||||
1. Confirm that `image/sd.img` is built and burn it to an SD card.
|
1. Confirm that `image/sd.img` is built and burn it to an SD card.
|
||||||
|
|
||||||
|
|
||||||
Build a Buildroot rootfs
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
Buildroot rootfs aims to be the most lightweight rootfs for experimental use. `make buildroot_rootfs` runs the defconfig target for rootfs-only build and then builds the rootfs tarball and a CPIO archive for initramfs. `make image/sd_buildroot.img` makes a bootable SD image in `image` directory like the typical Brainux SD image.
|
|
||||||
|
|
||||||
If you want to customize the build of Buildroot, `cd` into `buildroot` and use the following targets:
|
|
||||||
|
|
||||||
- `make menuconfig` to change the configuration
|
|
||||||
- `make` to build the rootfs (`-j` option might give you extra speed)
|
|
||||||
|
|
||||||
`image/sd_buildroot.img` target expects presence of the tarball at `buildroot/output/images/rootfs.tar`. You'll have to `clean` and rebuild every time you change the Buildroot's config before making the SD image.
|
|
||||||
|
|
||||||
|
|
||||||
Known issues
|
Known issues
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
If you use GCC 10 for the host compiler, `make ubuild` may fail.
|
If you using gcc 10 for host compiler, `make ubuild` may fail.
|
||||||
To complete build, open `/u-boot-brain/scripts/dtc/dtc-lexer.lex.c` or `/u-boot-brain/scripts/dtc/dtc-parser.tab.c` then comment out `YYLTYPE yylloc;`
|
To complete build, open `/u-boot-brain/scripts/dtc/dtc-lexer.lex.c` or `/u-boot-brain/scripts/dtc/dtc-parser.tab.c` then comment out `YYLTYPE yylloc;`
|
||||||
|
|
||||||
Watch changes in submodules & auto-build
|
Watch changes in submodules & auto-build
|
||||||
|
|||||||
Submodule brainlilo updated: 2ec8f7827e...c826f2581e
Submodule buildroot deleted from cf3ea90108
@@ -1,23 +0,0 @@
|
|||||||
*** exeopener ***
|
|
||||||
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2022 Chiharu Shirasaka
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
@@ -5,31 +5,27 @@ JOBS=$(nproc)
|
|||||||
REPO=$(git rev-parse --show-toplevel)
|
REPO=$(git rev-parse --show-toplevel)
|
||||||
WORK=${REPO}/image/work
|
WORK=${REPO}/image/work
|
||||||
LINUX=${REPO}/linux-brain
|
LINUX=${REPO}/linux-brain
|
||||||
ROOTFS=$1
|
IMG=${REPO}/image/sd.img
|
||||||
IMG_NAME=$2
|
|
||||||
IMG=${REPO}/image/${IMG_NAME}
|
|
||||||
SIZE_M=$3
|
|
||||||
export CROSS_COMPILE=arm-linux-gnueabi-
|
export CROSS_COMPILE=arm-linux-gnueabi-
|
||||||
|
|
||||||
mkdir -p ${WORK}
|
mkdir -p ${WORK}
|
||||||
mkdir -p ${WORK}/lilobin
|
mkdir -p ${WORK}/lilobin
|
||||||
|
|
||||||
for i in "a7200" "a7400" "sh1" "sh2" "sh3" "sh4" "sh5" "sh6" "sh7"; do
|
# for i in "g5300" "sh1" "sh2" "sh3" "sh4" "sh5" "sh6" "sh7"; do
|
||||||
|
for i in "sh1"; do
|
||||||
NUM=$(echo $i | sed -E 's/sh//g')
|
NUM=$(echo $i | sed -E 's/sh//g')
|
||||||
|
|
||||||
make -C ${REPO}/u-boot-brain distclean pw${i}_defconfig
|
make -C ${REPO}/u-boot-brain distclean pw${i}_defconfig
|
||||||
make -j${JOBS} -C ${REPO}/u-boot-brain u-boot.bin
|
make -j${JOBS} -C ${REPO}/u-boot-brain u-boot.sb
|
||||||
${REPO}/nkbin_maker/bsd-ce ${REPO}/u-boot-brain/u-boot.bin
|
#${REPO}/nkbin_maker/bsd-ce ${REPO}/u-boot-brain/u-boot.bin
|
||||||
|
|
||||||
case $i in
|
case $i in
|
||||||
"a7200")
|
"g5300")
|
||||||
mv ${REPO}/nk.bin ${WORK}/edna3exe.bin
|
mv ${REPO}/nk.bin ${WORK}/edna3exe.bin
|
||||||
mv ${REPO}/u-boot-brain/u-boot.bin ${WORK}/lilobin/gen2.bin;;
|
mv ${REPO}/u-boot-brain/u-boot.bin ${WORK}/lilobin/gen2.bin;;
|
||||||
"a7400")
|
|
||||||
mv ${REPO}/u-boot-brain/u-boot.bin ${WORK}/lilobin/gen2_7400.bin;;
|
|
||||||
"sh1" | "sh2" | "sh3")
|
"sh1" | "sh2" | "sh3")
|
||||||
mv ${REPO}/nk.bin ${WORK}/edsa${NUM}exe.bin
|
# mv ${REPO}/nk.bin ${WORK}/edsa${NUM}exe.bin
|
||||||
mv ${REPO}/u-boot-brain/u-boot.bin ${WORK}/lilobin/gen3_${NUM}.bin;;
|
mv ${REPO}/u-boot-brain/u-boot.sb ${WORK}/lilobin/gen3_${NUM}.sb;;
|
||||||
"sh4" | "sh5" | "sh6" | "sh7")
|
"sh4" | "sh5" | "sh6" | "sh7")
|
||||||
mv ${REPO}/nk.bin ${WORK}/edsh${NUM}exe.bin
|
mv ${REPO}/nk.bin ${WORK}/edsh${NUM}exe.bin
|
||||||
mv ${REPO}/u-boot-brain/u-boot.bin ${WORK}/lilobin/gen3_${NUM}.bin;;
|
mv ${REPO}/u-boot-brain/u-boot.bin ${WORK}/lilobin/gen3_${NUM}.bin;;
|
||||||
@@ -39,34 +35,41 @@ for i in "a7200" "a7400" "sh1" "sh2" "sh3" "sh4" "sh5" "sh6" "sh7"; do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
dd if=/dev/zero of=${IMG} bs=1M count=${SIZE_M}
|
dd if=/dev/zero of=${IMG} bs=1M count=2048
|
||||||
|
|
||||||
START1=2048
|
START1=2048
|
||||||
SECTORS1=$((1024 * 1024 * 64 / 512))
|
SECTORS1=$((1024 * 1024 * 64 / 512))
|
||||||
START2=$((2048 + ${SECTORS1}))
|
START2=$((2048 + ${SECTORS1}))
|
||||||
|
SECTORS1=$((1024 * 1024 * 8 / 512))
|
||||||
|
START2=$((2048 + ${SECTORS1} + ${SECTORS2}))
|
||||||
|
|
||||||
cat <<EOF > ${WORK}/part.sfdisk
|
cat <<EOF > ${WORK}/part.sfdisk
|
||||||
${IMG}1 : start=${START1}, size=${SECTORS1}, type=b
|
${IMG}1 : start=${START1}, size=${SECTORS1}, type=b
|
||||||
${IMG}2 : start=${START2}, type=83
|
${IMG}2 : start=${START2}, size=${SECTORS2}, type=53
|
||||||
|
${IMG}3 : start=${START3}, type=83
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
sfdisk ${IMG} < ${WORK}/part.sfdisk
|
sfdisk ${IMG} < ${WORK}/part.sfdisk
|
||||||
|
|
||||||
sudo kpartx -av ${IMG}
|
sudo kpartx -av ${IMG}
|
||||||
|
|
||||||
LOOPDEV=$(losetup -l | grep ${IMG_NAME} | grep -o 'loop.' | tail -n 1)
|
LOOPDEV=$(losetup -l | grep sd.img | grep -o 'loop.' | tail -n 1)
|
||||||
|
|
||||||
|
${REPO}/image/mk_hdr.sh `fdisk -lu /dev/${LOOPDEV} | awk '$6==53 {print $2}'` 1 > ${WORK}/header.bin
|
||||||
|
dd if=${WORK}/header.bin of=/dev/${LOOPDEV}p2 ibs=512 conv=sync
|
||||||
|
dd if=${WORK}/lilobin/gen3_1.sb of=/dev/${LOOPDEV}p2 ibs=512 obs=512 seek=1 conv=sync
|
||||||
|
|
||||||
sudo mkfs.fat -n boot -F32 -v -I /dev/mapper/${LOOPDEV}p1
|
sudo mkfs.fat -n boot -F32 -v -I /dev/mapper/${LOOPDEV}p1
|
||||||
sudo mkfs.ext4 -L rootfs /dev/mapper/${LOOPDEV}p2
|
sudo mkfs.ext4 -L rootfs /dev/mapper/${LOOPDEV}p3
|
||||||
|
|
||||||
mkdir -p ${WORK}/p1 ${WORK}/p2
|
mkdir -p ${WORK}/p1 ${WORK}/p3
|
||||||
sudo mount -o utf8=true /dev/mapper/${LOOPDEV}p1 ${WORK}/p1
|
sudo mount -o utf8=true /dev/mapper/${LOOPDEV}p1 ${WORK}/p1
|
||||||
sudo mount /dev/mapper/${LOOPDEV}p2 ${WORK}/p2
|
sudo mount /dev/mapper/${LOOPDEV}p3 ${WORK}/p3
|
||||||
|
|
||||||
sudo cp ${LINUX}/arch/arm/boot/zImage ${WORK}/p1/
|
sudo cp ${LINUX}/arch/arm/boot/zImage ${WORK}/p1/
|
||||||
sudo cp ${LINUX}/arch/arm/boot/dts/imx28-pw*.dtb ${WORK}/p1/
|
sudo cp ${LINUX}/arch/arm/boot/dts/imx28-pw*.dtb ${WORK}/p1/
|
||||||
sudo mkdir -p ${WORK}/p1/nk
|
# sudo mkdir -p ${WORK}/p1/nk
|
||||||
sudo cp ${WORK}/*.bin ${WORK}/p1/nk/
|
# sudo cp ${WORK}/*.bin ${WORK}/p1/nk/
|
||||||
|
|
||||||
make -C ${REPO}/brainlilo
|
make -C ${REPO}/brainlilo
|
||||||
|
|
||||||
@@ -76,16 +79,16 @@ sudo touch "${LILO}/index.din"
|
|||||||
sudo touch "${LILO}/AppMain.cfg"
|
sudo touch "${LILO}/AppMain.cfg"
|
||||||
sudo cp ${REPO}/brainlilo/*.dll "${LILO}/"
|
sudo cp ${REPO}/brainlilo/*.dll "${LILO}/"
|
||||||
sudo cp ${REPO}/brainlilo/BrainLILO.exe "${LILO}/AppMain_.exe"
|
sudo cp ${REPO}/brainlilo/BrainLILO.exe "${LILO}/AppMain_.exe"
|
||||||
gzip -cd ${REPO}/image/exeopener.exe.gz > ${REPO}/image/exeopener.exe
|
gzip -d ${REPO}/image/exeopener.exe.gz
|
||||||
sudo cp ${REPO}/image/exeopener.exe "${LILO}/AppMain.exe"
|
sudo cp ${REPO}/image/exeopener.exe "${LILO}/AppMain.exe"
|
||||||
|
|
||||||
sudo mkdir -p ${WORK}/p1/loader
|
sudo mkdir -p ${WORK}/p1/loader
|
||||||
sudo cp ${WORK}/lilobin/*.bin ${WORK}/p1/loader/
|
sudo cp ${WORK}/lilobin/*.bin ${WORK}/p1/loader/
|
||||||
|
|
||||||
sudo cp -ra ${REPO}/${ROOTFS}/* ${WORK}/p2/
|
sudo cp -ra ${REPO}/brainux/* ${WORK}/p3/
|
||||||
|
|
||||||
sudo umount ${WORK}/p1 ${WORK}/p2
|
sudo umount ${WORK}/p1 ${WORK}/p3
|
||||||
sudo kpartx -d ${IMG}
|
sudo kpartx -d ${IMG}
|
||||||
|
|
||||||
rmdir ${WORK}/p1 ${WORK}/p2
|
rmdir ${WORK}/p1 ${WORK}/p3
|
||||||
|
|
||||||
|
|||||||
57
image/build_image_emmc.sh
Executable file
57
image/build_image_emmc.sh
Executable file
@@ -0,0 +1,57 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -uex -o pipefail
|
||||||
|
|
||||||
|
JOBS=$(nproc)
|
||||||
|
REPO=$(git rev-parse --show-toplevel)
|
||||||
|
WORK=${REPO}/image/work
|
||||||
|
LINUX=${REPO}/linux-brain
|
||||||
|
IMG=${REPO}/image/sd.img
|
||||||
|
export CROSS_COMPILE=${CROSS_COMPILE:="arm-linux-gnueabi-"}
|
||||||
|
|
||||||
|
mkdir -p ${WORK}
|
||||||
|
mkdir -p ${WORK}/lilobin
|
||||||
|
|
||||||
|
for i in "sh1"; do
|
||||||
|
NUM=$(echo $i | sed -E 's/sh//g')
|
||||||
|
|
||||||
|
make -C ${REPO}/u-boot-brain distclean pw${i}_defconfig
|
||||||
|
make -j${JOBS} -C ${REPO}/u-boot-brain u-boot.sb u-boot.bin
|
||||||
|
|
||||||
|
case $i in
|
||||||
|
"sh1" | "sh2" | "sh3")
|
||||||
|
mv ${REPO}/u-boot-brain/u-boot.sb ${WORK}/lilobin/gen3_${NUM}.sb
|
||||||
|
mv ${REPO}/u-boot-brain/u-boot.bin ${WORK}/lilobin/gen3_${NUM}.bin;;
|
||||||
|
*)
|
||||||
|
echo "WTF: $i"
|
||||||
|
exit 1;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
dd if=/dev/zero of=${IMG} bs=1M count=96
|
||||||
|
|
||||||
|
START1=2048
|
||||||
|
SECTORS1=$((1024 * 1024 * 64 / 512))
|
||||||
|
START2=$((2048 + ${SECTORS1}))
|
||||||
|
SECTORS2=$((1024 * 1024 * 8 / 512))
|
||||||
|
START3=$((2048 + ${SECTORS1} + ${SECTORS2}))
|
||||||
|
|
||||||
|
cat <<EOF > ${WORK}/part.sfdisk
|
||||||
|
${IMG}1 : start=${START1}, size=${SECTORS1}, type=b
|
||||||
|
${IMG}2 : start=${START2}, size=${SECTORS2}, type=53
|
||||||
|
${IMG}3 : start=${START3}, type=83
|
||||||
|
EOF
|
||||||
|
|
||||||
|
sfdisk ${IMG} < ${WORK}/part.sfdisk
|
||||||
|
|
||||||
|
sudo kpartx -av ${IMG}
|
||||||
|
|
||||||
|
LOOPDEV=$(losetup -l | grep sd.img | grep -o 'loop.' | tail -n 1)
|
||||||
|
${REPO}/image/mk_hdr.sh `fdisk -lu /dev/${LOOPDEV} | awk '$6==53 {print $2}'` 1 > ${WORK}/header.bin
|
||||||
|
dd if=${WORK}/header.bin of=/dev/${LOOPDEV}p2 ibs=512 conv=sync
|
||||||
|
dd if=${WORK}/lilobin/gen3_1.sb of=/dev/${LOOPDEV}p2 ibs=512 obs=512 seek=1 conv=sync
|
||||||
|
|
||||||
|
# sudo mount -o utf8=true /dev/mapper/${LOOPDEV}p1 ${WORK}/p1
|
||||||
|
# sudo mount /dev/mapper/${LOOPDEV}p2 ${WORK}/p2
|
||||||
|
|
||||||
|
sudo kpartx -d ${IMG}
|
||||||
|
|
||||||
148
image/mk_hdr.sh
Executable file
148
image/mk_hdr.sh
Executable file
@@ -0,0 +1,148 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# mk_hdr.sh
|
||||||
|
# Redistributed URL: https://github.com/embeddedTS/linux-2.6.35.3-imx28/blob/master/mk_hdr.sh
|
||||||
|
#
|
||||||
|
# This program is distributed with mk_mx28_sd that has the text of 3-Clause BSD License.
|
||||||
|
# Both are considered to be licenced under the same agreement so we put the text here.
|
||||||
|
|
||||||
|
# Copyright (c) 2010 Freescale Semiconductor, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
# are permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# o Redistributions of source code must retain the above copyright notice, this list
|
||||||
|
# of conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# o 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.
|
||||||
|
#
|
||||||
|
# o Neither the name of Freescale Semiconductor, Inc. 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 COPYRIGHT HOLDER 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.
|
||||||
|
|
||||||
|
# Usage: make_boot <base_sector> <num_sb_files>
|
||||||
|
#
|
||||||
|
# where
|
||||||
|
#
|
||||||
|
# <base_sector> is the first sector _of the boot stream partition (i.e. /sd#2 or /sd#3, etc)
|
||||||
|
# <num_sb_files> is the # of boot stream blocks (currently only 1 supported)
|
||||||
|
|
||||||
|
#[ $1 = ] && { echo -e " error - boot partition start sector missing" ; exit };
|
||||||
|
#[ $2 = ] && { echo -e " error - # of bootable images in .sb file missing" ; exit };
|
||||||
|
|
||||||
|
# Future usage: make_boot <dev_partition> <sb_file_tag,sb_sector_offset> <sb_file_tag2, base_addr2> ...
|
||||||
|
#
|
||||||
|
# Where base sector comes from MBR, and sb_sector_offset is an offset from start of boot-partition, not absolute sector.
|
||||||
|
|
||||||
|
|
||||||
|
#Script Vars
|
||||||
|
base_sector=$1
|
||||||
|
numbootstreams=$2
|
||||||
|
primary=0
|
||||||
|
secondary=0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#########################################
|
||||||
|
# out_byte args...
|
||||||
|
#
|
||||||
|
# this function writes the binary value to stdout of each argument in the order given
|
||||||
|
# i.e. out_byte 0 1 2 3 will echo "\x00\x01\x02\x03" to stdout (w/o terminating null )
|
||||||
|
|
||||||
|
function out_byte(){
|
||||||
|
for val in $*
|
||||||
|
do
|
||||||
|
# echo -e "byte=$val"
|
||||||
|
echo -en "\\x$(printf %02x $val)"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function out_u32_le()
|
||||||
|
{
|
||||||
|
for val32 in $*
|
||||||
|
do
|
||||||
|
|
||||||
|
val=$(($val32))
|
||||||
|
b0=$((val % (2**8)))
|
||||||
|
val=$((val / (2**8)))
|
||||||
|
b1=$((val % (2**8)))
|
||||||
|
val=$((val / (2**8)))
|
||||||
|
b2=$((val % (2**8)))
|
||||||
|
val=$((val / (2**8)))
|
||||||
|
b3=$((val % (2**8)))
|
||||||
|
|
||||||
|
### Keep around for debug/verbose output
|
||||||
|
# printf "$val32 ==> %02x%02x%02x%02x\n" $b0 $b1 $b2 $b3
|
||||||
|
|
||||||
|
### Output the bytes in binary form
|
||||||
|
#
|
||||||
|
out_byte $b0 $b1 $b2 $b3
|
||||||
|
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function out_bcb ()
|
||||||
|
{
|
||||||
|
signature=0x00112233
|
||||||
|
primary_tag=$1
|
||||||
|
secondary_tag=$2
|
||||||
|
num_bsb=$3
|
||||||
|
out_u32_le signature primary_tag secondary_tag num_bsb
|
||||||
|
}
|
||||||
|
|
||||||
|
# usage: out_bsb tag base_sector
|
||||||
|
# where base_sector is relative to partition
|
||||||
|
# i.e. if partition starts on lba 63 & first boot stream, base_sector = 1, not 64
|
||||||
|
# This function will automatically compute the absolute base sector.
|
||||||
|
function out_bsb
|
||||||
|
{
|
||||||
|
abs_sector=$(($2 + $base_sector))
|
||||||
|
# unused0
|
||||||
|
out_u32_le 0
|
||||||
|
# unused1
|
||||||
|
out_u32_le 0
|
||||||
|
# tag boot stream tag
|
||||||
|
out_u32_le $1
|
||||||
|
# boot stream base sector (absolute)
|
||||||
|
out_u32_le $abs_sector
|
||||||
|
# unused2
|
||||||
|
out_u32_le 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
###############################
|
||||||
|
# Send header output to std out
|
||||||
|
###############################
|
||||||
|
|
||||||
|
|
||||||
|
# Output boot stream signature & info
|
||||||
|
# out_u32_le signature primary secondary numbootstreams
|
||||||
|
out_bcb primary secondary numbootstreams
|
||||||
|
|
||||||
|
# Output .sb starting sector info
|
||||||
|
# out_u32_le unused0 unused1 tag base_sector unused2
|
||||||
|
out_bsb primary 1
|
||||||
|
|
||||||
|
# Output bsb for sb #2
|
||||||
|
#out_bsb tag_[p|s] base_sector_2
|
||||||
|
|
||||||
|
# Output bsb for sb #n
|
||||||
|
# out_bsb tag_[p|s] base_sector_n
|
||||||
|
#
|
||||||
|
|
||||||
Submodule linux-brain updated: afbb7e0176...09cc34a56d
@@ -1,10 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -uex -o pipefail
|
|
||||||
|
|
||||||
SRC=$1
|
|
||||||
DST=$2
|
|
||||||
|
|
||||||
install -g root -o root -m 0644 $SRC/lib/systemd/system/boot.mount $DST/lib/systemd/system/boot.mount
|
|
||||||
install -g root -o root -m 0644 $SRC/lib/systemd/system/rndis_gadget.service $DST/lib/systemd/system/rndis_gadget.service
|
|
||||||
install -g root -o root -m 0755 $SRC/usr/bin/enable_rndis_gadget $DST/usr/bin/enable_rndis_gadget
|
|
||||||
@@ -5,8 +5,10 @@ set -uex -o pipefail
|
|||||||
SRC=$1
|
SRC=$1
|
||||||
DST=$2
|
DST=$2
|
||||||
|
|
||||||
|
install -g root -o root -m 0644 $SRC/usr/lib/os-release $DST/usr/lib/os-release
|
||||||
|
install -g root -o root -m 0644 $SRC/etc/issue $DST/etc/issue
|
||||||
|
install -g root -o root -m 0644 $SRC/etc/issue.net $DST/etc/issue.net
|
||||||
install -g root -o root -m 0644 $SRC/etc/motd $DST/etc/motd
|
install -g root -o root -m 0644 $SRC/etc/motd $DST/etc/motd
|
||||||
install -g root -o root -m 0440 $SRC/etc/sudoers $DST/etc/sudoers
|
|
||||||
|
|
||||||
install -g root -o root -m 0644 $SRC/etc/X11/xorg.conf $DST/etc/X11/xorg.conf
|
install -g root -o root -m 0644 $SRC/etc/X11/xorg.conf $DST/etc/X11/xorg.conf
|
||||||
install -g root -o root -m 0644 $SRC/etc/X11/Xsession.d/96calibrate $DST/etc/X11/Xsession.d/96calibrate
|
install -g root -o root -m 0644 $SRC/etc/X11/Xsession.d/96calibrate $DST/etc/X11/Xsession.d/96calibrate
|
||||||
|
|||||||
2
os-brainux/override/etc/issue
Normal file
2
os-brainux/override/etc/issue
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
Brainux GNU/Linux 10 \n \l
|
||||||
|
|
||||||
1
os-brainux/override/etc/issue.net
Normal file
1
os-brainux/override/etc/issue.net
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Brainux GNU/Linux 10
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
#
|
|
||||||
# This file MUST be edited with the 'visudo' command as root.
|
|
||||||
#
|
|
||||||
# Please consider adding local content in /etc/sudoers.d/ instead of
|
|
||||||
# directly modifying this file.
|
|
||||||
#
|
|
||||||
# See the man page for details on how to write a sudoers file.
|
|
||||||
#
|
|
||||||
Defaults env_reset,pwfeedback
|
|
||||||
Defaults mail_badpass
|
|
||||||
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
|
||||||
|
|
||||||
# Host alias specification
|
|
||||||
|
|
||||||
# User alias specification
|
|
||||||
|
|
||||||
# Cmnd alias specification
|
|
||||||
|
|
||||||
# User privilege specification
|
|
||||||
root ALL=(ALL:ALL) ALL
|
|
||||||
|
|
||||||
# Allow members of group sudo to execute any command
|
|
||||||
%sudo ALL=(ALL:ALL) ALL
|
|
||||||
|
|
||||||
# See sudoers(5) for more information on "@include" directives:
|
|
||||||
|
|
||||||
@includedir /etc/sudoers.d
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Mount boot partition
|
|
||||||
|
|
||||||
[Mount]
|
|
||||||
What=/dev/mmcblk1p1
|
|
||||||
Where=/boot
|
|
||||||
Options=ro
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Enable RNDIS USB Gadget
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
ExecStart=/usr/bin/enable_rndis_gadget
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
g=/sys/kernel/config/usb_gadget/eth
|
|
||||||
|
|
||||||
mkdir ${g}
|
|
||||||
|
|
||||||
echo "0x3066" > ${g}/bcdDevice
|
|
||||||
echo "1" > ${g}/os_desc/use
|
|
||||||
echo "0xcd" > ${g}/os_desc/b_vendor_code
|
|
||||||
echo "MSFT100" > ${g}/os_desc/qw_sign
|
|
||||||
|
|
||||||
mkdir ${g}/functions/rndis.rn0
|
|
||||||
echo "RNDIS" > ${g}/functions/rndis.rn0/os_desc/interface.rndis/compatible_id
|
|
||||||
echo "5162001" > ${g}/functions/rndis.rn0/os_desc/interface.rndis/sub_compatible_id
|
|
||||||
echo "8a:15:8b:44:3a:02" > ${g}/functions/rndis.rn0/dev_addr
|
|
||||||
echo "8a:15:8b:44:3a:01" > ${g}/functions/rndis.rn0/host_addr
|
|
||||||
|
|
||||||
mkdir ${g}/configs/c.1
|
|
||||||
ln -s ${g}/functions/rndis.rn0 ${g}/configs/c.1/
|
|
||||||
|
|
||||||
echo "ci_hdrc.0" > ${g}/UDC
|
|
||||||
|
|
||||||
sleep 1
|
|
||||||
ifconfig usb0 up
|
|
||||||
dhclient
|
|
||||||
9
os-brainux/override/usr/lib/os-release
Normal file
9
os-brainux/override/usr/lib/os-release
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
PRETTY_NAME="Brainux GNU/Linux 11 (bullseye)"
|
||||||
|
NAME="Brainux GNU/Linux"
|
||||||
|
VERSION_ID="11"
|
||||||
|
VERSION="11 (bullseye)"
|
||||||
|
VERSION_CODENAME=bullseye
|
||||||
|
ID=debian
|
||||||
|
HOME_URL="https://github.com/brain-hackers/README"
|
||||||
|
SUPPORT_URL="https://github.com/brain-hackers/buildbrain"
|
||||||
|
BUG_REPORT_URL="https://github.com/brain-hackers/buildbrain"
|
||||||
@@ -55,10 +55,10 @@ echo "brain" > /etc/hostname
|
|||||||
# Install packagecloud repository
|
# Install packagecloud repository
|
||||||
# Reference: https://packagecloud.io/brainhackers/brainux/install
|
# Reference: https://packagecloud.io/brainhackers/brainux/install
|
||||||
|
|
||||||
# curl, ca-certificates: downloads the GPG key from packagecloud
|
# curl: downloads the GPG key from packagecloud
|
||||||
# gnupg, debian-archive-keyring: packagecloud verification dependency
|
# gnupg, debian-archive-keyring: packagecloud verification dependency
|
||||||
DEBIAN_FRONTEND=noninteractive \
|
DEBIAN_FRONTEND=noninteractive \
|
||||||
apt install -y curl ca-certificates gnupg debian-archive-keyring
|
apt install -y curl gnupg debian-archive-keyring
|
||||||
|
|
||||||
# apt-transport-https can be installed after debian-archive-keyring being installed
|
# apt-transport-https can be installed after debian-archive-keyring being installed
|
||||||
DEBIAN_FRONTEND=noninteractive \
|
DEBIAN_FRONTEND=noninteractive \
|
||||||
@@ -80,11 +80,12 @@ apt update -y
|
|||||||
DEBIAN_FRONTEND=noninteractive \
|
DEBIAN_FRONTEND=noninteractive \
|
||||||
apt install -y dialog sudo \
|
apt install -y dialog sudo \
|
||||||
libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev \
|
libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev \
|
||||||
xserver-xorg xserver-xorg-video-fbdev xserver-xorg-dev xserver-xorg-input-evdev xinput-calibrator xorg-dev x11-apps x11-ico-dvd xinit \
|
xserver-xorg xserver-xorg-video-fbdev xserver-xorg-dev xserver-xorg-input-evdev xinput-calibrator xorg-dev x11-apps xinit \
|
||||||
jwm \
|
jwm \
|
||||||
|
weston xwayland \
|
||||||
bash tmux vim htop \
|
bash tmux vim htop \
|
||||||
midori pcmanfm lxterminal xterm gnome-terminal fbterm uim-fep uim-anthy fonts-noto-cjk \
|
midori pcmanfm lxterminal xterm gnome-terminal fbterm uim-fep uim-anthy fonts-noto-cjk \
|
||||||
dbus udev alsa-utils usbutils iw fake-hwclock systemd-timesyncd\
|
dbus udev alsa-utils usbutils iw fake-hwclock\
|
||||||
build-essential flex bison pkg-config autotools-dev libtool autoconf automake device-tree-compiler \
|
build-essential flex bison pkg-config autotools-dev libtool autoconf automake device-tree-compiler \
|
||||||
python3 python3-dev python3-setuptools python3-wheel python3-pip python3-smbus \
|
python3 python3-dev python3-setuptools python3-wheel python3-pip python3-smbus \
|
||||||
resolvconf net-tools ssh openssh-client avahi-daemon wget git \
|
resolvconf net-tools ssh openssh-client avahi-daemon wget git \
|
||||||
@@ -100,11 +101,10 @@ systemctl enable fake-hwclock
|
|||||||
DEBIAN_FRONTEND=noninteractive \
|
DEBIAN_FRONTEND=noninteractive \
|
||||||
apt install -y libpam0g-dev libxcb-xkb-dev
|
apt install -y libpam0g-dev libxcb-xkb-dev
|
||||||
cd /
|
cd /
|
||||||
git clone --recurse-submodules -b master-24f017e https://github.com/brain-hackers/ly.git
|
git clone --recurse-submodules https://github.com/nullgemm/ly.git
|
||||||
cd ly
|
cd ly
|
||||||
make
|
make
|
||||||
make install
|
make install
|
||||||
make installsystemd
|
|
||||||
cd /
|
cd /
|
||||||
rm -r ly
|
rm -r ly
|
||||||
systemctl enable ly
|
systemctl enable ly
|
||||||
@@ -135,12 +135,6 @@ ttymxc0
|
|||||||
ttyLP0
|
ttyLP0
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Enable /boot mount
|
|
||||||
systemctl enable boot.mount
|
|
||||||
|
|
||||||
# Enable RNDIS gadget
|
|
||||||
systemctl enable rndis_gadget
|
|
||||||
|
|
||||||
# Get wild
|
# Get wild
|
||||||
cat <<EOF > /etc/apt/sources.list
|
cat <<EOF > /etc/apt/sources.list
|
||||||
deb http://deb.debian.org/debian bullseye main contrib non-free
|
deb http://deb.debian.org/debian bullseye main contrib non-free
|
||||||
|
|||||||
@@ -1,112 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -u
|
|
||||||
|
|
||||||
VERBOSE=0
|
|
||||||
PIN=""
|
|
||||||
SLEEP=1
|
|
||||||
GPIOS=""
|
|
||||||
|
|
||||||
while getopts "hvr:p:s:" OPT; do
|
|
||||||
case "$OPT" in
|
|
||||||
h)
|
|
||||||
echo "Usage: blink.sh [-hv] [-r PIN_RANGE_FROM-PIN_RANGE_TO] [-p PIN] [-s SLEEP_SEC]"
|
|
||||||
echo "Example: blink.sh -r 0-10 -p 12"
|
|
||||||
echo " (blink from GPIO 0 to 10 and 12)"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
v)
|
|
||||||
VERBOSE=1
|
|
||||||
;;
|
|
||||||
r)
|
|
||||||
RE='^([0-9]+)-([0-9]+)$'
|
|
||||||
if echo $OPTARG | grep -qvE $RE; then
|
|
||||||
echo "Error: invalid range: $OPTARG"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
FROM=$(echo $OPTARG | sed -E "s/$RE/\\1/")
|
|
||||||
TO=$(echo $OPTARG | sed -E "s/$RE/\\2/")
|
|
||||||
GPIOS="$GPIOS$(seq -s " " $FROM $TO) "
|
|
||||||
;;
|
|
||||||
p)
|
|
||||||
if echo $OPTARG | grep -qvE "^[0-9]+$"; then
|
|
||||||
echo "Error: invalid pin number: $OPTARG"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
GPIOS="$GPIOS$OPTARG "
|
|
||||||
;;
|
|
||||||
s)
|
|
||||||
if echo $OPTARG | grep -qvE "^[0-9]+$"; then
|
|
||||||
echo "Error: invalid sleep duration: $OPTARG"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
SLEEP=$OPTARG
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ $VERBOSE -eq 1 ]; then
|
|
||||||
echo "Pins to iterate over: $GPIOS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$(id -u)" -ne "0" ]; then
|
|
||||||
echo "Error: please run as root"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
AVAILABLE_GPIOS=""
|
|
||||||
|
|
||||||
export_gpio() {
|
|
||||||
echo $1 > /sys/class/gpio/export
|
|
||||||
}
|
|
||||||
|
|
||||||
set_direction() {
|
|
||||||
echo out > /sys/class/gpio/gpio$1/direction
|
|
||||||
}
|
|
||||||
|
|
||||||
set_value() {
|
|
||||||
echo $2 > /sys/class/gpio/gpio$1/value
|
|
||||||
}
|
|
||||||
|
|
||||||
for i in $GPIOS; do
|
|
||||||
if [ ! -e "/sys/class/gpio/gpio$i" ]; then
|
|
||||||
export_gpio $i 2>/dev/null
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "Error: failed to export the pin $i"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
set_direction $i 2>/dev/null
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
# Ignore the failure if the actual direction is out
|
|
||||||
if grep -vq "out" /dsys/class/gpio/gpio$i/direction; then
|
|
||||||
echo "Error: failed to set the direction of the pin $i to out"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
AVAILABLE_GPIOS="$AVAILABLE_GPIOS$i "
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Available GPIOs: $AVAILABLE_GPIOS"
|
|
||||||
|
|
||||||
while [ 1 ]; do
|
|
||||||
for i in $AVAILABLE_GPIOS; do
|
|
||||||
set_value $i 1 2>/dev/null
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "Warning: failed to set the value of the pin $i to high"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
sleep $SLEEP
|
|
||||||
|
|
||||||
for i in $AVAILABLE_GPIOS; do
|
|
||||||
set_value $i 0 2>/dev/null
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "Warning: failed to set the value of the pin $i to low"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
sleep $SLEEP
|
|
||||||
done
|
|
||||||
|
|
||||||
Submodule u-boot-brain updated: e8fc0d0cf3...2696eb4b8d
Reference in New Issue
Block a user