قم بتشغيل أحدث نواة Linux من قرص مرن على جهاز كمبيوتر 486



في أغسطس 2019 ، قمت بتشغيل مسابقة Sing-Along Week لمزامنة ملف MIDI مع مُركِّب الكلام الذي يغني أغنية. وجدت في مخزني بطاقة MQX-32M MIDI (استنساخ Roland MPU-401) التي كنت أرغب في استخدامها لتحويل إشارات MIDI إلى واجهة Apple II + مع مركب الكلام Echo II ، ولكن انتهى الأمر باستخدام جهاز كمبيوتر محمول مع USB MIDI. شجعتني مسابقة أسبوع بيتزا أخرى على إيجاد 486 جهاز كمبيوتر يناسب علبة البيتزا ، والآن أصبحت الفرصة متاحة.



لم يكن البحث على موقع eBay سهلاً لأنه لم يستطع التوصل إلى مصطلح بحث جيد حقًا. لم أزعج حفظ البحث ، لأن هذا المشروع ليس أولوية. بدلاً من ذلك ، من وقت لآخر ، ألهمني شيء للذهاب إلى eBay وتجربة عمليات بحث جديدة. قبل أسبوعين ، اكتشفت جهاز الكمبيوتر 486 هذا وقمت بافتراض حول حجم العلبة ، استنادًا إلى ارتفاع خليج 5.25 بوصة. إنه رقيق للغاية ولديه بطاقة مخصصة لإدخال بطاقات أخرى جانبية ، والهيكل أقصر من بطاقة ISA. على الرغم من أنها أكثر سمكا من علبة البيتزا ، إلا أنها تقترب!



اللوحة الأم TMC PAT48PG4يأتي مع 32 ميغابايت من ذاكرة الوصول العشوائي (من الناحية الفنية 36 ميغابايت ، ولديه أربع بطاقات SIM 30 دبوس) وأربع بطاقات: VGA و SoundBlaster والمودم و I / O متعدد الوظائف. قام البائع بفحص الكمبيوتر وبيعه على أنه لا يعمل ، لأنه لم يجتاز البريد ، على الرغم من أن جميع البطاقات تعمل. كنت في الغالب في حاجة إلى حالة ، لذلك لم أزعجني كثيرًا. بالطبع ، عندما حصلت على جهاز الكمبيوتر ، كان علي أن أتحقق مما إذا كانت اللوحة الأم ميتة حقًا. لم يفلح ذلك بالنسبة لي أيضًا ، ولكن بعد ذلك اكتشفت أنه إذا ضغطت على زر إعادة الضبط ، فهناك العديد من أصوات التنبيه. جربت مصدر طاقة آخر وظهرت الأنظمة في الحياة بعد الضغط على زر إعادة الضبط! لا يزال لا يتم التمهيد من إيقاف التشغيل البارد بالضغط على زر الطاقة ، ولست متأكدًا مما إذا كانهناك غطاء تالف أو تلف بسيط في البطارية (تم تغيير البطارية من قبل) يمنع قطع خط إعادة الضبط بعد تشغيل الطاقة. ومع ذلك ، عمل بجد كافٍ لاستكشاف إمكانياته.



هدفي النهائي هو تثبيت أحدث توزيعات لينكس وبيثون 3 على قرص صلب "كبير". نظرًا لأن لدينا 486 جهاز كمبيوتر ، فإن تثبيت توزيعة Linux الحالية ليست مهمة بسيطة. توزيعات Linux الوحيدة التي لا تزال تدعم التثبيت المرن قديمة إلى حد ما. عادة ما تجاوزت التثبيت المرن تمامًا وقمت بتمهيد الكمبيوتر القديم من خلال PXE ثم قمت بتثبيت النظام عبر الشبكة. اعتقدت أن بإمكاني كتابة iPXE إلى قرص مرن وإدراجه في ISA NIC ، لكن iPXE يتوقف فقط دون أي رسائل خطأ بعد التمهيد من القرص المرن.



BIOS قديم ويكافح مع دعم القرص الصلب "الكبير" الذي قمت بتوصيله. حجم القرص 8.45 جيجا بايت ، لكن BIOS يرى فقط 8.0 جيجا بايت. يؤدي تمكين LBA في BIOS إلى تجميد الكمبيوتر أثناء POST بعد اكتشاف القرص. يصر Win98 fdisk على القرص هو 504 ميغابايت فقط. FreeDOS لا يراه على الإطلاق. حاولت توصيل NIC من ROM XTIDE في المقبس ، ويصر XTIDE أيضًا على أن محرك الأقراص غير متصل.



نظرًا لأنني أردت أن أرى كيف يكتشف Linux محرك الأقراص ، كنت بحاجة إلى إيجاد طريقة لتشغيل Linux. بعد قليل من غوغل ، اكتشفت خيار جعل tinyconfigمما يجعل نواة صغيرة جدًا (ولكن غير مجدية) صغيرة بما يكفي لتناسب قرص مرن. لقد قمت بتشغيل اثنين من الخيارات الأخرى ، ووجدت بوادر صغيرة بما فيه الكفاية وتمكنت من تحميلها على 486. كما هو متوقع ، يرى Linux القرص وسعته الكاملة دون أي مشاكل.



تتمثل الخطوة التالية في تثبيت Linux فعليًا على محرك الأقراص الثابتة. أفضل عدم الإفراج عن توزيعي الخاص ، ولكن قد تحتاج إلى القيام بذلك. هناك احتمال آخر هو تمهيد لينكس من قرص مرن ، ثم تمهيد النواة وبدء من التوزيع الحالي و kexec إليه. لكني أشعر أنه مثل إعادة اختراع جهاز iPXE.



تجميع نواة لينكس من المصدر



ملخص خطوات إنشاء صورة مرنة:



  • استنساخ بوابة git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git



    • v5.8-rc2-1-g625d3449788f 
  • make ARCH=x86 tinyconfig
  • make ARCH=x86 menuconfig



    • 486: CONFIG_M486=y



      • Processor type and features > Processor family > 486
    • tty: CONFIG_TTY=y

      • Device Drivers > Character devices > Enable TTY
    • printk: CONFIG_PRINTK=y



      • General Setup > Configure standard kernel features (expert users) > Enable support for printk
    • initramfs: CONFIG_INITRAMFS_COMPRESSION_GZIP=y



      • General Setup > Initial RAM filesystem and RAM disk (initramfs/initrd) support > Support initial ramdisk/ramfs compressed using gzip
    • ELF: CONFIG_BINFMT_ELF=y

      • Executable file formats > Kernel support for ELF binaries
  • make ARCH=x86 bzImage


أنت بحاجة إلى rootfs ، التقط صورة system-486 من صورة Linux الأصلية ، واستخرج rootfs.cpio.gz.



اختبار التشغيل من qemu:



qemu-system-i386 -kernel arch/x86/boot/bzImage -initrd ../system-image-486/rootfs.cpio.gz


إنشاء صورة مرنة مرنة:



dd if=/dev/zero of=linux-boot.img bs=1k count=1440
mkdosfs linux-boot.img
syslinux --install linux-boot.img
mount -o loop linux-boot.img /mnt
cp arch/x86/boot/bzImage /mnt
cp rootfs.cpio.gz /mnt


إنشاء /mnt/syslinux.cfg:



DEFAULT linux
LABEL linux
 SAY Now booting the kernel from SYSLINUX...
 KERNEL bzImage
 APPEND initrd=rootfs.cpio.gz


كتابة صورة على قرص مرن:



umount /mnt
fdformat /dev/fd0
ddrescue -f -D linux-boot.img /dev/fd0



All Articles