Compare commits

..

5 Commits

Author SHA1 Message Date
Takumi Sueda
9134d2b25c Update 2022-09-22 22:42:17 +09:00
Takumi Sueda
575b450af9 Add emmc.img target 2022-09-22 22:29:20 +09:00
Takumi Sueda
5852372b9b Add experimental eMMC build script 2022-09-22 17:10:17 +09:00
Takumi Sueda
3817fc5eeb Set envs if it's not set 2022-09-22 14:52:29 +09:00
Takumi Sueda
462651541a Add mk_hdr from Freescale 2022-09-22 14:51:28 +09:00
15 changed files with 258 additions and 79 deletions

View File

@@ -128,7 +128,7 @@ jobs:
strategy: strategy:
matrix: matrix:
include: include:
- model: a7200 - model: g5300
nk: edna3exe.bin nk: edna3exe.bin
lilo: gen2.bin lilo: gen2.bin
- model: sh1 - model: sh1

View File

@@ -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:
@@ -157,6 +157,9 @@ brainux:
image/sd.img: clean_work image/sd.img: clean_work
./image/build_image.sh ./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 ./image/build_image_x1.sh

View File

@@ -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.

View File

@@ -11,20 +11,21 @@ export CROSS_COMPILE=arm-linux-gnueabi-
mkdir -p ${WORK} mkdir -p ${WORK}
mkdir -p ${WORK}/lilobin mkdir -p ${WORK}/lilobin
for i in "a7200" "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;;
"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;;
@@ -34,15 +35,18 @@ for i in "a7200" "sh1" "sh2" "sh3" "sh4" "sh5" "sh6" "sh7"; do
esac esac
done done
dd if=/dev/zero of=${IMG} bs=1M count=3072 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
@@ -51,17 +55,21 @@ sudo kpartx -av ${IMG}
LOOPDEV=$(losetup -l | grep sd.img | grep -o 'loop.' | tail -n 1) LOOPDEV=$(losetup -l | grep sd.img | grep -o 'loop.' | tail -n 1)
sudo mkfs.fat -n boot -F32 -v -I /dev/mapper/${LOOPDEV}p1 ${REPO}/image/mk_hdr.sh `fdisk -lu /dev/${LOOPDEV} | awk '$6==53 {print $2}'` 1 > ${WORK}/header.bin
sudo mkfs.ext4 -L rootfs /dev/mapper/${LOOPDEV}p2 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
mkdir -p ${WORK}/p1 ${WORK}/p2 sudo mkfs.fat -n boot -F32 -v -I /dev/mapper/${LOOPDEV}p1
sudo mkfs.ext4 -L rootfs /dev/mapper/${LOOPDEV}p3
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
@@ -77,10 +85,10 @@ 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}/brainux/* ${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
View 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
View 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
#

View File

@@ -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

View File

@@ -0,0 +1,2 @@
Brainux GNU/Linux 10 \n \l

View File

@@ -0,0 +1 @@
Brainux GNU/Linux 10

View File

@@ -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

View 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"

View File

@@ -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 \
@@ -85,7 +85,7 @@ DEBIAN_FRONTEND=noninteractive \
weston xwayland \ 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 \
@@ -105,7 +105,6 @@ 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