From a4dce7f4d920e492d38c32ad3e42efdcfef3b3f1 Mon Sep 17 00:00:00 2001 From: claude Date: Sun, 12 Jul 2026 01:19:32 +0000 Subject: 🌭 plan9-kencc-linux: кросс-Ρ‚ΡƒΠ»Ρ‡Π΅ΠΉΠ½ Plan9 (cc/as/ld) + EFI-Π±ΠΎΠ»Π²Π°Π½ΠΊΠ° MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - build_arch.sh / build_al.sh: сборка kencc-компиляторов, ассСмблСров, Π»ΠΈΠ½ΠΊΠ΅Ρ€ΠΎΠ² всСх Π°Ρ€ΠΎΠΊ (5/6/8/v/q/k) Π½Π° Linux-хостС Ρ‡Π΅Ρ€Π΅Π· plan9port. - ΠΏΠ°Ρ‚Ρ‡ΠΈ ΠΏΠΎΠ΄ musl/gcc: sbrk->mmap, round/log2->p9*, Runemask, swcmp const, -fcommon, machcap/omachcap, /sys Ρ€Π°Π½Ρ‚Π°ΠΉΠΌ-Ρ„Π°ΠΉΠ»Ρ‹. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π² PATCHES.md. - bin/: Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ 8c 6c 5c vc qc kc + 6a 6l (Linux/musl x86_64). - efi/: Π±ΠΎΠ»Π²Π°Π½ΠΎΡ‡Π½Ρ‹ΠΉ bootx64.efi (PE32+) Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ‚ΡƒΠ»Ρ‡Π΅ΠΉΠ½ΠΎΠΌ (6a+6c+6l+dd), рСфСрСнс β€” 9legacy nboot/efi; ESP-ΠΎΠ±Ρ€Π°Π· Ρ‡Π΅Ρ€Π΅Π· mkesp.py. Co-Authored-By: Claude Opus 4.8 --- README.md | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 README.md (limited to 'README.md') diff --git a/README.md b/README.md new file mode 100644 index 0000000..ba80bb4 --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +# plan9-kencc-linux + +ΠšΡ€ΠΎΡΡ-сборка **компиляторов / ассСмблСров / Π»ΠΈΠ½ΠΊΠ΅Ρ€ΠΎΠ² Plan 9 (kencc)** для всСх +Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ **с Linux-хоста**, плюс Π±ΠΎΠ»Π²Π°Π½ΠΎΡ‡Π½ΠΎΠ΅ **UEFI-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅** (PE32+), +собранноС этим ΠΆΠ΅ Ρ‚ΡƒΠ»Ρ‡Π΅ΠΉΠ½ΠΎΠΌ. НичСго юниксового Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ сборки самих `.efi`. + +Π‘ΠΎΠ±Ρ€Π°Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ Π½Π° Linux/musl. Пилилось Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-Π±ΠΎΡ‚ΠΎΠΌ (Claude) ΠΏΠΎ Π·Π°ΠΊΠ°Π·Ρƒ +Ρ‡Π°Ρ‚Π° ancap.in.ua. + +## Π§Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ +``` +bin/ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€ΠΈ: 8c 6c 5c vc qc kc (компиляторы) + 6a 6l +scripts/ + setup.sh ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ plan9foundation + plan9port, собираСт plan9port + build_arch.sh собираСт C-компилятор Π°Ρ€ΠΊΠΈ X (5|6|8|v|q|k) + build_al.sh собираСт ассСмблСр/Π»ΠΈΠ½ΠΊΠ΅Ρ€ + build_all.sh собираСт вСсь кросс-ΠΊΠΈΡ‚ +efi/ + hello.c сам EFI-Π°ΠΏΠΏ (наш ΠΊΠΎΠ΄) + fetch_ref.sh тянСт pe64.s/efi.h/mem.h ΠΈΠ· 9legacy (nboot/efi) + efi_build.sh 6a+6c+6l -> dd -> bootx64.efi (PE32+) + mkesp.py Π·Π°Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ .efi Π² Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ ESP (FAT16) +patches/ ΠΏΠ°Ρ‚Ρ‡ΠΈ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€Π°Π²ΠΊΠ΅ (докумСнтация) +PATCHES.md ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‡ Π½ΡƒΠΆΠ΅Π½ +``` + +## ИдСя +Π€Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-компилятора Plan 9 (`cc/`) + ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π°Ρ€ΠΎΠΊ (`5c`,`6c`,`8c`,`vc`,`qc`,`kc`) +ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π½Π° Plan 9 C ΠΈ рассчитаны Π½Π° Ρ€ΠΎΠ΄Π½ΡƒΡŽ сборку Π² Plan 9. ΠœΡ‹ собираСм ΠΈΡ… Π½Π° Linux, +компилируя **plan9port**-овским `9c`/`9l` (ΠΎΠ½ΠΈ Π΄Π°ΡŽΡ‚ `lib9`/`libbio`/`libmach` ΠΈ +Π΄Ρ€ΡƒΠΆΠ°Ρ‚ с хостовым gcc/musl). Всё, Ρ‡Ρ‚ΠΎ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚, лСчится нСбольшими ΠΏΠ°Ρ‚Ρ‡Π°ΠΌΠΈ (см. `PATCHES.md`). + +| Π°Ρ€ΠΊΠ° | ΠΊΠΎΠΌΠΏ | ассСмблСр | Π»ΠΈΠ½ΠΊΠ΅Ρ€ | +|------|------|-----------|--------| +| 386 | 8c | 8a | 8l | +| amd64 | 6c | 6a | 6l | +| arm | 5c | 5a | 5l | +| mips | vc | va | vl | +| power | qc | qa | ql | +| sparc | kc | ka | kl | + +## Быстрый старт +```sh +# 1. зависимости (plan9foundation + plan9port) +bash scripts/setup.sh +export PLAN9SRC=$PWD/deps/plan9foundation +export PLAN9PORT=$PWD/deps/plan9port +# (ΠΎΠΏΡ†. musl: export MUSL_ENV=/path/to/env.sh) + +# 2. ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всё +bash scripts/build_all.sh # -> build/*/{6c,6a,6l,...} + +# 3. ΠΎΠ΄ΠΈΠ½ компилятор +bash scripts/build_arch.sh 6 # -> build/6c/6c + +# 4. ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ +echo 'int f(void){return 42;}' > t.c +build/6c/6c t.c && ls t.6 # ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΈΠΊ Plan9 .6 +``` + +## EFI-Π±ΠΎΠ»Π²Π°Π½ΠΊΠ° +```sh +cd efi +./fetch_ref.sh # pe64.s/efi.h/mem.h ΠΈΠ· 9legacy +PLAN9SRC=$PWD/../deps/plan9foundation ./efi_build.sh +# -> bootx64.efi : PE32+ x64 EFI_APPLICATION +python3 mkesp.py bootx64.efi esp.img # -> Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ ESP (/EFI/BOOT/BOOTX64.EFI) +# запуск: qemu-system-x86_64 -bios OVMF.fd -drive format=raw,file=esp.img +``` + +## Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€ΠΈ +Π’ `bin/` Π»Π΅ΠΆΠ°Ρ‚ ΡƒΠΆΠ΅ собранныС компиляторы/асм/Π»ΠΈΠ½ΠΊΠ΅Ρ€ (Linux/musl x86_64). +Под свой хост пСрСсобСри скриптами β€” Π±Π°ΠΉΡ‚-Π²-Π±Π°ΠΉΡ‚ воспроизводимо. + +Π›ΠΈΡ†Π΅Π½Π·ΠΈΠΈ ΠΈ авторство исходников β€” см. `NOTICE`. -- cgit v1.2.3