Pages

Friday, November 19, 2010

Assembly වලින් Boot Loader එකක් ලියමු -Part 1

ඔන්න ආයෙත් අපිට Assembly වලින් සෙල්ලම් දාන්න අවස්ථාවක් ඇවිල්ලා යාලුවනේ . ඔක්කොටම කලින් Computer එකක Booting Process එක අමතක නම් මෙන්න මේ Link ඒක හෝ වෙන text එකක් මුලින් Refer කරනව නම් වඩාත් සුදුසුයි කියලා මම හිතනවා. හරි දැන් එහෙනම් අපි මාතෘකාවට Enter වෙමුකෝ.
අපේම කියලා Boot Loader එකකින් Computer එක Boot කරල බැලීම ප්‍රධාන පියවර 4 කින් දක්වන්න පුලුවන්

1) Floppy image එකක් හදමු
2) Nasm භාවිතයෙන් Boot Loader file එකක් ලිවීම
3) Boot Loader file එක Floppy image එකට write කර Bootable Floppy image හදා ගැනීම
4) Qemu නමැති Emulator ය install කිරීම සහා එය භාවිතයෙන් Floppy image ය Virtual PC එකක Boot කිරීම

Unix command භාවිතයෙන් floppy image එකක් හදමු

මුලින්ම අපි බලමු මොකද්ද මේ "Image file" කියන්නෙ කියලා. කිසියම් Storage Device එකක හෝ Media එකක (ex: CD/Floppy drive/Hard Drive/DVD/BD) ව්‍යුහ අකෘතිය ( Structure ) සහ එහි අඩංගු Contents සහිත Single file එකක් තමයි image file එකක් කියල කියන්නේ.
ඉතාම සරලව image file එකක් නිර්මාණය කරන කතන්දරෙ කියනවනම් මෙන්න මෙහෙමයි. "dd" (disk dump)කියල තියෙනව ප්‍රසිද්ද UNIX COMMAND එකක්.ඔන්න ඔය Command එකෙන් පුලුවන් File එකක Contents තව File එකකට Write කරන්න වගේම එහෙම කරද්දි විවිධ සෙල්ලම් දාන්න. මේ ලිපියෙන් මම Image File writing හෙවත් Floppy image එකක් නිර්මාණය කරන්න බලපොරොත්තු වෙන්නේ ඔන්න ඔය කියන "dd" Command එකෙන් තමා. මෙතනදි සදහන් කරන්න ඔනි තවත් වැදගත් කාරණයක් තමයි Floppy image එකක් කියල කියන්නෙත් තවත් එක File ජාතියක් විතරමයි කියන එක. ඒක නිසා තමයි අපිට මේ "dd" Command එක භාවිතා කරන්න පුලුවන් වෙලා තියෙන්නෙ අපේ අවශ්‍යතාව ඉටු කරගන්න.
ඉතින් අපි වැල්වටාරම් කියවන්නැතුව කෙලින්ම Command Syntax එකට බහිමුකෝ.

# dd if=/dev/zero of=floppy.flp bs=512 count=2880

dd :
මෙම Command එකෙන් files copy කරන්න පුළුවන්.
if :
මෙම Option එකෙන් Standard input එකක් වෙනුවට read කරන්න input file එකක් දෙන්න පුළුවන්.
of :
මෙම Option එකෙන් Standard output එකක් වෙනුවට write කරන්න output file එකක් දෙන්න පුළුවන්.
bs :
මෙම Option එකෙන් dd Command එක ‍files Read/Write කරන Block size එක bytes වලින් define
කරනවා.
count :
මෙම Option එකෙන් input file එකෙන් copy කරන blocks ගණන තීරණය කරනවා.

එමනිසා output file size එක මෙහෙම ගණනය කරන්න පුළුවන්.

512 x 2880 = 1,474,560 bytes
1,474,560/(1024 x 1024 ) = 1.4 Mb (Approximately)
1.4 Mb කියන්නෙ Normal Floppy Disc එකක default storage size එක කියලා අපි දන්නවනේ.

** dev/zero කියන්නෙ Unix-like OS වල එන විශේෂ file වර්ගයක්.කිසියම් Data Storage එකක් initialize
කරනකොට මෙය ඇතිතාක් Null characters ලබා දීම සිදු කරනවා
** floopy.flp කියලා ".flp" extension එක සහිත file එක තමා අපේ floppy image file එක වෙන්නේ.

ඔන්න දැන් අපේ Floppy image file එක නම් ලැහැස්තියි.නමුත් අපි ගාව තියෙන්නේ Unformatted Version එකක Floppy image එකක්. දැන් තියෙන්නේ ඒක Format කරගන්නයි අපිට අවශ්ය File System එකකට.මම මෙතනදි ඒ සදහා ext2 file system
එකට format එක සිදු කිරීමට පහත Command එක භාවිතා කරනවා.

# mke2fs floppy.flp

..............................................................................
කතාව මතු සම්බන්ධයි. ඉතිරි කොටස ඊළග කොටසත් ඉක්මන්ට ලියන්නම්. Part 2 සමගින් Boot Loader.... :)

15 comments:

  1. නියමයි මචන්.... Thanks

    ජය වේවා හැමෝටම..
    ඒ වගේම Academic Only එකට...

    ReplyDelete
  2. පට්ටයි මචං පට්ටයි...........

    ReplyDelete
  3. මචංලා කලින් මට Floppy image එක Format කරන විදිහ කියන්න අමතක වුනා.ඔන්න ඒක Edit කරලා හරිගැස්සුවා මේක දකින කට්ටිය පොඩ්ඩක් ඒක නොදැකපු කට්ටියට කියන්න!!
    ඔබට ජය!!!

    ReplyDelete
  4. පට්ටයි මචෝ...වැඩේ එල...දිගටම කරගෙන යන්න ශක්තිය ලැබේවා..!!

    ReplyDelete
  5. පට්ටයි මචෝ........ බොහෝම ස්තූතියි...වැඩි වැඩියෙන් පුලුවන් වෙන්න ඕනි..

    ReplyDelete
  6. එළ වැඩක් මචෝ....බොහෝම ස්තූතියි..

    ReplyDelete
  7. නියම වැඩක් මල්ලිලා. මේ වගේ වැඩක් තනියෙන් කරන එක අමාරුයි. කටිටිය සෙට් වලා කරන මේ වැඩේ මරු.
    සුබ පතනවා හැමෝටම..
    අපිත් උදව් කරන්නම් ඕන වෙලාවක.

    ReplyDelete
  8. @ රවින්ද අයියා

    ඒක තේරුණා අයියා... කට්ටිය සෙට් වෙලා කරන්න ගත්තේ ඒකයි.
    බොහොම ස්තුතියි අදහස් දැක්වීම ගැන...

    ReplyDelete
  9. එල කිරි මචන්...දිගටම කරගෙන පලයං...පට්ටයි

    ReplyDelete
  10. නියමයි මචන්....බොහෝම ස්තූතියි.
    දිගටම කරගෙන යන්න ශක්තිය ලැබේවා..!!

    ReplyDelete
  11. මචංලා හැමෝටම අදහස් දැක්වීම ගැන ගොඩාක්ම ස්තුතිය්.අපි හැමොම මේ විදිහට සෙට් වෙල මේක දිගටම කරගෙනු යමු.........

    ReplyDelete
  12. කෝ ඔය අය මේව ගැන ලියන එක නතර කරලද?

    ReplyDelete

ඔබගේ අදහස් පවසන්න ...
මට ඒව මසුරන් වටිනවා ....