The Forgetful CPU (Linux on M4)
🇬🇧 English
This blog post details the author's journey booting Linux on an M4 Mac mini, thanking the Asahi Linux team and encouraging donations. In November 2024, the author bought an M4 Mac mini, hoping it would be similar to earlier Apple Silicon models. However, the M4 is the first generation to mandate SPT M (Secure Page Table Monitor), hardening against XNU kernel vulnerabilities, requiring major changes to the m1n1 hypervisor.
Despite challenges, the author attempted to boot Linux by disabling strict boot security and installing m1n1 via macOS recovery. Initial crashes were traced to disabled/locked GXF functionality and the RVBAR (Reset Vector Base Address Register), which already contained the correct value, so writes were skipped. After a long pause, motivation returned at the Chaos Communication Congress in late 2025.
The author created a minimal device tree and loaded the Linux kernel with earlycon, but saw no output after "Vectoring to next stage." Using a brute-force assembly routine printing 'a', they bisected the boot code to MMU initialization. The issue was that once the MMU is enabled, memory accesses go to virtual addresses, but Linux doesn't map the UART's MMIO space like m1n1 does, so the UART became inaccessible.
🇸🇦 العربية
وحدة المعالجة المركزية النسيان: لينكس على M4 Mac mini
تشرح هذه المقالة بالتفصيل رحلة المؤلف في تشغيل لينكس لأول مرة على M4 Mac mini، مع الشكر لفريق Asahi Linux والتشجيع على التبرعات. في نوفمبر 2024، اشترى المؤلف جهاز M4 Mac mini، على أمل أن يكون مشابهًا لنماذج Apple Silicon السابقة. ومع ذلك، فإن M4 هو الجيل الأول الذي يفرض SPT M (مراقب جدول الصفحات الآمن)، الذي يوفر حماية ضد ثغرات نواة XNU، مما يتطلب تغييرات كبيرة في برنامج المراقبة m1n1.
على الرغم من التحديات، حاول المؤلف تشغيل لينكس عن طريق تعطيل أمان الإقلاع الصارم وتثبيت m1n1 عبر استرداد macOS. تم تتبع الأعطال الأولية إلى وظيفة GXF المعطلة/المقفلة وRVBAR (سجل عنوان قاعدة متجه إعادة التعيين)، الذي كان يحتوي بالفعل على القيمة الصحيحة، لذلك تم تخطي الكتابة. بعد توقف طويل، عاد الدافع في مؤتمر Chaos Communication Congress في أواخر 2025.
أنشأ المؤلف شجرة أجهزة بسيطة وقام بتحميل نواة لينكس باستخدام معلمة earlycon، لكنه لم ير أي إخراج بعد "Vectoring to next stage". باستخدام روتين تجميع القوة الغاشمة الذي يطبع 'a'، قاموا بتقسيم كود الإقلاع إلى تهيئة MMU. كانت المشكلة أنه بمجرد تمكين MMU، تذهب عمليات الوصول إلى الذاكرة إلى عناوين افتراضية، لكن لينكس لا يقوم بتعيين مساحة MMIO الخاصة بـ UART كما يفعل m1n1، لذلك أصبح UART غير قابل للوصول.
لماذا تسبب M4 Mac mini في مشاكل إقلاع لنظام لينكس؟
يفرض M4 SPT M (مراقب جدول الصفحات الآمن)، مما يتطلب تغييرات كبيرة في m1n1. بالإضافة إلى ذلك، كانت ميزات مثل GXF معطلة/مقفلة، وكان RVBAR يحتوي بالفعل على القيمة الصحيحة، لذلك تسببت الكتابة في أعطال.
🇧🇩 বাংলা
ভুলে যাওয়া CPU: M4 Mac mini-তে Linux
এই ব্লগ পোস্টটি M4 Mac mini-তে প্রথমবার Linux বুট করার লেখকের যাত্রার বিস্তারিত বিবরণ দেয়, Asahi Linux টিমকে ধন্যবাদ জানায় এবং দান করতে উৎসাহিত করে। 2024 সালের নভেম্বরে, লেখক একটি M4 Mac mini কিনেছিলেন, আশা করে যে এটি আগের Apple Silicon মডেলগুলির মতো হবে। তবে, M4 হল প্রথম প্রজন্ম যা SPT M (সিকিউর পেজ টেবিল মনিটর) বাধ্যতামূলক করে, যা XNU কার্নেল দুর্বলতার বিরুদ্ধে সুরক্ষা প্রদান করে, যার জন্য m1n1 হাইপারভাইজারে বড় পরিবর্তন প্রয়োজন।
চ্যালেঞ্জ সত্ত্বেও, লেখক কঠোর বুট নিরাপত্তা নিষ্ক্রিয় করে এবং macOS রিকভারির মাধ্যমে m1n1 ইনস্টল করে Linux বুট করার চেষ্টা করেছিলেন। প্রাথমিক ক্র্যাশগুলি নিষ্ক্রিয়/লক করা GXF কার্যকারিতা এবং RVBAR (রিসেট ভেক্টর বেস অ্যাড্রেস রেজিস্টার) এ ট্রেস করা হয়েছিল, যা ইতিমধ্যে সঠিক মান ধারণ করেছিল, তাই লেখা এড়িয়ে যাওয়া হয়েছিল। দীর্ঘ বিরতির পর, 2025 সালের শেষের দিকে Chaos Communication Congress-এ প্রেরণা ফিরে আসে।
লেখক একটি ন্যূনতম ডিভাইস ট্রি তৈরি করেছিলেন এবং earlycon প্যারামিটার দিয়ে Linux কার্নেল লোড করেছিলেন, কিন্তু "Vectoring to next stage"-এর পরে কোনো আউটপুট দেখতে পাননি। 'a' প্রিন্ট করা একটি ব্রুট-ফোর্স অ্যাসেম্বলি রুটিন ব্যবহার করে, তারা বুট কোডটি MMU ইনিশিয়ালাইজেশন পর্যন্ত বিভক্ত করেছিলেন। সমস্যাটি ছিল যে একবার MMU সক্রিয় হলে, মেমরি অ্যাক্সেস ভার্চুয়াল ঠিকানায় যায়, কিন্তু Linux m1n1-এর মতো UART-এর MMIO স্পেস ম্যাপ করে না, তাই UART অ্যাক্সেসযোগ্য হয়ে ওঠে।
কেন M4 Mac mini Linux-এর জন্য বুট সমস্যা সৃষ্টি করেছিল?
M4 SPT M (সিকিউর পেজ টেবিল মনিটর) বাধ্যতামূলক করে, যার জন্য m1n1-এ বড় পরিবর্তন প্রয়োজন। অতিরিক্তভাবে, GXF-এর মতো বৈশিষ্ট্যগুলি নিষ্ক্রিয়/লক ছিল, এবং RVBAR ইতিমধ্যে সঠিক মান ধারণ করেছিল, তাই লেখা ক্র্যাশের কারণ হয়েছিল।
🇩🇪 Deutsch
Vergessliche CPU: Linux auf M4 Mac mini
Dieser Blogbeitrag beschreibt detailliert die Reise des Autors beim ersten Booten von Linux auf einem M4 Mac mini, dankt dem Asahi Linux-Team und ermutigt zu Spenden. Im November 2024 kaufte der Autor einen M4 Mac mini, in der Hoffnung, dass er den früheren Apple Silicon-Modellen ähnlich sein würde. Allerdings ist der M4 die erste Generation, die SPT M (Secure Page Table Monitor) vorschreibt, was die Härtung gegen Schwachstellen des XNU-Kernels bietet und große Änderungen am m1n1-Hypervisor erfordert.
Trotz der Herausforderungen versuchte der Autor, Linux zu booten, indem er die strenge Boot-Sicherheit deaktivierte und m1n1 über die macOS-Wiederherstellung installierte. Erste Abstürze wurden auf deaktivierte/gesperrte GXF-Funktionalität und das RVBAR (Reset Vector Base Address Register) zurückgeführt, das bereits den korrekten Wert enthielt, sodass Schreibvorgänge übersprungen wurden. Nach einer langen Pause kehrte die Motivation auf dem Chaos Communication Congress Ende 2025 zurück.
Der Autor erstellte einen minimalen Gerätebaum und lud den Linux-Kernel mit earlycon, sah aber nach "Vectoring to next stage" keine Ausgabe. Mit einer Brute-Force-Assembly-Routine, die 'a' druckte, bisektierten sie den Boot-Code bis zur MMU-Initialisierung. Das Problem war, dass nach Aktivierung der MMU Speicherzugriffe auf virtuelle Adressen gehen, Linux aber den MMIO-Raum der UART nicht wie m1n1 abbildet, sodass die UART unzugänglich wurde.
Warum verursachte der M4 Mac mini Boot-Probleme für Linux?
Der M4 schreibt SPT M (Secure Page Table Monitor) vor, was große Änderungen an m1n1 erfordert. Zusätzlich waren Funktionen wie GXF deaktiviert/gesperrt, und das RVBAR enthielt bereits den korrekten Wert, sodass Schreibvorgänge Abstürze verursachten.
🇪🇸 Español
CPU olvidadizo: Linux en M4 Mac mini
Esta publicación de blog detalla el viaje del autor al iniciar Linux por primera vez en un M4 Mac mini, agradeciendo al equipo de Asahi Linux y alentando donaciones. En noviembre de 2024, el autor compró un M4 Mac mini, esperando que fuera similar a los modelos anteriores de Apple Silicon. Sin embargo, el M4 es la primera generación que exige SPT M (Monitor de Tabla de Páginas Segura), que proporciona protección contra vulnerabilidades del kernel XNU, requiriendo cambios importantes en el hipervisor m1n1.
A pesar de los desafíos, el autor intentó iniciar Linux deshabilitando la seguridad de arranque estricta e instalando m1n1 a través de la recuperación de macOS. Los bloqueos iniciales se rastrearon hasta la funcionalidad GXF deshabilitada/bloqueada y el RVBAR (Registro de Dirección Base del Vector de Reinicio), que ya contenía el valor correcto, por lo que se omitieron las escrituras. Después de una larga pausa, la motivación regresó en el Chaos Communication Congress a finales de 2025.
El autor creó un árbol de dispositivos mínimo y cargó el kernel de Linux con earlycon, pero no vio ninguna salida después de "Vectoring to next stage". Usando una rutina de ensamblaje de fuerza bruta que imprimía 'a', bisecaron el código de arranque hasta la inicialización de la MMU. El problema era que una vez que la MMU está habilitada, los accesos a la memoria van a direcciones virtuales, pero Linux no mapea el espacio MMIO de la UART como lo hace m1n1, por lo que la UART se volvió inaccesible.
¿Por qué el M4 Mac mini causó problemas de arranque para Linux?
El M4 exige SPT M (Monitor de Tabla de Páginas Segura), lo que requiere cambios importantes en m1n1. Además, funciones como GXF estaban deshabilitadas/bloqueadas, y el RVBAR ya tenía el valor correcto, por lo que las escrituras causaban bloqueos.
🇫🇷 Français
CPU oublieux : Linux sur M4 Mac mini
Cet article de blog détaille le parcours de l'auteur pour démarrer Linux sur un M4 Mac mini, remerciant l'équipe Asahi Linux et encourageant les dons. En novembre 2024, l'auteur a acheté un M4 Mac mini, espérant qu'il serait similaire aux modèles Apple Silicon précédents. Cependant, le M4 est la première génération à imposer SPT M (Secure Page Table Monitor), qui renforce la protection contre les vulnérabilités du noyau XNU, nécessitant des changements majeurs dans l'hyperviseur m1n1.
Malgré les défis, l'auteur a tenté de démarrer Linux en désactivant la sécurité de démarrage stricte et en installant m1n1 via la récupération macOS. Les plantages initiaux ont été attribués à la fonctionnalité GXF désactivée/verrouillée et au RVBAR (Reset Vector Base Address Register), qui contenait déjà la valeur correcte, donc les écritures ont été ignorées. Après une longue pause, la motivation est revenue au Chaos Communication Congress fin 2025.
L'auteur a créé un arbre de périphériques minimal et chargé le noyau Linux avec earlycon, mais n'a vu aucune sortie après "Vectoring to next stage". En utilisant une routine d'assemblage de force brute imprimant 'a', ils ont bissecté le code de démarrage jusqu'à l'initialisation de la MMU. Le problème était qu'une fois la MMU activée, les accès mémoire vont vers des adresses virtuelles, mais Linux ne mappe pas l'espace MMIO de l'UART comme le fait m1n1, rendant l'UART inaccessible.
Pourquoi le M4 Mac mini a-t-il causé des problèmes de démarrage pour Linux ?
Le M4 impose SPT M (Secure Page Table Monitor), nécessitant des changements majeurs dans m1n1. De plus, des fonctionnalités comme GXF étaient désactivées/verrouillées, et le RVBAR contenait déjà la valeur correcte, donc les écritures causaient des plantages.
🇮🇳 हिन्दी
भुलक्कड़ CPU: M4 Mac mini पर Linux
यह ब्लॉग पोस्ट M4 Mac mini पर Linux बूट करने की लेखक की यात्रा का विवरण देता है, Asahi Linux टीम को धन्यवाद देता है और दान को प्रोत्साहित करता है। नवंबर 2024 में, लेखक ने एक M4 Mac mini खरीदा, उम्मीद करते हुए कि यह पहले के Apple Silicon मॉडल के समान होगा। हालांकि, M4 पहली पीढ़ी है जो SPT M (सिक्योर पेज टेबल मॉनिटर) को अनिवार्य करती है, जो XNU कर्नेल कमजोरियों के खिलाफ सुरक्षा प्रदान करती है, जिसके लिए m1n1 हाइपरवाइजर में बड़े बदलावों की आवश्यकता होती है।
चुनौतियों के बावजूद, लेखक ने सख्त बूट सुरक्षा को अक्षम करके और macOS रिकवरी के माध्यम से m1n1 स्थापित करके Linux बूट करने का प्रयास किया। प्रारंभिक क्रैश को अक्षम/लॉक GXF कार्यक्षमता और RVBAR (रीसेट वेक्टर बेस एड्रेस रजिस्टर) में ट्रैक किया गया, जिसमें पहले से ही सही मान था, इसलिए लेखन को छोड़ दिया गया। लंबे विराम के बाद, 2025 के अंत में Chaos Communication Congress में प्रेरणा वापस आई।
लेखक ने एक न्यूनतम डिवाइस ट्री बनाया और earlycon पैरामीटर के साथ Linux कर्नेल लोड किया, लेकिन "Vectoring to next stage" के बाद कोई आउटपुट नहीं देखा। 'a' प्रिंट करने वाली ब्रूट-फोर्स असेंबली रूटीन का उपयोग करके, उन्होंने बूट कोड को MMU इनिशियलाइज़ेशन तक बाइसेक्ट किया। समस्या यह थी कि एक बार MMU सक्षम होने के बाद, मेमोरी एक्सेस वर्चुअल एड्रेस पर जाती है, लेकिन Linux m1n1 की तरह UART के MMIO स्पेस को मैप नहीं करता है, इसलिए UART दुर्गम हो गया।
M4 Mac mini ने Linux के लिए बूट समस्याएं क्यों पैदा कीं?
M4 SPT M (सिक्योर पेज टेबल मॉनिटर) को अनिवार्य करता है, जिसके लिए m1n1 में बड़े बदलावों की आवश्यकता होती है। इसके अतिरिक्त, GXF जैसी सुविधाएं अक्षम/लॉक थीं, और RVBAR में पहले से ही सही मान था, इसलिए लेखन से क्रैश हो गया।
🇮🇩 Bahasa Indonesia
CPU Pelupa: Linux di M4 Mac mini
Posting blog ini merinci perjalanan penulis melakukan booting Linux pertama kali di M4 Mac mini, berterima kasih kepada tim Asahi Linux dan mendorong donasi. Pada November 2024, penulis membeli M4 Mac mini, berharap itu akan mirip dengan model Apple Silicon sebelumnya. Namun, M4 adalah generasi pertama yang mewajibkan SPT M (Secure Page Table Monitor), yang memberikan penguatan terhadap kerentanan kernel XNU, memerlukan perubahan besar pada hypervisor m1n1.
Meskipun ada tantangan, penulis mencoba melakukan booting Linux dengan menonaktifkan keamanan boot ketat dan menginstal m1n1 melalui pemulihan macOS. Kerusakan awal dilacak ke fungsionalitas GXF yang dinonaktifkan/dikunci dan RVBAR (Reset Vector Base Address Register), yang sudah berisi nilai yang benar, sehingga penulisan dilewati. Setelah jeda panjang, motivasi kembali di Chaos Communication Congress pada akhir 2025.
Penulis membuat pohon perangkat minimal dan memuat kernel Linux dengan earlycon, tetapi tidak melihat output setelah "Vectoring to next stage". Menggunakan rutin assembly brute-force yang mencetak 'a', mereka membagi dua kode boot hingga inisialisasi MMU. Masalahnya adalah setelah MMU diaktifkan, akses memori pergi ke alamat virtual, tetapi Linux tidak memetakan ruang MMIO UART seperti yang dilakukan m1n1, sehingga UART menjadi tidak dapat diakses.
Mengapa M4 Mac mini menyebabkan masalah boot untuk Linux?
M4 mewajibkan SPT M (Secure Page Table Monitor), memerlukan perubahan besar pada m1n1. Selain itu, fitur seperti GXF dinonaktifkan/dikunci, dan RVBAR sudah berisi nilai yang benar, sehingga penulisan menyebabkan kerusakan.
🇯🇵 日本語
忘れっぽいCPU:M4 Mac miniでLinuxを起動
このブログ記事は、M4 Mac miniで初めてLinuxを起動する著者の旅を詳述し、Asahi Linuxチームに感謝し、寄付を奨励しています。2024年11月、著者はM4 Mac miniを購入し、以前のApple Siliconモデルと同様であることを期待しました。しかし、M4はSPT M(セキュアページテーブルモニター)を必須とする最初の世代であり、XNUカーネルの脆弱性に対する保護を強化し、m1n1ハイパーバイザーに大きな変更を必要とします。
課題にもかかわらず、著者は厳格な起動セキュリティを無効にし、macOSリカバリを介してm1n1をインストールしてLinuxを起動しようとしました。初期のクラッシュは、無効/ロックされたGXF機能とRVBAR(リセットベクタベースアドレスレジスタ)に追跡され、すでに正しい値が含まれていたため、書き込みはスキップされました。長い休止の後、2025年末のChaos Communication Congressでモチベーションが戻りました。
著者は最小限のデバイスツリーを作成し、earlyconパラメータでLinuxカーネルをロードしましたが、「Vectoring to next stage」の後に出力は見られませんでした。'a'を出力するブルートフォースアセンブリルーチンを使用して、ブートコードをMMU初期化まで二分しました。問題は、MMUが有効になるとメモリアクセスが仮想アドレスに移動するが、Linuxはm1n1のようにUARTのMMIOスペースをマッピングしないため、UARTがアクセスできなくなったことでした。
M4 Mac miniがLinuxの起動問題を引き起こした理由は?
M4はSPT M(セキュアページテーブルモニター)を必須とし、m1n1に大きな変更が必要です。さらに、GXFなどの機能は無効/ロックされており、RVBARはすでに正しい値を持っていたため、書き込みがクラッシュを引き起こしました。
🇧🇷 Português
CPU esquecido: Linux no M4 Mac mini
Esta postagem de blog detalha a jornada do autor ao inicializar Linux pela primeira vez em um M4 Mac mini, agradecendo à equipe Asahi Linux e incentivando doações. Em novembro de 2024, o autor comprou um M4 Mac mini, esperando que fosse semelhante aos modelos anteriores de Apple Silicon. No entanto, o M4 é a primeira geração a exigir SPT M (Monitor de Tabela de Páginas Segura), que fornece proteção contra vulnerabilidades do kernel XNU, exigindo grandes mudanças no hipervisor m1n1.
Apesar dos desafios, o autor tentou inicializar o Linux desabilitando a segurança de inicialização estrita e instalando o m1n1 via recuperação do macOS. As falhas iniciais foram rastreadas até a funcionalidade GXF desabilitada/bloqueada e o RVBAR (Registro de Endereço Base do Vetor de Reinicialização), que já continha o valor correto, então as gravações foram ignoradas. Após uma longa pausa, a motivação retornou no Chaos Communication Congress no final de 2025.
O autor criou uma árvore de dispositivos mínima e carregou o kernel Linux com earlycon, mas não viu nenhuma saída após "Vectoring to next stage". Usando uma rotina de montagem de força bruta imprimindo 'a', eles bissecaram o código de inicialização até a inicialização da MMU. O problema era que, uma vez que a MMU está habilitada, os acessos à memória vão para endereços virtuais, mas o Linux não mapeia o espaço MMIO da UART como o m1n1 faz, então a UART se tornou inacessível.
Por que o M4 Mac mini causou problemas de inicialização para o Linux?
O M4 exige SPT M (Monitor de Tabela de Páginas Segura), exigindo grandes mudanças no m1n1. Além disso, recursos como GXF estavam desabilitados/bloqueados, e o RVBAR já tinha o valor correto, então as gravações causavam falhas.
🇷🇺 Русский
Забывчивый CPU: Linux на M4 Mac mini
В этой статье блога подробно описывается путь автора по первой загрузке Linux на M4 Mac mini, с благодарностью команде Asahi Linux и призывом к пожертвованиям. В ноябре 2024 года автор купил M4 Mac mini, надеясь, что он будет похож на более ранние модели Apple Silicon. Однако M4 является первым поколением, которое требует SPT M (Secure Page Table Monitor), обеспечивающего защиту от уязвимостей ядра XNU, что требует серьезных изменений в гипервизоре m1n1.
Несмотря на трудности, автор попытался загрузить Linux, отключив строгую безопасность загрузки и установив m1n1 через восстановление macOS. Первоначальные сбои были связаны с отключенной/заблокированной функциональностью GXF и RVBAR (регистр базового адреса вектора сброса), который уже содержал правильное значение, поэтому записи были пропущены. После долгого перерыва мотивация вернулась на Chaos Communication Congress в конце 2025 года.
Автор создал минимальное дерево устройств и загрузил ядро Linux с параметром earlycon, но не увидел никакого вывода после "Vectoring to next stage". Используя грубую ассемблерную процедуру, печатающую 'a', они бисектировали код загрузки до инициализации MMU. Проблема заключалась в том, что после включения MMU доступ к памяти идет по виртуальным адресам, но Linux не отображает пространство MMIO UART, как это делает m1n1, поэтому UART стал недоступен.
Почему M4 Mac mini вызвал проблемы с загрузкой Linux?
M4 требует SPT M (Secure Page Table Monitor), что требует серьезных изменений в m1n1. Кроме того, такие функции, как GXF, были отключены/заблокированы, а RVBAR уже содержал правильное значение, поэтому записи вызывали сбои.
🇨🇳 简体中文
健忘的CPU:在M4 Mac mini上运行Linux
这篇博客文章详细介绍了作者在M4 Mac mini上首次启动Linux的历程,感谢Asahi Linux团队并鼓励捐款。2024年11月,作者购买了一台M4 Mac mini,希望它能与早期的Apple Silicon型号相似。然而,M4是第一个强制要求SPT M(安全页表监视器)的世代,用于加强对XNU内核漏洞的防护,这需要对m1n1虚拟机监控程序进行重大更改。
尽管面临挑战,作者通过禁用严格启动安全并通过macOS恢复安装m1n1来尝试启动Linux。最初的崩溃被追溯到禁用/锁定的GXF功能和RVBAR(复位向量基地址寄存器),该寄存器已包含正确的值,因此跳过了写入。经过长时间的停顿,在2025年底的混沌通信大会上,作者重新找到了动力。
作者创建了一个最小的设备树,并使用earlycon参数加载了Linux内核,但在“Vectoring to next stage”之后没有看到任何输出。通过使用打印'a'的暴力汇编例程,他们将启动代码二分到MMU初始化。问题在于,一旦MMU启用,内存访问将转到虚拟地址,但Linux不像m1n1那样映射UART的MMIO空间,因此UART变得不可访问。
为什么M4 Mac mini会导致Linux启动问题?
M4强制要求SPT M(安全页表监视器),需要对m1n1进行重大更改。此外,像GXF这样的功能被禁用/锁定,并且RVBAR已经包含正确的值,因此写入会导致崩溃。