FUZIX یک سیستم عامل قدیمی دانشگاهی و نسخهای کلون شده از یونیکس است که برای میکروپروسسور 8 بیتی Zilog Z80 نوشته شده است. این سیستم عامل در سال 2014 توسط آقای Alan Cox بهصورت عمومی منتشر شد. آقای Alan Cox که یکی از توسعه دهندگان پرکار هسته لینوکس بود، در سال 2013 از جمع توسعه دهندگان لینوکس خارج شد. وی این سیستم عامل را برای کسانی که به دنبال نوستالژی و روزهای خوب قدیم هستند، توصیه میکند. روزهایی که تمام کدها روی یک فلاپی جا میشد!
شاید برای شما مفید باشد: آموزش رزبری پای از 0 تا 100 از مقدماتی تا پیشرفته
سیستم عامل FUZIX برای معماریهای دیگر، مثل 6502، 68000 و MSP430 نیز پورت شد. آقای دیوید گیون (David Given) که قبلاً این سیستم عامل را برای MSP430 و ESP8266 پورت کرده بودند، هم اکنون این سیستم عامل را برای رزبری پای پیکو با میکروکنترلر RP2040 هم پورت کردند! یعنی شما میتوانید سیستم عامل یونیکس را بر روی یک میکروکنترلر 4 دلاری اجرا کنید!
کامپایل کردن و اجرای FUZIX از منبع (Building from source)
سیستم عامل FUZIX که بر روی میکروکنترلر RP4020 اجرا میشود، نوعی یونیکس است که رابط کنسول آن پورت سریال و USART0 میکروکنترلر است. همچنین FUZIX از SD کارت پشتیبانی کرده و هم از فایلهای سیستمی و هم ناحیه swap استفاده میکند. هر چند ایمیج باینری آن به صورت آماده برای دانلود وجود دارد، اما میتوانید خودتان هم سورس آن را کامپایل کنید.
برای این کار، باید ابتدا تولچین رزبری پای پیکو (Pico) و SDK های C/C++ را بر روی سیستم خود داشته باشید.
سپس به کمک گیت، نسخه پورت شده سیستم عامل FUZIX برای رزبری پای پیکو را دریافت کنید.
1 2 3 | $ git clone https://github.com/davidgiven/FUZIX.git $ cd FUZIX $ git checkout rpipico |
حال، دایرکتوری را به platform-port تغییر دهید:
1 | $ cd Kernel/platform-rpipico/ |
اولین خط فایل Makefile را ویرایش کرده و مسیر pico-sdk را وارد کنید. برای بیلد کردن پروژه برای رزبری پای پیکو، باید فایل pico_setup.sh را اجرا کرده و یا طبق دستورالعملهای وب سایت رزبری پای عمل کرده و مسیر SDK را در این متغیر ذخیره کنید.
1 | export PICO_SDK_PATH = /home/pi/pico/pico-sdk |
بعد از این مرحله، شما هم میتوانید FUZIX UF2 و هم فایلهای سیستمی مربوط به روت را بیلد کنید.
1 2 | $ make world -j $./update-flash.sh |
اگر همه چیز درست پیش رفته باشد، شما باید یک فایل UF2 در مسیر build/fuzix.uf2 و یک فایل ایمیج به نام filesystem.img در مسیر فعلی خود داشته باشید.
حالا میتوانید به صورت معمولی فایل UF2 را بر روی رزبری پای پیکو Pico اجرا کنید.
کابل میکرو USB را به کامپیوتر متصل کنید و هنگامی که میخواهید طرف دیگر را به رزبری پای پیکو وصل کنید، دکمه BOOTSEL را نگه دارید. وقتی برد به کامپیوتر متصل شد، دکمه را رها کنید.
حافظه رزبری پای با نام RPI-RP2 باید بر روی دسکتاپ شما ظاهر شود. فایل UF2 را بر روی آن ذخیره کنید. بعد از این کار، حافظه به طور خودکار از کامپیوتر شما جدا شده و رزبری پای پیکو شما پس از ریستارت، سیستم عامل Unix را اجرا میکند. اما متأسفانه بدون فایل سیستم قادر به اجرای هیچ کاری نمیباشد.
ساخت SD کارت بوتیبل
فایل ایمیج filesystem.img که بیلد کردیم، قابل بوت شدن (Bootable) نیست. از طرفی، متأسفانه برای ساخت یک دیسک بوتیبیل برای رزبری پای پیکو، همانند نسخههای قبلی شما نمیتوانید به راحتی با نرم افزارهایی مثل Etcher و… این کار را انجام دهید. برای ساخت ایمیج بوتیبل، شما باید مراحل بعدی را نیز انجام بدهید. ابزارهای معرفی شده برای لینوکس هستند، اما در ویندوز و مک نیز تقریباً با روشی مشابه میتوانید همین مسیر را ادامه دهید.
فایل سیستم ما تنها 34 مگابایت حجم دارد، اما SD CARD های موجود، معمولاً بالای 2 گیگابایت حافظه دارند، که البته موضوع مهمی هم نیست.
SD کارت را درون رم ریدر قرار داده و آن را به کامپیوتر و یا رزبری پای (نسخه کامپیوتر) متصل کنید. ما قرار است یک جدول بر روی آن بسازیم که دو پارتیشن برای ما ایجاد کند. 2 مگابایت برای ناحیه swap و 32 مگابایت برای root سیستم عامل (فایل filesystem.img) در نظر میگیریم.
بعد از اینکه SD کارت را متصل کردید، میتوانید با دستور lsblk از طریق کامندلاین آن را مشاهده کنید. اگر حافظه شما خالی و بدون پارتیشن باشد، آن را بهصورت /dev/sda خواهید دید.
1 2 3 4 5 6 7 | $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 3.7G 0 disk mmcblk0 179:0 0 14.9G 0 disk ├─mmcblk0p1 179:1 0 256M 0 part /boot └─mmcblk0p2 179:2 0 14.6G 0 part / $ |
اما اگر کارت شما از قبل فرمت شده و آماده باشد، خروجی شبیه به زیر را خواهید دید.
1 2 3 4 5 6 7 8 | $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 3.7G 0 disk └─sda1 8:1 1 3.7G 0 part /media/pi/USB mmcblk0 179:0 0 14.9G 0 disk ├─mmcblk0p1 179:1 0 256M 0 part /boot └─mmcblk0p2 179:2 0 14.6G 0 part / $ |
در خروجی بالا، حافظه ما بهصورت FAT و از نوع MBR فرمت شده و نام آن “USB” است. کامپیوتر شما آن را بهصورت اتوماتیک در /media/pi/USB قرار داده یا به اصطلاح mount کرده است.
اگر حافظه شما mount شده، باید با دستور زیر آن را unmount کنید:
1 | $ umount /dev/sda1 |
حال، با دستور lsblk خروجی زیر را خوهید دید:
1 2 3 4 5 6 7 8 | $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 3.7G 0 disk └─sda1 8:1 1 3.7G 0 part mmcblk0 179:0 0 14.9G 0 disk ├─mmcblk0p1 179:1 0 256M 0 part /boot └─mmcblk0p2 179:2 0 14.6G 0 part / $ |
با پاک کردن بیت صفرم (شروع) حافظه، شما میتوانید جدول پارتیشن بندی آن را از بین ببرید.
نکته مهم: در استفاده از این دستور کاملاً دقت کنید، زیرا ممکن است اطلاعات دیگر خود را به اشتباه حذف کنید.
1 | $ sudo dd if=/dev/zero of=/dev/sda bs=512 count=1 |
اگر مجدداً دستور lsblk را اجرا کنید، خواهید دید که پارتیشن شما از بین رفته است.
در مرحله بعد با استفاده از دستور fdisk یک جدول پارتیشن جدید ایجاد میکنیم.
1 | $ sudo fdisk /dev/sda |
در اینجا حرف “o” را وارد کنید تا یک DOS disklabel ایجاد شود.
1 2 | Command (m for help): o Created a new DOS disklabel with disk identifier 0x6e8481a2. |
سپس با وارد کردن “n” یک پارتیشن جدید ایجاد میکنیم.
1 2 3 4 5 6 7 8 9 | Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-7744511, default 2048): 2048 Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-7744511, default 7744511): +2M Created a new partition 1 of type 'Linux' and of size 2 MiB. |
ممکن است در این مرحله پیامی مبنی بر وجود امضا (contains a vfat signature) به شما نمایش داده شده و از شما پرسیده شود که این امضا پاک شود یا خیر. در این صورت شما حرف “Y” را تایپ کنید.
در مرحله بعدی، نوع پارتیشن “7F“ تنظیم میکنیم.
1 2 3 4 | Command (m for help): t Selected partition 1 Hex code (type L to list all codes): 7F Changed type of partition 'Linux' to 'unknown'. |
ناحیه swap سیستم عامل FUZIX ایجاد گردید. حال، باید یک پارتیشن 32 مگابایتی برای فایل سیستم ایجاد کنیم.
1 2 3 4 5 6 7 8 9 10 | Command (m for help): n Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): p Partition number (2-4, default 2): 2 First sector (6144-7744511, default 6144): 6144 Last sector, +/-sectors or +/-size{K,M,G,T,P} (6144-7744511, default 7744511): +32M Created a new partition 2 of type 'Linux' and of size 32 MiB. |
بعد از این مرحله، اگر “p” را در fdisk وارد کنید، خروجی زیر را مشاهده خواهید کرد:
1 2 3 4 5 6 7 8 9 10 11 12 | Command (m for help): p Disk /dev/sda: 3.7 GiB, 3965190144 bytes, 7744512 sectors Disk model: STORAGE DEVICE Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xe121b9a3 Device Boot Start End Sectors Size Id Type /dev/sda1 2048 6143 4096 2M 7f unknown /dev/sda2 6144 71679 65536 32M 83 Linux |
حال، برای ذخیره جدول پارتیشن بندی، “w” را وارد کنید.
در نهایت، فایل سیستم را در پارتیشن دوم کپی میکنیم.
1 2 3 4 5 | $ sudo dd if=filesystem.img of=/dev/sda2 65535+0 records in 65535+0 records out 33553920 bytes (34 MB, 32 MiB) copied, 14.1064 s, 2.4 MB/s $ |
حالا میتوانید SD کارت را eject کنید.
سیم کشی برد بورد
اگر از رزبری پای استفاده میکنید، USART رزبری پای را مطابق شکل زیر به رزبری پای پیکو متصل کنید.
اگر برد رزبری پای ندارید، میتوانید به کمک ماژولهای USB2TTL نیز این کار را انجام دهید.
نحوه سیم کشی SD کارت به رزبری پای پیکو نیز بهصورت زیر است:
Pico | RP2040 | SD Card |
3V3 (OUT) | — | +3.3V |
Pin 16 | GP12 (SPI1 RX) | DO (MISO) |
Pin 17 | GP13 (SPI1 CSn) | CS |
Pin 18 | GND | GND |
Pin 19 | GP14 (SPI1 SCK) | SCK |
Pin 20 | GP15 (SPI1 TX) | DI (MOSI) |
پس از اینکه همه سیم کشیها را به دقت انجام دادید، کارت حافظه را نیز به پیکو متصل کنید. بعد از اینکه منبع تغذیه نیز متصل شد، سیستم عامل FUZIX نیز بوت خواهد شد.
اتصال به سیستم عامل FUZIX
اگر از رزبری پای استفاده میکنید، ابتدا باید سریال USART را فعال کنید.
1 | $ sudo raspi-config |
از طریق منوی
Interfacing Options → Serial
اگر پیام
“Would you like a login shell to be accessible over serial?”
را مشاهده کردید، “No” و اگر پیام
“Would you like the serial port hardware to be enabled?”
ظاهر شد، “Yes” را بزنید.
در هنگام خروج از تنظیمات، از شما برای راه اندازی مجدد رزبری پای سؤال میشود، با تأیید کردن آن، رزبری پای ریستارت شده و پورت سریال فعال میشود. حال میتوانید با دستور minicom به سیستم عامل FUZIX متصل شوید:
1 2 | $ sudo apt install minicom $ minicom -b 115200 -o -D /dev/serial0 |
به طور مشابه میتوانید بر روی سیستم عاملهای گنو/لینوکس دیگر، ویندوز و مک نیز از دستوراتی مثل minicom یا screen و… استفاده کنید.
بعد از اتصال به سیستم عامل FUZIX شما خروجی شبیه به زیر را دریافت خواهید کرد:
اگر هیچ چیزی مشاهده نکردید، کابل USB را قطع و مجدداً متصل کنید تا FUZIX ریستارت شود.
میتوانید با نام کاربری “root” بدون پسورد وارد شوید. تاریخ و ساعت درست را در سیستم عاملتان تنظیم کنید.
با وجود مشکلاتی که در پورت کردن سیستم عامل FUZIX وجود دارد، اما هم اکنون یکی از سیستم عامل های رسمی رزبری پای پیکو است.
در فروم های رزبری پای، در برخی سرور های غیر رسمی و صفحه بازخوردها در گیت هاب افراد بسیار زیادی در این زمینه فعال هستند.
همچنین مستندات مربوطه را میتوانید در این صفحه مطالعه کنید. اگر آدرس این صفحه را گم کردید، میتوانید دکمه BOOTSEL را نگه داشته و رزبری پای پیکو را از طریق USB به سیستم خود متصل کنید، و فایل INDEX.HTM را باز کنید تا شما را به این صفحه هدایت کند!
سلام آموزش خیلی خوبی بود خیلی ببخشید آیا میتونیم از بخش خالی SD که استفاده نمیشه استفاده کنیم تا RAM رزبری پای پیکو رو افزایش بدیم؟ و بتونیم یک برنامه سبک رو اجرا کنیم؟
بسیار جالب بود و انصافا هم خیلی خوب و ساده توضیح دادید، من که مشتاق شدم انجام بدم. فقط حیف که این مدل رزبری پای رو ندارم. RP2040 تو ایران اومده؟
درود بر شما، بله دوست عزیز، اگر در سامانه آی سی سیسوگ جستجو کنید، آن را پیدا خواهید کرد:
https://isee.sisoog.com
سلام خدمت شما
Zilog Z80 یک میکروپروسسور است نه میکروکنترل. لطفا تصحیح کنین
ممنون از مطالب جالبتون
سلام دوست عزیز
متشکرم برای تذکر و دقتتون، اصلاح میکنیم
پورت کردن سیستم عامل فوزیکس هم جالب بود. ممنون.
خواهش میکنم.
این رزبری پای جدیده رو ندارم ولی اون قسمت مطلبتون که برای فعال کردن یوزارت رزبری پای بود خییلی حال کردم. تا حالا تو منو raspi-config نرفته بودم. خیییلی باحاله. من همش با ادیتور نانو فایل های کانفیگ رو تغییر میدادم.
خسته نباشید.
سلام ممنون از شما
سلام بسیار عالی هرچند تجربه ای تو این مورد ندارم اما بسیار لذت بخشه متشکر از زحمتتون
اوایل مقاله هم به سلطان68000اشاره کردید که برای موتورولا بود و باوجود بینظیر بودنش قربانی تبلیغات و تفکر اپل شد روحش شاد یادش گرامی ..
سلام خواهش میکنم دوست عزیز