Remove rootfs.sh
This commit is contained in:
parent
713fd9143f
commit
f090ddc5bb
|
@ -23,7 +23,7 @@ shell_lint_task:
|
||||||
- apt-get -y install shellcheck
|
- apt-get -y install shellcheck
|
||||||
- apt-get -y clean
|
- apt-get -y clean
|
||||||
check_script:
|
check_script:
|
||||||
- shellcheck rootfs.sh sysa/run.sh sysa/helpers.sh
|
- shellcheck sysa/run.sh sysa/helpers.sh
|
||||||
|
|
||||||
reuse_lint_task:
|
reuse_lint_task:
|
||||||
container:
|
container:
|
||||||
|
|
2
DEVEL.md
2
DEVEL.md
|
@ -59,7 +59,7 @@ Permissable folders/files:
|
||||||
- After `patch`, `sha-2` is built which contains an external implementation of
|
- After `patch`, `sha-2` is built which contains an external implementation of
|
||||||
`sha256sum`. We then use that currently for all remaining software.
|
`sha256sum`. We then use that currently for all remaining software.
|
||||||
- To extract the binaries to get their checksums, use of chroot mode is
|
- To extract the binaries to get their checksums, use of chroot mode is
|
||||||
recommended (i.e. `./rootfs.sh chroot`).
|
recommended (i.e. `./rootfs.py --chroot`).
|
||||||
|
|
||||||
Furthermore, there is a special top-level dir `dev-utils`. In here are
|
Furthermore, there is a special top-level dir `dev-utils`. In here are
|
||||||
appropriate utilities that are often useful for development and not generally
|
appropriate utilities that are often useful for development and not generally
|
||||||
|
|
|
@ -19,12 +19,12 @@ Get me started!
|
||||||
2. ``git submodule update --init --recursive``
|
2. ``git submodule update --init --recursive``
|
||||||
3. Provide a kernel (vmlinuz file) as the name kernel in the root of the
|
3. Provide a kernel (vmlinuz file) as the name kernel in the root of the
|
||||||
repository.
|
repository.
|
||||||
4. ``./rootfs.sh`` - ensure your account has kvm privileges and qemu
|
4. ``./rootfs.py`` - ensure your account has kvm privileges and qemu
|
||||||
installed.
|
installed.
|
||||||
|
|
||||||
a. Alternatively, run ``./rootfs.sh chroot`` to run it in a chroot.
|
a. Alternatively, run ``./rootfs.py --chroot`` to run it in a chroot.
|
||||||
b. Alternatively, run ``./rootfs.sh`` but don’t run the actual
|
b. Alternatively, run ``./rootfs.py`` but don’t run the actual
|
||||||
virtualization and instead copy sysa/tmp/initramfs.igz to a USB or
|
virtualization and instead copy sysa/tmp/initramfs to a USB or
|
||||||
some other device and boot from bare metal.
|
some other device and boot from bare metal.
|
||||||
|
|
||||||
5. Wait.
|
5. Wait.
|
||||||
|
|
393
rootfs.sh
393
rootfs.sh
|
@ -1,393 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
|
|
||||||
# SPDX-FileCopyrightText: 2021 Bastian Bittorf <bb@npl.de>
|
|
||||||
# SPDX-FileCopyrightText: 2020-2021 fosslinux <fosslinux@aussies.space>
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
QEMU_CMD="${1:-qemu-system-x86_64}" # or 'chroot' or 'minikernel'
|
|
||||||
QEMU_RAM="${2:-8G}"
|
|
||||||
|
|
||||||
GITDIR="$PWD/$(dirname "$0")"
|
|
||||||
if [ ! -f 'rootfs.sh' ]; then
|
|
||||||
echo 'must be run from base of repo'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
pushd sysa
|
|
||||||
|
|
||||||
# SYSTEM A
|
|
||||||
|
|
||||||
# Setup tmp
|
|
||||||
mkdir -p tmp/
|
|
||||||
sudo mount -t tmpfs -o size=8G tmpfs tmp
|
|
||||||
|
|
||||||
LOGFILE="$PWD/tmp/bootstrap.log"
|
|
||||||
|
|
||||||
_wget() {
|
|
||||||
local url="$1"
|
|
||||||
local dir="${CACHEDIR:-$GITDIR/sources}"
|
|
||||||
local file="${2:-$(basename "${url}")}"
|
|
||||||
mkdir -p "$dir"
|
|
||||||
test -s "$dir/$file" || command wget -O "$dir/$file" "$url"
|
|
||||||
cp -v "$dir/$file" .
|
|
||||||
checksum_do "$dir" "$file"
|
|
||||||
}
|
|
||||||
|
|
||||||
checksum_do() {
|
|
||||||
local dir="$1"
|
|
||||||
local file="$2"
|
|
||||||
local line
|
|
||||||
local store="$GITDIR/SHA256SUMS.sources"
|
|
||||||
|
|
||||||
if line=$(grep "[[:space:]][[:space:]]$file"$ "$store"); then
|
|
||||||
(cd "$dir" && echo "$line" | sha256sum -c)
|
|
||||||
else
|
|
||||||
echo 'Checksum mismatch or not found!'
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# base: mescc-tools-seed
|
|
||||||
# copy in all the mescc-tools-seed stuff
|
|
||||||
cp -r mescc-tools-seed/src/mescc-tools-seed/x86/* tmp
|
|
||||||
cp -r mescc-tools-seed/src/mescc-tools-seed/{M2-Planet,mes-m2} tmp/
|
|
||||||
cp -r mescc-tools-seed/src/mescc-tools-patched tmp/mescc-tools
|
|
||||||
# and the kaem seed
|
|
||||||
cp bootstrap-seeds/POSIX/x86/kaem-optional-seed tmp/init
|
|
||||||
cp bootstrap-seeds/POSIX/x86/kaem-optional-seed tmp/
|
|
||||||
cp -r bootstrap-seeds tmp/
|
|
||||||
# replace the init kaem with our own custom one
|
|
||||||
mv tmp/kaem.run tmp/mescc-tools-seed.kaem.run
|
|
||||||
cp base.kaem.run tmp/kaem.run
|
|
||||||
# create directories needed
|
|
||||||
mkdir -p tmp/bin
|
|
||||||
|
|
||||||
# after mescc-tools-seed we get into our own directory because
|
|
||||||
# the mescc-tools-seed one is hella messy
|
|
||||||
mkdir -p tmp/after/bin
|
|
||||||
mkdir -p tmp/after/{lib,include}
|
|
||||||
mkdir -p tmp/after/lib/{tcc,linux}
|
|
||||||
ln -s . tmp/after/lib/x86-mes
|
|
||||||
ln -s . tmp/after/lib/linux/x86-mes
|
|
||||||
mkdir -p tmp/after/include/{mes,gnu,linux,sys,mach}
|
|
||||||
mkdir -p tmp/after/include/linux/{x86,x86_64}
|
|
||||||
mkdir -p tmp/tmp
|
|
||||||
cp after.kaem tmp/
|
|
||||||
cp after.kaem.run tmp/after/kaem.run
|
|
||||||
cp mescc-tools-seed/checksums tmp/after/mescc-tools-seed-checksums
|
|
||||||
cp helpers.sh run.sh run2.sh pre-sha.sha256sums tmp/after/
|
|
||||||
|
|
||||||
# mescc-tools-extra
|
|
||||||
cp -r mescc-tools-extra tmp/after/
|
|
||||||
|
|
||||||
# mes
|
|
||||||
cp -r mes tmp/after/
|
|
||||||
#ln -s lib/x86-mes tmp/after/mes/src/mes/x86-mes
|
|
||||||
mkdir -p tmp/after/mes/src/mes/{bin,m2}
|
|
||||||
|
|
||||||
# tcc 0.9.26
|
|
||||||
cp -r tcc-0.9.26 tmp/after/
|
|
||||||
pushd tmp/after/tcc-0.9.26/src/tcc-0.9.26
|
|
||||||
ln -s ../mes/module .
|
|
||||||
ln -s ../mes/mes .
|
|
||||||
ln -s /after/lib x86-mes
|
|
||||||
ln -s /after/lib/linux .
|
|
||||||
popd
|
|
||||||
|
|
||||||
# tcc 0.9.27
|
|
||||||
cp -r tcc-0.9.27 tmp/after/
|
|
||||||
|
|
||||||
# tar 1.12
|
|
||||||
url=https://ftp.gnu.org/gnu/tar/tar-1.12.tar.gz
|
|
||||||
cp -r tar-1.12 tmp/after
|
|
||||||
mkdir tmp/after/tar-1.12/{src,build}
|
|
||||||
pushd tmp/after/tar-1.12/src
|
|
||||||
if [ ! -f "$(basename $url)" ]; then
|
|
||||||
_wget "$url"
|
|
||||||
fi
|
|
||||||
popd
|
|
||||||
tar -C tmp/after/tar-1.12/src -xf "tmp/after/tar-1.12/src/$(basename $url)" --strip-components=1
|
|
||||||
unset url
|
|
||||||
|
|
||||||
_get_file() {
|
|
||||||
local url="$1"
|
|
||||||
local output="$2"
|
|
||||||
local target="$3"
|
|
||||||
# Get the actual file
|
|
||||||
pushd "${target}/src"
|
|
||||||
if [ ! -f "$(basename "$url")" ]; then
|
|
||||||
_wget "$url" "${output:-${url##*/}}"
|
|
||||||
fi
|
|
||||||
popd
|
|
||||||
}
|
|
||||||
|
|
||||||
_get_target() {
|
|
||||||
local url="$1"
|
|
||||||
local output="$2"
|
|
||||||
local ext="${url##*.}"
|
|
||||||
if [ "$ext" = "tar" ]; then
|
|
||||||
bname=$(basename "${output:-${url}}" ".tar")
|
|
||||||
else
|
|
||||||
bname=$(basename "${output:-${url}}" ".tar.${ext}")
|
|
||||||
fi
|
|
||||||
# this is the target
|
|
||||||
echo "tmp/after/${bname}"
|
|
||||||
}
|
|
||||||
|
|
||||||
_get_main() {
|
|
||||||
local url="$1"
|
|
||||||
local output="$2"
|
|
||||||
local make_build="$3"
|
|
||||||
local target="$4"
|
|
||||||
# Copy main files
|
|
||||||
cp -r "$(basename "${target}")" tmp/after/
|
|
||||||
# Make directories
|
|
||||||
mkdir -p "${target}/src"
|
|
||||||
if [ "${make_build}" -eq 1 ]; then
|
|
||||||
mkdir -p "${target}/build"
|
|
||||||
fi
|
|
||||||
# Also get this file
|
|
||||||
_get_file "${url}" "${output}" "${target}"
|
|
||||||
}
|
|
||||||
|
|
||||||
get_file() {
|
|
||||||
# A mapping of URL to output filenames based on index (position-dependent)
|
|
||||||
local outputs=()
|
|
||||||
local urls=()
|
|
||||||
# Argument parsing
|
|
||||||
while [ $# -gt 0 ]; do
|
|
||||||
case "$1" in
|
|
||||||
--mkbuild=*) local make_build="${1#*=}" ;;
|
|
||||||
--output=*) outputs+=("${1#*=}") ;;
|
|
||||||
# It's just another URL to download
|
|
||||||
*) urls+=("$1") ;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
if [ -z "${make_build}" ]; then
|
|
||||||
make_build=0
|
|
||||||
fi
|
|
||||||
# Actual work
|
|
||||||
# Loop over urls
|
|
||||||
local url_length="${#urls[@]}"
|
|
||||||
local target
|
|
||||||
target="$(_get_target "${urls[0]}" "${outputs[0]}")"
|
|
||||||
_get_main "${urls[0]}" "${outputs[0]}" "${make_build}" "${target}"
|
|
||||||
if [ "${url_length}" -gt 1 ]; then
|
|
||||||
url_length="$((url_length-1))"
|
|
||||||
echo "${url_length}"
|
|
||||||
for i in $(seq 1 "${url_length}"); do
|
|
||||||
_get_file "${urls[${i}]}" "${outputs[${i}]}" "${target}"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# gzip 1.2.4
|
|
||||||
get_file https://ftp.gnu.org/gnu/gzip/gzip-1.2.4.tar --mkbuild=1
|
|
||||||
|
|
||||||
# sed 4.0.9
|
|
||||||
get_file https://ftp.gnu.org/gnu/sed/sed-4.0.9.tar.gz --mkbuild=1
|
|
||||||
|
|
||||||
# patch 2.5.9
|
|
||||||
get_file https://ftp.gnu.org/pub/gnu/patch/patch-2.5.9.tar.gz --mkbuild=1
|
|
||||||
|
|
||||||
# sha-2 61555d
|
|
||||||
get_file https://github.com/amosnier/sha-2/archive/61555d.tar.gz --mkbuild=1 --output=sha-2-61555d.tar.gz
|
|
||||||
|
|
||||||
# make 3.80
|
|
||||||
get_file https://ftp.gnu.org/gnu/make/make-3.80.tar.gz --mkbuild=1
|
|
||||||
|
|
||||||
# bzip2 1.0.8
|
|
||||||
get_file ftp://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz --mkbuild=1
|
|
||||||
|
|
||||||
# coreutils 5.0
|
|
||||||
get_file https://ftp.gnu.org/gnu/coreutils/coreutils-5.0.tar.bz2 --mkbuild=1
|
|
||||||
|
|
||||||
# heirloom-devtools
|
|
||||||
get_file http://downloads.sourceforge.net/project/heirloom/heirloom-devtools/070527/heirloom-devtools-070527.tar.bz2
|
|
||||||
|
|
||||||
# bash 2.05b
|
|
||||||
get_file https://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz
|
|
||||||
|
|
||||||
# flex 2.5.11
|
|
||||||
get_file http://download.nust.na/pub2/openpkg1/sources/DST/flex/flex-2.5.11.tar.gz
|
|
||||||
|
|
||||||
# musl 1.1.24
|
|
||||||
get_file https://musl.libc.org/releases/musl-1.1.24.tar.gz
|
|
||||||
|
|
||||||
# m4 1.4.7
|
|
||||||
get_file https://ftp.gnu.org/gnu/m4/m4-1.4.7.tar.gz
|
|
||||||
|
|
||||||
# flex 2.6.4
|
|
||||||
get_file https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz
|
|
||||||
|
|
||||||
# bison 3.4.1
|
|
||||||
get_file https://ftp.gnu.org/gnu/bison/bison-3.4.1.tar.gz
|
|
||||||
|
|
||||||
# grep 2.4
|
|
||||||
get_file https://ftp.gnu.org/gnu/grep/grep-2.4.tar.gz
|
|
||||||
|
|
||||||
# diffutils 2.7
|
|
||||||
get_file https://ftp.gnu.org/gnu/diffutils/diffutils-2.7.tar.gz
|
|
||||||
|
|
||||||
# coreutils 6.10
|
|
||||||
get_file https://ftp.gnu.org/gnu/coreutils/coreutils-6.10.tar.gz
|
|
||||||
|
|
||||||
# gawk 3.0.4
|
|
||||||
get_file https://ftp.gnu.org/gnu/gawk/gawk-3.0.4.tar.gz
|
|
||||||
|
|
||||||
# perl 5.000
|
|
||||||
get_file https://github.com/Perl/perl5/archive/perl-5.000.tar.gz
|
|
||||||
|
|
||||||
# perl 5.003
|
|
||||||
get_file https://github.com/Perl/perl5/archive/perl-5.003.tar.gz
|
|
||||||
|
|
||||||
# perl 5.004_05
|
|
||||||
get_file https://www.cpan.org/src/5.0/perl5.004_05.tar.gz
|
|
||||||
|
|
||||||
# perl 5.005_03
|
|
||||||
get_file https://www.cpan.org/src/5.0/perl5.005_03.tar.gz
|
|
||||||
|
|
||||||
# perl 5.6.2
|
|
||||||
get_file https://www.cpan.org/src/5.0/perl-5.6.2.tar.gz
|
|
||||||
|
|
||||||
# autoconf 2.52
|
|
||||||
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.52.tar.bz2
|
|
||||||
|
|
||||||
# automake 1.6.3
|
|
||||||
get_file https://ftp.gnu.org/gnu/automake/automake-1.6.3.tar.bz2
|
|
||||||
|
|
||||||
# automake 1.4-p6
|
|
||||||
get_file https://ftp.gnu.org/gnu/automake/automake-1.4-p6.tar.gz
|
|
||||||
|
|
||||||
# autoconf 2.13
|
|
||||||
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.13.tar.gz
|
|
||||||
|
|
||||||
# autoconf 2.12
|
|
||||||
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.12.tar.gz
|
|
||||||
|
|
||||||
# libtool 1.4
|
|
||||||
get_file https://ftp.gnu.org/gnu/libtool/libtool-1.4.tar.gz
|
|
||||||
|
|
||||||
# binutils 2.14
|
|
||||||
get_file https://ftp.gnu.org/gnu/binutils/binutils-2.14.tar.bz2
|
|
||||||
|
|
||||||
# autoconf 2.53
|
|
||||||
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.53.tar.bz2
|
|
||||||
|
|
||||||
# automake 1.7
|
|
||||||
get_file https://ftp.gnu.org/gnu/automake/automake-1.7.tar.bz2
|
|
||||||
|
|
||||||
# autoconf 2.54
|
|
||||||
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.54.tar.bz2
|
|
||||||
|
|
||||||
# autoconf 2.55
|
|
||||||
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.55.tar.bz2
|
|
||||||
|
|
||||||
# automake 1.7.8
|
|
||||||
get_file https://ftp.gnu.org/gnu/automake/automake-1.7.8.tar.bz2
|
|
||||||
|
|
||||||
# autoconf 2.57
|
|
||||||
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.57.tar.bz2
|
|
||||||
|
|
||||||
# autoconf 2.59
|
|
||||||
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.59.tar.bz2
|
|
||||||
|
|
||||||
# automake 1.8.5
|
|
||||||
get_file https://ftp.gnu.org/gnu/automake/automake-1.8.5.tar.bz2
|
|
||||||
|
|
||||||
# help2man 1.36.4
|
|
||||||
get_file https://ftp.gnu.org/gnu/help2man/help2man-1.36.4.tar.gz
|
|
||||||
|
|
||||||
# autoconf 2.61
|
|
||||||
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.61.tar.bz2
|
|
||||||
|
|
||||||
# automake 1.9.6
|
|
||||||
get_file https://ftp.gnu.org/gnu/automake/automake-1.9.6.tar.bz2
|
|
||||||
|
|
||||||
# findutils 4.2.33
|
|
||||||
get_file https://ftp.gnu.org/gnu/findutils/findutils-4.2.33.tar.gz \
|
|
||||||
https://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-8e128e.tar.gz
|
|
||||||
|
|
||||||
# libtool 2.2.4
|
|
||||||
get_file https://ftp.gnu.org/gnu/libtool/libtool-2.2.4.tar.bz2
|
|
||||||
|
|
||||||
# automake 1.10.3
|
|
||||||
get_file https://ftp.gnu.org/gnu/automake/automake-1.10.3.tar.bz2
|
|
||||||
|
|
||||||
# autoconf 2.65
|
|
||||||
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.65.tar.bz2
|
|
||||||
|
|
||||||
# gcc 4.0.4
|
|
||||||
get_file https://ftp.gnu.org/gnu/gcc/gcc-4.0.4/gcc-core-4.0.4.tar.bz2 --output=gcc-4.0.4.tar.bz2
|
|
||||||
|
|
||||||
# musl 1.2.2
|
|
||||||
get_file https://musl.libc.org/releases/musl-1.2.2.tar.gz
|
|
||||||
|
|
||||||
# bash 5.1
|
|
||||||
get_file https://ftp.gnu.org/gnu/bash/bash-5.1.tar.gz
|
|
||||||
|
|
||||||
# xz 5.0.5
|
|
||||||
get_file https://tukaani.org/xz/xz-5.0.5.tar.bz2
|
|
||||||
|
|
||||||
# automake 1.11.2
|
|
||||||
get_file https://ftp.gnu.org/gnu/automake/automake-1.11.2.tar.bz2
|
|
||||||
|
|
||||||
# autoconf 2.69
|
|
||||||
get_file https://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz
|
|
||||||
|
|
||||||
# automake 1.12.6
|
|
||||||
get_file https://ftp.gnu.org/gnu/automake/automake-1.12.6.tar.xz
|
|
||||||
|
|
||||||
# automake 1.13.4
|
|
||||||
get_file https://ftp.gnu.org/gnu/automake/automake-1.13.4.tar.xz
|
|
||||||
|
|
||||||
# automake 1.15.1
|
|
||||||
get_file https://ftp.gnu.org/gnu/automake/automake-1.15.1.tar.xz
|
|
||||||
|
|
||||||
# tar 1.34
|
|
||||||
get_file https://ftp.gnu.org/gnu/tar/tar-1.34.tar.xz \
|
|
||||||
https://git.savannah.gnu.org/cgit/gnulib.git/snapshot/gnulib-30820c.tar.gz
|
|
||||||
|
|
||||||
# gmp 6.2.1
|
|
||||||
get_file https://ftp.gnu.org/gnu/gmp/gmp-6.2.1.tar.xz
|
|
||||||
|
|
||||||
# General cleanup
|
|
||||||
find tmp -name .git -exec rm -rf \;
|
|
||||||
|
|
||||||
# initramfs
|
|
||||||
cd tmp
|
|
||||||
find . | cpio -H newc -o | gzip > initramfs.igz
|
|
||||||
|
|
||||||
# Run
|
|
||||||
case "${QEMU_CMD}" in
|
|
||||||
chroot)
|
|
||||||
sudo PATH="/after/bin:${PATH}" chroot . /init 2>&1 | tee "$LOGFILE"
|
|
||||||
;;
|
|
||||||
minikernel)
|
|
||||||
git clone --depth 1 --branch v0.4 https://github.com/bittorf/kritis-linux.git
|
|
||||||
|
|
||||||
kritis-linux/ci_helper.sh \
|
|
||||||
--arch x86_64 \
|
|
||||||
--ramsize 4G \
|
|
||||||
--kernel 5.10.8 \
|
|
||||||
--initrd initramfs.igz \
|
|
||||||
--log "$LOGFILE"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
${QEMU_CMD} -enable-kvm \
|
|
||||||
-m "${QEMU_RAM:-8G}" \
|
|
||||||
-nographic \
|
|
||||||
-no-reboot \
|
|
||||||
-kernel ../../kernel -initrd initramfs.igz -append console=ttyS0 | tee "$LOGFILE"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
cd ../..
|
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
sudo umount sysa/tmp
|
|
Loading…
Reference in New Issue