ASELSANMicrokernel
S5 · SOURCE-BOUND GATE EVIDENCE

RPi5 imaj ve boot paketi doğrulandı

Operations komutu/kapı ailesi → gerçek repository yürütme sözleşmesi Bu sayfa yalnız S5 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.

S5Komut / fiziksel sözleşmeOperations id exactsource SHA exact

operation: rpi5-image-package

script/Makefile/config · Operations · 2 exact excerpt

sequence-bound=true · implementation-bound=false
01 · Yürütme sözleşmesi

Gerçek script / Makefile / config kaynağı

tam Make hedefiL724–L894
Makefile::image-rpi5
image-rpi5: verify-rpi5-g8h-image-input verify-rpi5-g7c-host verify-rpi5-g7d-host verify-rpi5-g8-host verify-rpi5-g8b-host verify-rpi5-g8c-host verify-rpi5-g8d-host verify-rpi5-g8e-host verify-rpi5-g8f-host $(RPI5_DTB) $(RPI5_CONFIG)
	@if [ -z "$(OBJCOPY)" ] || [ ! -x "$(OBJCOPY)" ]; then \
		echo "llvm-objcopy bulunamadı. rustup component add llvm-tools-preview"; \
		exit 1; \
	fi
	@if [ -z "$(READOBJ)" ] || [ ! -x "$(READOBJ)" ]; then \
		echo "llvm-readobj bulunamadı. rustup component add llvm-tools-preview"; \
		exit 1; \
	fi
	@if [ -z "$(OBJDUMP)" ] || [ ! -x "$(OBJDUMP)" ]; then \
		echo "llvm-objdump bulunamadı. rustup component add llvm-tools-preview"; \
		exit 1; \
	fi
	@ENTRY=$$($(READOBJ) --file-headers $(RPI5_ELF) | awk '/Entry:/ {print $$2; exit}'); \
		[ "$$ENTRY" = "$(RPI5_ENTRY)" ] || \
		(echo "HATA: RPi5 ELF entry $(RPI5_ENTRY) değil: $$ENTRY"; exit 1)
	@grep -qx 'arm_64bit=1' $(RPI5_CONFIG) || \
		(echo "HATA: RPi5 config arm_64bit=1 sözleşmesini taşımıyor"; exit 1)
	@grep -qx 'kernel_address=$(RPI5_ENTRY)' $(RPI5_CONFIG) || \
		(echo "HATA: RPi5 config kernel_address=$(RPI5_ENTRY) sözleşmesini taşımıyor"; exit 1)
	@sh scripts/verify-rpi5-pre-mmu-atomics.sh "$(OBJDUMP)" "$(RPI5_ELF)"
	@sh scripts/verify-rpi5-g7c-layout.sh "$(READOBJ)" "$(OBJDUMP)" \
		userspace/hello/target/$(TARGET)/release/hello "$(RPI5_ELF)"
	@sh scripts/verify-rpi5-g7d-layout.sh "$(OBJDUMP)" "$(RPI5_ELF)"
	@sh scripts/verify-rpi5-g8-layout.sh "$(READOBJ)" "$(OBJDUMP)" "$(RPI5_ELF)"
	@sh scripts/verify-rpi5-g8b-layout.sh "$(OBJDUMP)" "$(RPI5_ELF)"
	@sh scripts/verify-rpi5-g8c-layout.sh "$(OBJDUMP)" "$(RPI5_ELF)"
	@sh scripts/verify-rpi5-g8d-layout.sh "$(OBJDUMP)" "$(RPI5_ELF)"
	@sh scripts/verify-rpi5-g8e-layout.sh "$(OBJDUMP)" "$(RPI5_ELF)"
	@sh scripts/verify-rpi5-g8f-layout.sh "$(OBJDUMP)" "$(RPI5_ELF)"
	@sh scripts/verify-rpi5-g8g-layout.sh "$(OBJDUMP)" "$(RPI5_ELF)"
	@sh scripts/verify-rpi5-g8h-layout.sh "$(OBJDUMP)" "$(RPI5_ELF)"
	@strings $(RPI5_ELF) | grep -q "ASELSAN/BOOT0 BCM2712" || \
		(echo "HATA: RPi5 board marker ELF içinde yok"; exit 1)
	@for MARKER in \
		"ASELSAN/RAM0" \
		"ASELSAN/RAM1" \
		"ASELSAN/GIC0" \
		"ASELSAN/TIMER0" \
		"ASELSAN/IRQ0 INTID=27" \
		"ASELSAN/BOOT5 GIC+TIMER=OK" \
		"ASELSAN/BOOT6 DT+RAM+HEAP=OK" \
		"ASELSAN/G7S0" \
		"ASELSAN/BOOT7 SCHED=OK" \
		"ASELSAN/G7B0 RANGES=" \
		"ASELSAN/BOOT7B PMM=OK TIMER=OK ALLOC=1 BASE_TICKS=" \
		"ASELSAN/G7C0 CPU=0 MODE=EL0 ROOT=SHARED ASID=0 ELF=TRUSTED PMM_ALLOC=3" \
		"ASELSAN/G7C1 SVC=WRITE ELR=0x" \
		"ASELSAN/G7C2 SVC=EXIT ELR=0x" \
		"ASELSAN/BOOT7C EL0=OK SVC_WRITE=OK SVC_EXIT=OK SWITCH=EL1H TIMER=OK MAPS=OK" \
		"ASELSAN/G7D0 CPU=0 MODE=PREEMPT IRQ=PPI27 TASKS=2" \
		"ASELSAN/G7D1" \
		"ASELSAN/G7D2" \
		"ASELSAN/G7D3" \
		"ASELSAN/G7D4" \
		"ASELSAN/BOOT7D PREEMPT=OK IRQ=PPI27 ORDER=ABABA SWITCHES=4" \
		"ASELSAN/G8S0 CPU=0 DT=PSCI-1.0 CONDUIT=SMC CPUS=4 TARGET=0x" \
		"ASELSAN/G8S1 CPU=1 MPIDR=0x" \
		"ASELSAN/BOOT8 PSCI=OK CPU_ON=OK SECONDARY=CPU1" \
		"ASELSAN/G8B0 CPU=0 TARGET=CPU1 MPIDR=0x" \
		"ASELSAN/G8B1 CPU=1 MPIDR=0x" \
		"ASELSAN/BOOT8B GIC=OK TIMER=OK CPU1_IRQ=1" \
		"ASELSAN/G8C0 CPU=0 TARGET=CPU1 MPIDR=0x" \
		"ASELSAN/G8C1 CPU=1 MPIDR=0x" \
		"ASELSAN/BOOT8C SCHED=LOCAL CPU1_TASK=1" \
		"ASELSAN/G8D0 CPU=0 SOURCE=CPU0 TARGET=CPU1" \
		"ASELSAN/G8D1 CPU=1 MPIDR=0x" \
		"ASELSAN/G8D2 CPU=1 MPIDR=0x" \
		"ASELSAN/BOOT8D IPI=SGI1 CPU0_TO_CPU1=1" \
		"ASELSAN/G8E0 CPU=0 ROUND1=G8D ROUND2=G8E" \
		"ASELSAN/G8E1 ROUND=2 CPU=1 MPIDR=0x" \
		"ASELSAN/G8E2 ROUND=2 CPU=1 MPIDR=0x" \
		"ASELSAN/BOOT8E IPI=SGI1 CPU0_TO_CPU1=2" \
		"ASELSAN/G8F0 CPU=0 PREREQ=BOOT8E SOURCE=CPU0 TARGET=CPU1" \
		"ASELSAN/G8F1 REPORTER=CPU0 CPU=1 MPIDR=0x" \
		"ASELSAN/BOOT8F HANDOFF=POST_BOOT8E SOURCE=CPU0 TARGET=CPU1"; do \
		strings $(RPI5_ELF) | grep -Fq "$$MARKER" || \
			{ echo "HATA: RPi5 proof marker ELF içinde yok: $$MARKER"; exit 1; }; \
	done
	@for MARKER in \
		"ASELSAN/G8G0 " \
		"ASELSAN/G8G1 " \
		"ASELSAN/G8G2 " \
		"ASELSAN/BOOT8G "; do \
		COUNT=$$(LC_ALL=C strings "$(RPI5_ELF)" | grep -Fo -- "$$MARKER" | wc -l | tr -d '[:space:]'); \
		[ "$$COUNT" -eq 1 ] || \
			{ echo "HATA: G8g proof marker ELF exact-once değil: $$MARKER ($$COUNT)"; exit 1; }; \
	done
	@G8G_ERROR_MARKER="ASELSAN/G8GERR CODE="; \
		COUNT=$$(LC_ALL=C strings "$(RPI5_ELF)" | grep -Fo -- "$$G8G_ERROR_MARKER" | wc -l | tr -d '[:space:]'); \
		[ "$$COUNT" -eq 1 ] || \
			{ echo "HATA: G8g hata markerı ELF exact-once değil: $$COUNT"; exit 1; }
	@G8F_FIXTURE=simulation/tests/fixtures/rpi5_g8f_uart_suffix.log; \
		for MARKER in "ASELSAN/G8F0 " "ASELSAN/G8F1 " "ASELSAN/BOOT8F "; do \
			COUNT=$$(grep -Fc "$$MARKER" "$$G8F_FIXTURE" || true); \
			[ "$$COUNT" -eq 1 ] || \
				{ echo "HATA: canonical G8f UART marker exact-once değil: $$MARKER ($$COUNT)"; exit 1; }; \
		done; \
		if grep -Fq "ASELSAN/G8FERR" "$$G8F_FIXTURE"; then \
			echo "HATA: canonical G8f UART success fixture hata markerı içeriyor"; \
			exit 1; \
		fi
	@printf '%s  %s\n' "$(RPI5_G8G_FIXTURE_SHA256)" "$(RPI5_G8G_FIXTURE)" | \
		shasum -a 256 -c - >/dev/null || \
		{ echo "HATA: canonical G8g UART success fixture SHA256 uyuşmuyor"; exit 1; }
	@G8G_FIXTURE="$(RPI5_G8G_FIXTURE)"; \
		BYTES=$$(wc -c < "$$G8G_FIXTURE" | tr -d '[:space:]'); \
		[ "$$BYTES" -eq "$(RPI5_G8G_FIXTURE_BYTES)" ] || \
			{ echo "HATA: G8g UART success fixture byte sayısı exact değil: $$BYTES"; exit 1; }; \
		LINES=$$(wc -l < "$$G8G_FIXTURE" | tr -d '[:space:]'); \
		[ "$$LINES" -eq 4 ] || \
			{ echo "HATA: G8g UART success fixture satır sayısı exact değil: $$LINES"; exit 1; }; \
		for MARKER in "ASELSAN/G8G0 " "ASELSAN/G8G1 " "ASELSAN/G8G2 " "ASELSAN/BOOT8G "; do \
			COUNT=$$(grep -Fo -- "$$MARKER" "$$G8G_FIXTURE" | wc -l | tr -d '[:space:]'); \
			[ "$$COUNT" -eq 1 ] || \
				{ echo "HATA: canonical G8g UART marker exact-once değil: $$MARKER ($$COUNT)"; exit 1; }; \
		done; \
		if grep -Fq "ASELSAN/G8GERR" "$$G8G_FIXTURE"; then \
			echo "HATA: canonical G8g UART success fixture hata markerı içeriyor"; \
			exit 1; \
		fi
	@mkdir -p build/rpi5
	$(OBJCOPY) -O binary $(RPI5_ELF) $(RPI5_IMG)
	@for MARKER in \
		"ASELSAN/G8F0 CPU=0 PREREQ=BOOT8E SOURCE=CPU0 TARGET=CPU1" \
		"ASELSAN/G8F1 REPORTER=CPU0 CPU=1 MPIDR=0x" \
		"ASELSAN/BOOT8F HANDOFF=POST_BOOT8E SOURCE=CPU0 TARGET=CPU1"; do \
		COUNT=$$(strings $(RPI5_IMG) | grep -Fc "$$MARKER" || true); \
		[ "$$COUNT" -eq 1 ] || \
			{ echo "HATA: RPi5 paket marker exact-once değil: $$MARKER ($$COUNT)"; exit 1; }; \
	done
	@for MARKER in \
		"ASELSAN/G8G0 " \
		"ASELSAN/G8G1 " \
		"ASELSAN/G8G2 " \
		"ASELSAN/BOOT8G "; do \
		COUNT=$$(LC_ALL=C strings "$(RPI5_IMG)" | grep -Fo -- "$$MARKER" | wc -l | tr -d '[:space:]'); \
		[ "$$COUNT" -eq 1 ] || \
			{ echo "HATA: G8g proof marker raw image exact-once değil: $$MARKER ($$COUNT)"; exit 1; }; \
	done
	@G8G_ERROR_MARKER="ASELSAN/G8GERR CODE="; \
		COUNT=$$(LC_ALL=C strings "$(RPI5_IMG)" | grep -Fo -- "$$G8G_ERROR_MARKER" | wc -l | tr -d '[:space:]'); \
		[ "$$COUNT" -eq 1 ] || \
			{ echo "HATA: G8g hata markerı raw image exact-once değil: $$COUNT"; exit 1; }
	cp $(RPI5_DTB) $(RPI5_PACKAGE_DTB)
	cp $(RPI5_CONFIG) $(RPI5_PACKAGE_CONFIG)
	@cd build/rpi5 && shasum -a 256 \
		aselsanos-rpi5.img bcm2712-rpi-5-b.dtb config.txt > SHA256SUMS
	@cd build/rpi5 && \
		LINES=$$(wc -l < SHA256SUMS | tr -d '[:space:]'); \
		[ "$$LINES" -eq 3 ] || \
			{ echo "HATA: RPi5 SHA256SUMS exact üç kayıt taşımıyor: $$LINES"; exit 1; }; \
		for FILE in aselsanos-rpi5.img bcm2712-rpi-5-b.dtb config.txt; do \
			COUNT=$$(awk -v file="$$FILE" '$$2 == file { count++ } END { print count + 0 }' SHA256SUMS); \
			[ "$$COUNT" -eq 1 ] || \
				{ echo "HATA: RPi5 SHA256SUMS kaydı exact-once değil: $$FILE ($$COUNT)"; exit 1; }; \
		done; \
		awk 'NF != 2 || length($$1) != 64 || $$1 !~ /^[0-9a-f]+$$/ || \
			$$2 !~ /^(aselsanos-rpi5[.]img|bcm2712-rpi-5-b[.]dtb|config[.]txt)$$/ { bad = 1 } \
			END { exit bad }' SHA256SUMS || \
			{ echo "HATA: RPi5 SHA256SUMS beklenmeyen veya bozuk kayıt içeriyor"; exit 1; }
	@cd build/rpi5 && shasum -a 256 -c SHA256SUMS
	@echo ""
	@echo "✅ RPi5 imajı: $(RPI5_IMG)"
	@echo "   SHA256: $$(cat $(RPI5_SUMS))"
	@ls -lh $(RPI5_IMG) $(RPI5_PACKAGE_DTB) $(RPI5_PACKAGE_CONFIG) $(RPI5_SUMS)
	@echo ""
	@echo "Kart için: make flash-rpi5"

