انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: محمدرضا ح. در 10 فروردین 1392، 09:40 بظ
-
با سلام خدمت همگی :)
این آموزش رو من از اینجا برداشتم :
http://mikeos.berlios.de/write-your-own-os.html
اینجا گفته چطور میشه یک سیستم عامل ساده با اسمبلی نوشتن که یک پیغام رو روی صفحه چاپ کنه! مسلمه که اول کار کسی انتظار نباید داشته باشه تا یک سیستم عامل مثل BSD یا Windows بنویسه. بهر حال این سیستم عاملها هم از ایده هایی استفاده میکنند که در این سیستم عاملهای کوچک استفاده شده. فقط برای خودشون تغییرش میدن.
این ویکی توضیحات خوبی داره : http://wiki.osdev.org
خب پرچونگی نکنم! برسیم به این که چه چیزهایی نیازه؟
۱- مجموعه build-essential
۲- یک دستگاه اسمبلر (در اینجا nasm)
۳- یک مجازی ساز (من به رسم امانت داری از متن اصلی qemu رو آوردم ولی شخصا با Virtual Box تست میکنم ) .
sudo apt-get install nasm build-essential qemu
خب! توضیحات جالبی در این قسمتهای متن اومده که به نظرم بهتر هست خودتون بخونیدش :
http://mikeos.berlios.de/write-your-own-os.html#pcprimer
http://mikeos.berlios.de/write-your-own-os.html#asmprimer
در این دو قسمت چون بیشتر به جنبه های فنی پرداخته شده ، به نظر بهتر هست که زبان اصلی بخونید (البته بی حوصلگی استارتر تاپیک رو هم بهش بیافزایید :-\") .
آیا ادیتور خاصی نیاز داریم؟ نه! بازهم با هر ادیتوری میشه نوشت. gedit , leafpad, geany و یا vi , nano و ... . باید این کد رو بنویسیم :
BITS 16
start:
mov ax, 07C0h ; Set up 4K stack space after this bootloader
add ax, 288 ; (4096 + 512) / 16 bytes per paragraph
mov ss, ax
mov sp, 4096
mov ax, 07C0h ; Set data segment to where we're loaded
mov ds, ax
mov si, text_string ; Put string position into SI
call print_string ; Call our string-printing routine
jmp $ ; Jump here - infinite loop!
text_string db 'This is my cool new OS!', 0
print_string: ; Routine: output string in SI to screen
mov ah, 0Eh ; int 10h 'print char' function
.repeat:
lodsb ; Get character from string
cmp al, 0
je .done ; If char is zero, end of string
int 10h ; Otherwise, print it
jmp .repeat
.done:
ret
times 510-($-$$) db 0 ; Pad remainder of boot sector with 0s
dw 0xAA55 ; The standard PC boot signature
در اسمبلی ، کامنتها بعد از ; (سمی کالن ، نقطه ویرگول) قرار میگیرند ، پس در این کد هم توضیحات خوبی افزوده شده و میتونه راهنماییتون کنه که هر تیکه چه عملی رو انجام میده :) .
و اما ، باید اسمبل کنیم ، کد رو با نام myfirst.asm سیو میکنیم و بعدش :
nasm -f bin -o myfirst.bin myfirst.asm
این فقط به ما یک باینری ساده میده! باینری ساده به چه درد میخوره؟ برای بوت یا ایمیج فلاپی نیازه یا CD . خب با این کد ایمیج فلاپی درست میکنیم :
dd status=noxfer conv=notrunc if=myfirst.bin of=myfirst.flp
خب الان به myfirst.flp رسیدیم! کد زیر رو اجرا کنید :
qemu-i386 -fda myfirst.flp
برای اینکه CD Image درست کنیم :
mkisofs -o myfirst.iso -b myfirst.flp cdiso/
توجه کنید که اول فایل myfirst.flp رو در cdiso قرار بدید. فولدر cdiso هم که میدونید چطور باید ساخت دیگه ;D
خب برای بوت از CD هم در دستور فوق بجای fda بنویسید cdrom ! و از سیستم عامل سادتون لذت ببرید :D .
خب برای کار پیشرفته تر چه کنیم؟ این هم تیم MikeOS توضیح خوبی داده :
http://mikeos.berlios.de/write-your-own-os.html#gofurther
به جهت اینکه بتونید MikeOS رو به GRUB بشناسونید باید اون رو به Protected مد ببرید! و برای این کار هم هکی از این سیستم عامل موجوده :
http://board.flatassembler.net/topic.php?t=12381
که میتونید ببینید چه کار کرده :) .
-
build-essential برای چی نیازه؟
-
build-essential برای چی نیازه؟
راستش خودمم نفهمیدم! چون nasm , qemu , genisoimage کلا کارش رو راه میندازه :D
-
جالب بود. ;)
-
مسلمه که اول کار کسی انتظار نباید داشته باشه تا یک سیستم عامل مثل BSD یا Windows بنویسه.
خوشم میاد کلا تو کار bsd/windows/mac هستی اما تو انجمن اوبونتو فعالیت میکنی 8) ;D :P
حالا که عشق کرنل و اینچیزا هستی، اون سیستم عامله که توی مروگر وب اجرا میشه رو دیدی؟
-
مسلمه که اول کار کسی انتظار نباید داشته باشه تا یک سیستم عامل مثل BSD یا Windows بنویسه.
خوشم میاد کلا تو کار bsd/windows/mac هستی اما تو انجمن اوبونتو فعالیت میکنی 8) ;D :P
حالا که عشق کرنل و اینچیزا هستی، اون سیستم عامله که توی مروگر وب اجرا میشه رو دیدی؟
تو کار ویندوز نیستم :D
کدومش دقیقا؟ :D یکی بود به اسم gh.os.t اگه اشتباه نکنم.
-
مسلمه که اول کار کسی انتظار نباید داشته باشه تا یک سیستم عامل مثل BSD یا Windows بنویسه.
خوشم میاد کلا تو کار bsd/windows/mac هستی اما تو انجمن اوبونتو فعالیت میکنی 8) ;D :P
حالا که عشق کرنل و اینچیزا هستی، اون سیستم عامله که توی مروگر وب اجرا میشه رو دیدی؟
لیست کاملشون اینجا هست:
لیست دسکتاپهای تحت وب در ویکیپدیا (http://en.wikipedia.org/wiki/Web_desktop)
و این یکی خیلی به نظرم جالبتر از بقیه هست:
symbiose (http://webos.symbiose.fr.cr)
پ.ن: علی جان لینک رو درست کردم. ممنون که اطلاع دادی. :)
-
البته یکی هم داریم که توش فقط مرورگر وب باز میشه :-D
معلومه دیگه کرومیوم او اس
vandu جان لینک رو به عنوان کد پست نکن من الان با موبایل نمیتونم انتخابش کنم
-
کدومش دقیقا؟ :D یکی بود به اسم gh.os.t اگه اشتباه نکنم.
http://www.bellard.org/jslinux/
-
نتیجه آموزشهای وبسایتهای MikeOS و OSDev :
http://velsa.haghiri75.com
ببینم شما چه میکنید ;D