PDA

View Full Version : سوال: ساخت یک سیستم عامل ساده با اسمبلی + لودر و کرنل



abpsoft
شنبه 30 دی 1391, 16:19 عصر
سلام دوستان
من یه لودر + کرنل نوشتم که خیلی خیلی ساده اس.

کار این لودر و کرنل (سیستم عامل) اینه که لودر میاد و کرنل رو اجرا میکنه. بعد کرنل باید بره و یه فایل رو از توی فلش مموری بخونه و نمایش بده. همین.

من الان میخوام که وقتی که سیستم عامل خودم رو از طریق فلش بوتیبل اجرا میکنم، خودش بیاد و پارتیشن Primary (معمولاً درایو C) رو پیدا کنه و خودش رو داخل اون کپی کنه. یعنی دفعات بعد که سیستمم رو روشن میکنم، اون سیستم عاملی که من نوشتم اجرا بشه. کاری هم ندارم که ویندوز خراب میشه یا نه. فقط میخوام بدونم که چطوری باید این کار رو انجام بدم و لودر درایو C یا همون درایو Primary رو دستکاری کنم و فایلی رو داخل اون کپی کنم.

ممنون میشم اگر به صورت کامل راهنمایی کنید.
لطفاً اگر میشه قطعه کدهاش رو هم بزارید تا بتونم کاملتر متوجه بشم.

ممنوووووون:بوس:

