بعد أشهر من الانتظار الشديد لأشهر الانتظار ، تلقيت مؤخرًا برنامج
HiFive Unleashed ، وهو رائع بشكل لا يصدق. بالنسبة لأولئك الذين ليسوا محدّثين ، يعد HiFive Unleashed أول لوحة فردية
RISC-V بدعم Linux ، موجهة نحو المستهلك. إذا لم يتم فهمه بعد ، فإن RISC-V عبارة عن
بنية مجموعة تعليمات مفتوحة ومجانية ، و HiFive هو معالج مفتوح يقوم بتنفيذها. وهنا هو على طاولة طعامي:
المجلس
رائع حقا. سأحاول في الأشهر القادمة تحضير كل ما هو ضروري لبناء خدمة التكامل المستمر ، والذي من خلاله سيتم أتمتة ما تبقى من منفذ Alpine Linux ، وكذلك تثبيت أي أنظمة تشغيل أخرى (بما في ذلك أنظمة غير Linux) وبرامج المستخدم التي تريدها ميناء إلى RISC-V. أنا متأكد من أن هذا سيكون أول مشروع من نوعه على معدات RISC-V ، مفتوح للجمهور.
هناك مرحلتان من ترقية نظام التشغيل إلى الهيكل الجديد: bootstrap (bootstrapping) و ... في الواقع porting. لعدم وجود مصطلح أفضل. إلى bootstrap ، نحتاج إلى برنامج تجميع متقاطع ، نحتاج إلى نقل libc وتجميع العناصر الأساسية. ينتهي
Bootstrap عندما يكون النظام قادرًا
على الاستضافة الذاتية ، أي أنه يمكنه تجميع نفسه. تتضمن عملية "النقل" تجميع جميع الحزم المتوفرة لنظام التشغيل الخاص بك. يمكن أن تستغرق هذه العملية وقتًا طويلاً وآلية بشكل عام.
الخطوة الأولى هي برنامج التحويل البرمجي المتقاطع. ظهر دعم RISC-V في binutils 2.28 و gcc 7.1 منذ عدة إصدارات ، لا يمكنك القلق بشأن ذلك. يكفي جمع كل من المترجمين باستخدام المعلمة -
--target=riscv64-linux-musl
. جزء مهم آخر هو مكتبة C القياسية أو libc. بخلاف برنامج التحويل البرمجي C ، تطلبت هذه الخطوة بعض الجهود من جانبي ، لأن Alpine Linux يعتمد على musl libc ، ولم يكتمل منفذه لـ RISC-V بعد ولم يتم تضمينه في الفرع الرئيسي.
ولكن هناك
تصحيح لدعم RISC-V ، على الرغم من أنه لم يتم اختباره على هذا النطاق. بناءً على ذلك ، صادفت العديد من الأخطاء التي كتبت لها عدة تصحيحات (
1 ،
2 ،
3 ). يعد وجود توزيع يعمل استنادًا إلى منفذ RISC-V حجة مقنعة لنضج الإصدار المنقول ، لذلك أنا سعيد لأنني اكتشفت هذه الأخطاء. حتى ذلك الوقت ، كان عليك إضافة المنفذ وتصحيحاتك يدويًا إلى حزمة Alpine Linux musl.
يفتح برنامج التحويل البرمجي C وتطبيق libc الباب لنقل كمية ضخمة من البرامج إلى النظام الأساسي الخاص بك. والخطوة التالية هي تحديد ونقل الحزم اللازمة لنظام الاستضافة الذاتية. يوجد هنا في Alpine برنامج
نصي رائع يقوم بإعداد برنامج التحويل البرمجي المتقاطع ويقوم بإنشاء النظام الأساسي. تتطلب العديد من هذه الحزم (إن لم يكن معظمها) التثبيت والتكوين والتدخل اليدوي - وهذا ليس حلاً جاهزًا ولكنه أداة مفيدة بشكل لا يصدق. أهم الحزم في هذه المرحلة هي الأدوات الأصلية (أي المترجم ليس فقط المترجمات ، بل يعمل أيضًا تحت RISC-V) ، مدير كلمة المرور نفسه والعديد من الأشياء المفيدة الأخرى ، مثل tar ، patch ، openssl وما إلى ذلك.
بمجرد تجميع الحزم الضرورية ويمكن للنظام تجميع نفسه ، تبدأ عملية ترحيل طويلة. هنا ، عادة ما يكون من الحكمة التخلي عن برنامج التحويل البرمجي المتداخل وبدء التجميع الأصلي إذا كان الجهاز سريعًا بدرجة كافية. هذا حل وسط لأن نظام RISC-V أبطأ قليلاً من جهاز التمهيد x86_64 ، لكن العديد من الحزم تتطلب الكثير من التكوين اليدوي وتصحيحات للترجمة المتقاطعة. الوقت الموفر بسبب هذا يعوض التجميع الأبطأ (على الرغم من أنني معجب حقًا بسرعة HiFive Unleashed. عنق الزجاجة الرئيسي هو برنامج تشغيل mmcblk ، ولكن بمجرد وصول الملفات إلى ذاكرة التخزين المؤقت kernel ، يصبح كل شيء سريعًا وممتعًا للغاية).
هناك الآلاف من الحزم ، وبالتالي فإن الخطوة التالية بالنسبة لي (ولكل شخص يعمل على الترحيل) هي أتمتة بقية العملية تلقائيًا. بالنسبة لي ، فإن الخطوة المتوسطة هي التكامل مع خدمة builds.sr.ht لتنظيم عملي الخاص وإتاحة دورات للأشخاص الآخرين المهتمين بـ RISC-V. لن يتم نقل جميع الحزم تلقائيًا - ولكن الكثير من الإرادة! بمجرد نقل لغات البرمجة الخاصة بك - C ، و Python ، و Perl ، و Ruby (لقد قمت بذلك بالفعل!) ، إلخ - فإن معظم البرامج مفتوحة المصدر تكون محمولة إلى حد ما عبر الهياكل. أحد أهدافي الرئيسية في sr.ht هو تشجيع توزيع البرامج المحمولة!
إذا كان لدى أي من القراء أجهزة RISC-V الخاصة به أو يريد تجربتها مع qemu ، فإليك
مستودع Alpine Linux الخاص بـ RISC-V . شيء من هذا القبيل سوف تثبيته في / كزاز الرضع:
apk add \ -X https://mirror.sr.ht/alpine/main/ \ --allow-untrusted \ --arch=riscv64 \ --root=/mnt \ alpine-base alpine-sdk vim chrony
تشغيل
/bin/busybox --install
و
apk fix
على التمهيد الأول. لا يزال العمل مستمراً ، لذا فإن إعداد الباقي هو تمرين للقارئ حتى أقوم بمسح العملية وإصدار برنامج تثبيت عادي. حظا سعيدا
في الختام: شكرًا جزيلاً على مساعدة أعضاء مجتمع # riscv على Freenode ، وكذلك مطوري Debian و Fedora ، الذين قاموا بمسح الطريق إلى حد كبير وأصدروا تصحيحات للعديد من البرامج! لكنني حصلت على كل سرور لتحريك musl ، وبالتالي فإن الطريق لم تكن نظيفة تماما :)