IRC channel logs
2026-03-01.log
back to list of logs
<aggi>stikonas: seems the MES-replacement pieces are executed inside a chroot instead of atop the stage0-kernel/loader/kernel from rickmasters <aggi>which, of cause is necessary, for initial testing; and then later to my understanding a native-boot from any bootstrap-seed launches the complete procedure ex-nihilo _without_ a development-host that testing was done with <aggi>could be the transition from testing inside chroot to qemu/native is mostly transparent <aggi>builder-hex0 with it's default Makefile desires QEMU - i see, that's the one i did not yet succeed with backporting to TinyCC/OS <aggi>i think i'll skip the QEMU/NATIVE first, and take the chroot path first <aggi>seeing to the whole compile-time and run-time dependency chain is confirmed to arrive at linux-tcc/busybox/linux-2.4-kernel <aggi>thing is, executing some shell-scripts inside a chroot isn't the challenge here <aggi>but to grasp the whole picture of it inside dozens of READMEs <aggi>one approach to keep things in order mentally, distinguishing build-time and run-time dependencies <aggi>and which circular-dependency any might introduce <aggi>for that matter, this did NOT yet pass run-time testing with TinyCC/OS <aggi>QEMU (userspace) and/or KVM (kernel-side) are problematic, regardless of any cirular dependency with those <aggi>since linux-tcc does shrink the dependency graph by who knows a hundred million lines of code, QEMU cannot yet be used with it <aggi>gladly QEMU is fully optional, and/or it can be spawn on a heavyweight modern *Nix/Windoze host <aggi>another reasoning to keep things in order mentally: to distinguish HOW bootstrapping was accomplished (with builder-hex0,stage0,MES,live-bootstrap) from WHAT is being bootstrapped (the bootstrapping TARGET) <aggi>and restricting the latter to some non-GCC/non-binutils/non-perl/non-python to arrive at a fully capable development host impacts the former <aggi>of cause i won't manage to zip TinyCC/OS onto a 3.5inch Floppy-Disk anymore nowadays <aggi>another thing, i'll try to avoid rootfs.py; for live-bootstrap it's good as it is, but i'm having problems with python itself for other reasons <aggi>interestingly, the TinyCC/OS (which is my development host here already) python.static backport does not yet work anyway with rootfs.py (although it did suffice for gentoo-portage tooling) <aggi>have to see, MES-replacement already does some scripting-magic (for chroot) without any python <aggi>as a rule of thumb, since bootstrappable does rely upon development hosts themselves of cause, it's unavoidable: <aggi>-> such development host does introduce circular dependencies all over the place itself <aggi>-> it's desirable at least to shrink the size of such circular dependency graphs <aggi>-> and here's the proposed rule of thumb: try to avoid any utilities on such a development host when those weren't bootstrapped at the preparational stage when it's used <aggi>which means, if either QEMU or python cannot have been bootstrapped for use, try not to rely upon such <aggi>in this regard TinyCC/OS shipping with linux2/busybox/tcc could provide a decent sanity check for what's desirable as development host utility and what isn't <aggi>that's no criticism of live-bootstrapp, but motivated by limitations implied by tinycc/os used as development host <aggi>another criteria for the choice of development-host utilities involved: standardization (IEEE,POSIX,ANSI/ISO) <aggi>it's no coincidence both Perl/autotools and Python are/were troublemakers, since those aren't covereed by standardization <aggi>of cause, python and perl are a desirable mandatory bootstrapping target, but those should appear as either build-time or run-time dependency as late as possible <aggi>another guidance to keep mental sanity: to distinguish what belongs and/or is unavoidable to integrate with live-bootstrap to arrive at a fully capable development host <aggi>of cause, python/perl/gcc/binutils etc. MUST be bootstrapped, but i tend to think it's better done separated from live-bootstrap <aggi>$ du -cah live-bootstrap-MIRROR # ~1.4GiB <aggi>this doesn't fit onto 3.5inch floppy nor 640MiB sized CDR ISO <aggi>i'm having the same issue with TinyCC/OS, although that was fully sanitized from _all_ c++ dependencies, fully removed gcc/binutils <aggi>this bootable ISO with debugging symbols barely fit into CDR ISO sized medium <aggi>that's one major reason why i've not published the tcc-portage fork, simply because it's too much <aggi>so i'll re-integrate tinycc/os now from a bootstrapping chain as minimal as was reasonable/possible to provide a development host <aggi>"*Currently, there is no way to perform the bootstrap without external preparations! This is a currently unsolved problem.*" <aggi>i appreciate such honesty alot, and might add for mentioned reasons above it is probably not feasible at all to solve this problem <aggi>the TinyCC/OS approach too merely seeks damage control, to shrink circular dependency graphs <aggi>stikonas: has the MES-replacement from Frans been confirmed already? <aggi>i find the differences between and separation of task1.sh and task3.sh a little confusing still <aggi>the latter transfers control flow to the 'configurator', to build tcc-0.9.26 somewhat gentoo style for example, the former does it with a simpler kaem script <aggi>i am not sure yet if at all i would follow along with the configurator in favor of plain kaem scripts instead <aggi>maybe there's a chance even to skip kexec-fiwix/kexec-linux alltogether with a kernel-bootstrap <aggi>since some usable tinycc already is available, although i did roll along with HEAD version of it to compile linux2-tcc kernel with Kbuild.sh <aggi>that already was ported to tinycc/os <aggi>then there's another missing piece finally, to make some root.extfs2 bootable with isolinux/syslinux/lilo/grub or whatever <aggi>i don't know yet, if for example, yasm assembler could be exectued _without_ a fiwix kernel ABI below <aggi>in this context, any kernel involved, had to be considered as build-time and run-time dependency for bootstrapping procedure itself <aggi>don't know how far the mini-kernel from rickmasters in conjunction whichever libc there was suffice for yasm, for example <aggi>otherwise, there is some shell-scripting already to build linux-tcc kernel relatively easy, which can be adapted for kaem <aggi>the busybox-1.2.2.1 build too could be re-factored into kaem style <aggi>ah, i see, steps/grub-2.06 <aggi>i am rolling along with sys-boot/syslinux-3.86 here, which for that matter can easily be compiled/linked/assembled with tinycc 100% <aggi>i see, grub isn't described in parts.rst, that's why i missed that... moment <aggi>with live-bootstrap, steps/grub is built rather later AFTER gcc-15.x... interesting <aggi>while syslinux could be built rather early as soon as tinycc was available (except isohybrid/cdrecord/mkisofs, but i could happily live with some extfs2.roots/syslinux) <aggi>what i have in mind, there is huge potential to simplify live-bootstrap if the TARGET of what is being bootstrapped (not how it's done, that's fine) <aggi>to arrive at linux2/busybox/tcc/yasm/syslinux - that's bootable and while ago such a thing fit onto floppy-disk (nowadays it doesn't) <aggi>i too would speculate, since busybox - historically - enjoyed being linked against uclibc, there could be a chance to get this going with any of the minified libc involved with bootstrapping <aggi>then too, the idea to drop binutils (and to gcc) from the dependency chain pays off, since linux-tcc kernel can be compiled/linked/assembled completely without those <aggi>i could confirm all three: as86, yasm, and gnu-as to process the little pieces of bootsect.S needed, and of cause CC=tcc as it's name says, linux-tcc <aggi>so that's the route taken: [builder0/rickmasters/kernel/loader/native | chroot] -> MES-replacement -> linux-tcc/busybox/as86/yasm/syslinux <aggi>i would consider this good enough as initial develoment host, even when that missed SMP for a moment (depends if yasm can be spawn runtime without fiwix/linux5 abi) <aggi>then, another question would be, of cause musl-libc will be and must be available at some time, if that's needed to get a bootale extfs2.rootfs with linux2-kernel/busybox etc. <aggi>that's been the approach of Aboriginal Linux, to do this as small as possible - without bootstrapping involved at that time <aggi>it seems, tinycc is available _before_ musl, ok. <aggi>maybe i can accomplish the same for linux-tcc,busybox,syslinux,yasm|as86 - don't intend to exaggerate, but this should suffice almost as a bootstrapping target <aggi>for a sufficiently complete development host to get going all else later (outside the scope of bootstrapping) <aggi>tcc 0.9.27 (musl v2) -> "Now that we have a fixed ``musl``, we now recompile ``tcc`` as ``tcc`` uses floats extensively." <aggi>seems tcc is re/compiled 5times with live-bootstrap due to this (two times _before_ musl, and three times after musl) <aggi>i see, and it is the tcc-musl with floats (not sure of all implications this has) which of cause does need some fiwix/linux syscall ABI <aggi>seems tcc is re-compiled more than 5 times even, there's some internal ones inside kaem-scripts not exposed as individual step, have to see <aggi>not sure yet how this differs between GNU mes and MES-replacement <aggi>to avoid another mis-understanding, i consider fiwix a precious kernel option <aggi>but i got a little headache when thinking of the kexec-fiwix and kexec-linux involved with current live-bootstrap <aggi>in conjunction with the musl/tcc issue outlined <aggi>the kexec-fiwix and re-compiling tcc/musl several times may not be avoidable, but i think the kexec-linux can be avoided <aggi>i think the reasoning of live-bootstrap was/is a full GNU toolchain latest greatest version instantly available, without some intermediate bootable linux-floppy.img before