pswin.pooya
شنبه 30 دی 1391, 17:59 عصر
[QUOTE]من الان میخوام که وقتی که سیستم عامل خودم رو از طریق فلش بوتیبل اجرا میکنم، خودش بیاد و پارتیشن Primary (معمولاً درایو C) رو پیدا کنه و خودش رو داخل اون کپی کنه. یعنی دفعات بعد که سیستمم رو روشن میکنم، اون سیستم عاملی که من نوشتم اجرا بشه. کاری هم ندارم که ویندوز خراب میشه یا نه. فقط میخوام بدونم که چطوری باید این کار رو انجام بدم و لودر درایو C یا همون درایو Primary رو دستکاری کنم و فایلی رو داخل اون کپی کنم.[/QUOTE

باید برنامه نویسی ساتا یا ide رو یاد بگیری و بعدش ‍ارتیشن تیبل رو بخونی و پارتیشن اصلی رو پیدا کنی و بعد از بوت سکتور رو بنویسی. و ... داستانش زیاده.


یه مورد دیگه. مطمپنی کرنل + بوت لودر نوشتی و اونم می تونه فایل داخل فلش رو بخونه؟! چون اگر اینا رو انجام داده بودی این سوال رو نمی پرسیدی.

abpsoft
یک شنبه 01 بهمن 1391, 13:27 عصر
ممنون که جواب دادین.


مطمپنی کرنل + بوت لودر نوشتی و اونم می تونه فایل داخل فلش رو بخونه؟!

بله. من نوشتم. لودر من توی سکتور صفر (اولین سکتور) فلش مموری قرار داده شده و توی روت دایرکتوری دنبال کرنلی که اسمش رو بهش دادم میگرده و بعد از پیدا کردن، میره سراغ FAT تا محتویات کرنل رو توی رم لود کنه.
همه این کارا رو میکنه. هیچ مشکلی هم وجود نداره.
کد درایو یا همون سخت افزار برای فلش مموری من، 80 هست. البته فکر کنم برای همه اینطور باشه.

سیستم عامل من از فلش مموری لود میشه.
من میخوام به هارد و درایو Primary (یا همون درایو C) دسترسی داشته باشم.
همین. این رو یاد بگیرم دیگه مشکلی ندارم.

ممنون

pswin.pooya
یک شنبه 01 بهمن 1391, 17:40 عصر
بله. من نوشتم. لودر من توی سکتور صفر (اولین سکتور) فلش مموری قرار داده شده و توی روت دایرکتوری دنبال کرنلی که اسمش رو بهش دادم میگرده و بعد از پیدا کردن، میره سراغ FAT تا محتویات کرنل رو توی رم لود کنه.
همه این کارا رو میکنه. هیچ مشکلی هم وجود نداره.
کد درایو یا همون سخت افزار برای فلش مموری من، 80 هست. البته فکر کنم برای همه اینطور باشه.

میتونی کدت رو بذاری تا ما هم استفاده کنیم؟

abpsoft
دوشنبه 02 بهمن 1391, 12:22 عصر
میتونی کدت رو بذاری تا ما هم استفاده کنیم؟

انشاء الله اولین فرصت کدهاش رو میزارم.
بزارید کاملش کنم. حتماً میزارم اینجا.

فعلاً مشکل من اینه که بتونم به درایو C دسترسی داشته باشم و یه لودر توش Write کنم.

کسی می تونه کمک کنه؟

shahmohammadi
سه شنبه 03 بهمن 1391, 12:32 عصر
سلام به همه.
خودم که تا حالا برنامه‌شو ننوشتم ولی تا حدودی ساختارشو مطالعه کردم. می تونید ساختار ntfs رو مطالعه کنید. ntfs.com

abpsoft
سه شنبه 03 بهمن 1391, 12:35 عصر
سلام به همه.
خودم که تا حالا برنامه‌شو ننوشتم ولی تا حدودی ساختارشو مطالعه کردم. می تونید ساختار ntfs رو مطالعه کنید. ntfs.com

فرمتی که من براش نوشتم، برای FAT32 هست. یعنی باید FAT32 باشه.
اگه میشه در مورد FAT32 راهنمایی کنید، ممنون میشم.

shahmohammadi
سه شنبه 03 بهمن 1391, 12:41 عصر
توی همون سایت توضیح داده:
http://ntfs.com/fat-systems.htm
این هم یه کد اسمبلی برای ntfs:
http://pwnos.googlecode.com/svn/trunk/Core/Files/NTFS%20Driver.asm

عبارت زیر رو هم توی گوگل جستجو کنید:
"fat32 driver" filetype:asm

اللته این رو هم بگم که تاحالا برنامه شو ننوشتم.

pswin.pooya
سه شنبه 03 بهمن 1391, 13:04 عصر
من میخوام به هارد و درایو Primary (یا همون درایو C) دسترسی داشته باشم.

اگر سیستم عامتون 32 بیتی هست که باید درایور ساتا یا ide رو بنویسی و اگر ۱۶ بیتی باشه شاید بتونی از توابع بایوس برای دسترسی به دیسک استفاده کنی. در مورد نحوه نوشتن داخل یه درایو خاس هم یه بار گفتم باز هم تکرار میکنم اول باید جدول ‍ارتیشن رو بخونی بعدش ببینی درایو c از کجا شروع میشه و به کجا ختم میشه و بعد از اون بری سراغ پارتیشن و خوندن فایلها و ...

انواع دستگا های ذخیره سخت:
http://wiki.osdev.org/Storage

دستگاه های IDE:
http://wiki.osdev.org/IDE

جدول ‍ارتیشن:
http://wiki.osdev.org/Partition_Table

و البته لینک زیر هم برای ساتا هست که هنوز کامل نشده:
http://wiki.osdev.org/SATA

و فلاپی دیسک:
http://wiki.osdev.org/Floppy_Disk_Controller

و البته USB که خالی از لطف نیست:
http://wiki.osdev.org/USB


درصورتی که سیستم عاملتون ۱۶ بیتی باشه ( که بعید میدونم) میتونه از سرویسهای بایوس استفاده کنید.


فرمتی که من براش نوشتم، برای FAT32 هست. یعنی باید FAT32 باشه.
چه فرقی میکنه از fat بخون بریز توی ntfs


آقا ما هنوز منتظر سورس هستیم

abpsoft
سه شنبه 03 بهمن 1391, 15:09 عصر
آقا ما هنوز منتظر سورس هستیم

چشم حتماً.
قرار بود که کاملش کنم بعد بزارم توی سایت.

راستشو بخواین این پروژه درس پروژم هست. تا اینجا نوشتم.
فقط استاد گفت که اگر بتونه مثلاً نصب بشه توی سیستم و از فلش اجرا نشه، خیلی بهتره.

چند روز دیگه حتماً توی همین تاپیک قرارش میدم.