# Screen bring-up is intentionally a separate target.  It never runs the
# historical G8h layout gate and never overwrites build/rpi5 (S575/S570).
snippet sha256: 6487dc5fd5fffile sha256: a8d6a7830268
02 · Kapı kimlik kaydı

Operations sıra, kimlik ve başlık bağı

tam Operations kaydıL35195–L35219
website/src/lib/operations.ts::rpi5-image-package
  {
    id: "rpi5-image-package",
    date: "2026-08-19",
    sequence: 5,
    status: "verified",
    title: "RPi5 imaj ve boot paketi doğrulandı",
    summary:
      "BCM2712 hedefi için raw kernel imajı üretildi; yükleme adresi, giriş talimatı, DTB, config ve SHA-256 zinciri statik olarak denetlendi.",
    evidence: [
      "make image-rpi5 exit 0 verdi ve 90.368 baytlık aselsanos-rpi5.img üretti.",
      "Bu ilk tarihsel artefact'ta ELF yükleme ve giriş adresi 0x0020_0000 idi; _start ilk talimatı DTB işaretçisini koruyan mov x19, x0. Sonraki fiziksel log final 0x80000 adresini kanıtladı ve sözleşme düzeltildi.",
      "Güncel imaj SHA-256 değeri 8acacb283f917b0a7d8e9b7b9c96068a05264faff0df89fd5dd8eec9147787bf ve manifest kontrolü eşleşti.",
      "78.703 baytlık bcm2712-rpi-5-b.dtb geçerli sürüm 17 DTB olarak açıldı; SHA-256 değeri 40a2fbe9c29e8b9a4912cf726a943068defb779fc052ec38e457a79c58abca00.",
      "301 baytlık config.txt özel kernel adı ve uart_2ndstage=1 sözleşmesini taşıyor; SHA-256 değeri 89a270eb1429ecbc01dc010b3eca79ea77a92fd915e9098223de6689f1249a06.",
    ],
    commands: [
      "make image-rpi5",
      "readelf / objdump",
      "dtc / sha256 doğrulaması",
    ],
    limitations: [
      "microSD fiziksel olarak formatlanmadı veya yazılmadı; yıkıcı hedefler yalnızca make -n ve sahte aygıtla incelendi.",
      "Gerçek Raspberry Pi 5 boot ve UART10 çıktısı henüz donanım üzerinde test edilmedi.",
    ],
  },
snippet sha256: 39e2cf09683bfile sha256: 9726dbf00f84
Kayıtlı yürütme/kanıt komutu
make image-rpi5
Registry schema v5 · generator website/scripts/generate-code-gates.mjs · Tam SHA-256: 3050638b71a684d8f8f947a8a6faa237a17fa8db5dc0db04fb207b668b462af9