sylware / nyanlinux (public) (License: AFFERO GPLv3) (since 2019-09-09) (hash sha1)
scripts for a lean, from scratch, amd hardware, linux distro

/builders/linux-amd/init.in (79af1544e8e8e9d72c6d3803d345c5d81f65c16d) (2213 bytes) (mode 100755) (type blob)

#!/bin/sh
export PATH=/bin

# follow the default linux cpio:
#dir /dev 0755 0 0
#nod /dev/console 0600 0 0 c 5 1
#dir /root 0700 0 0

mkdir /proc
mount -t proc proc /proc
mkdir /sys
mount -t sysfs sysfs /sys
mkdir /dev
mount -t devtmpfs devtmpfs /dev

printf 'INITRAMFS:ENVIRONMENT -- START\n'
	env
printf 'INITRAMFS:ENVIRONMENT -- END\n'
printf 'INITRAMFS:PARAMETERS -- START\n'
if test -n "$*"; then
	printf "$*\n"
fi
printf 'INITRAMFS:PARAMETERS -- END\n'

initramfs_root_uuid=

if test -z "$initramfs_root_uuid"; then
	printf 'INITRAMFS:ERROR:no root uuid\n'
	exit 1
else
	printf "INITRAMFS_ROOT_UUID=$initramfs_root_uuid\n"
fi

# we serialize the handling of modprobes and uevents

# we start to listen to uevents now, they will be buffered
uevent /uevt.sh &
uevt_sh_pid=$!
printf "INITRAMFS:uevt.sh PID=$uevt_sh_pid\n"
printf '/bin/modprobe' >/proc/sys/kernel/modprobe

# we want /dev/sdX interfaces
modprobe sd_mod
# we choose a crc32c implementation, sse4.2 one
modprobe crc32c_intel

printf 'INITRAMFS:COLDPLUG -- START\n'
# cold plug modules loading
# the disk drivers packaged in the initramfs will be loaded and then, their
# partitions will become known to the kernel
find /sys/devices -name modalias -exec sort -u '{}' + >/modaliases
xargs -n 1 modprobe -q </modaliases
touch /COLDPLUG_DONE
printf 'INITRAMFS:COLDPLUG -- END\n'

printf "INITRAMFS:WAITING FOR $initramfs_root_uuid -- START\n"
while true
do
	if blk=$(findfs UUID=$initramfs_root_uuid); then
		fs_desc=$(blkid $blk)
		for f in $fs_desc
		do
			if test ${f%%=*} = TYPE; then
				fs=${f#*=}
				fs=$(printf "$fs" | tr -d '"')
				break
			fi
		done
		break
	fi
	sleep 0.001
done
printf "INITRAMFS:WAITING FOR $initramfs_root_uuid -- END\n"

modprobe $fs 
printf "INITRAMFS:KILLING uevt.sh PID=$uevt_sh_pid\n"
# the "real init" will start mudev which will load drivers with a full module
# tree
kill $uevt_sh_pid

printf "INITRAMFS:MOUNTING $initramfs_root_uuid as TYPE=$fs\n"
mkdir /newroot
mount -o relatime -t $fs $blk /newroot
printf "INITRAMFS:UMOUNTING /DEV /SYS /PROC, SWITCHING ROOT AND EXEC /bin/init\n"
umount /dev
umount /sys
umount /proc
# _MUST_ use switch_root, must use exec to be PID 1
exec switch_root /newroot /bin/init


Mode Type Size Ref File
100644 blob 5 8eba6c8dd4dcaf6166bd22285ed34625f38a84ff .gitignore
100755 blob 1587 57fa4264b9ee0ae0a6f678f2527a05d3b22dda78 00-bootstrap-build.sh
100755 blob 848 a30f443bf405d56682efe3b4c5d3a19d5f7eb45d 01-re-bootstrap-build.sh
100644 blob 2142 f19c2d6b293244bb11a3f74ee77c10675cadc7d6 INSTALL
100644 blob 30 c9b735fa1332286f4b3f5f81fa10527fd7506b6e LICENSE
040000 tree - 427eec4d856a73b66dc557a301ee130cf835eae5 builders
100644 blob 1773 ef1551089a803bde37e36edc8d61bb819d06f793 conf.bootstrap.sh
100644 blob 479 8cc15efe46965ac7750fe304460f5a2b0aa4201c conf.sh
040000 tree - abe51c4b35f2de094a78c14c4b57de03a4561d22 files
100755 blob 356 8fb8be28ac72f7214b59934b9f74a682665f2d32 pkg-build
100644 blob 22800641 e9e6291054c857401f6835c728f31541dae4311e steam.tar.bz2
100644 blob 173 2047af328b22f9d146585cd9e759edbc18122250 utils.sh
040000 tree - 8e23f551092a35f82b37129dd08c35c4d313c17b x64
040000 tree - b7a22de7f5cbd97650dd45412ef7d4246e395eb8 x86
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/sylware/nyanlinux

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/sylware/nyanlinux

Clone this repository using git:
git clone git://git.rocketgit.com/user/sylware/nyanlinux

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main