نمایش نتایج 1 تا 10 از 10

نام تاپیک: لود کرنل لینوکس

  1. #1
    کاربر تازه وارد آواتار tanzadeh7
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    بوشهر
    پست
    98

    Question لود کرنل لینوکس

    سلام من دارم یه سیستم عامل برپایه لینوکس مینویسم میخوام از دسکتاپ gnome-shell و کرنل لینوکس استفاده کنم تا حالا یک بوت سکتور در اسمبلی نوشتم و میخوام باهاش کرنل لینوکس 3.15.5 لود کنم چجوری باید این کار رو انجام بدم آیا کرنل لینوکس یک فایل main داره که اونو یه بوت سکتورم لینک کنم یا باید یه کار دیگه انجام بدم لطفا جواب بدید


    کد بوت سکتور


    ;================================================= =================
    ;NS_OS Developers
    ;================================================= =================


    BITS 16

    jmp short bootloader_start
    nop



    OEMLabel db "TINKERBOOT"
    BytesPerSector dw 512
    SectorsPerCluster db 1
    ReservedForBoot dw 1
    NumberOfFats db 2
    RootDirEntries dw 224

    LogicalSectors dw 2880
    MediumByte db 0F0h
    SectorsPerFat dw 9
    SectorsPerTrack dw 18
    Sides dw 2
    HiddenSectors dd 0
    LargeSectors dd 0
    DriveNo dw 0
    Signature db 41
    VolumeID dd 00000000h
    VolumeLabel db "NS_OS "
    FileSystem db "FAT12 "


    ; ------------------------------------------------------------------
    ; Main bootloader code

    bootloader_start:
    mov ax, 07C0h
    add ax, 544
    cli
    mov ss, ax
    mov sp, 4096
    sti

    mov ax, 07C0h
    mov ds, ax



    mov byte [bootdev], dl

    mov eax, 0



    floppy_ok:
    mov ax, 19
    call l2hts

    mov si, buffer
    mov bx, ds
    mov es, bx
    mov bx, si

    mov ah, 2
    mov al, 14

    pusha


    read_root_dir:
    popa
    pusha

    stc
    int 13h

    jnc search_dir
    call reset_floppy
    jnc read_root_dir

    jmp reboot


    search_dir:
    popa

    mov ax, ds
    mov es, ax
    mov di, buffer

    mov cx, word [RootDirEntries]
    mov ax, 0


    next_root_entry:
    xchg cx, dx

    mov si, kern_filename
    mov cx, 11
    rep cmpsb
    je found_file_to_load

    add ax, 32

    mov di, buffer
    add di, ax

    xchg dx, cx
    loop next_root_entry

    mov si, file_not_found
    call print_string
    jmp reboot


    found_file_to_load:
    mov ax, word [es:di+0Fh]
    mov word [cluster], ax

    mov ax, 1
    call l2hts

    mov di, buffer
    mov bx, di

    mov ah, 2
    mov al, 9

    pusha


    read_fat:
    popa
    pusha

    stc
    int 13h
    jnc read_fat_ok
    call reset_floppy
    jnc read_fat

    mov si, disk_error
    call print_string
    jmp reboot


    read_fat_ok:
    popa

    mov ax, 2000h
    mov es, ax
    mov bx, 0

    mov ah, 2
    mov al, 1

    push ax


    load_file_sector:
    mov ax, word [cluster]
    add ax, 31

    call l2hts

    mov ax, 2000h
    mov es, ax
    mov bx, word [pointer]

    pop ax
    push ax

    stc
    int 13h

    jnc calculate_next_cluster

    call reset_floppy
    jmp load_file_sector


    calculate_next_cluster:
    mov ax, [cluster]
    mov dx, 0
    mov bx, 3
    mul bx
    mov bx, 2
    div bx
    mov si, buffer
    add si, ax
    mov ax, word [ds:si]

    or dx, dx

    jz even


    odd:
    shr ax, 4
    jmp short next_cluster_cont


    even:
    and ax, 0FFFh

    next_cluster_cont:
    mov word [cluster], ax
    cmp ax, 0FF8h
    jae end

    add word [pointer], 512
    jmp load_file_sector


    end:
    pop ax
    mov dl, byte [bootdev]

    jmp 2000h:0000h


    ; ------------------------------------------------------------------
    ; BOOTLOADER SUBROUTINES

    reboot:
    mov ax, 0
    int 16h
    mov ax, 0
    int 19h


    print_string:
    pusha

    mov ah, 0Eh
    .repeat:
    lodsb
    cmp al, 0
    je .done
    int 10h
    jmp short .repeat

    .done:
    popa
    ret


    reset_floppy:
    push ax
    push dx
    mov ax, 0
    mov dl, byte [bootdev]
    stc
    int 13h
    pop dx
    pop ax
    ret


    l2hts:

    push bx
    push ax

    mov bx, ax

    mov dx, 0
    div word [SectorsPerTrack]
    add dl, 01h
    mov cl, dl
    mov ax, bx

    mov dx, 0
    div word [SectorsPerTrack]
    mov dx, 0
    div word [Sides]
    mov dh, dl ;e
    mov ch, al

    pop ax
    pop bx

    mov dl, byte [bootdev] ; Set correct device

    ret


    ; ------------------------------------------------------------------
    ; STRINGS AND VARIABLES

    kern_filename db "KERNEL BIN" ; این کرنل hello word که تو C نوشتم

    disk_error db "Floppy error! Press any key...", 0
    file_not_found db "kernel not found!", 0

    bootdev db 0
    cluster dw 0
    pointer dw 0


    ; ------------------------------------------------------------------
    ; END OF BOOT SECTOR AND BUFFER START

    times 510-($-$$) db 0
    dw 0AA55h


    buffer:

    ; ================================================== ================

    آخرین ویرایش به وسیله tanzadeh7 : شنبه 11 مرداد 1393 در 14:52 عصر

  2. #2
    کاربر دائمی
    تاریخ عضویت
    تیر 1393
    محل زندگی
    کرمانشاه
    پست
    232

    نقل قول: لود کرنل لینوکس

    منظورتون از بوت سکتور همون بوت لودره؟اگه بله!چرا از بوت لودر های موجود مثل گراب استفاده نمیکنید؟

  3. #3
    کاربر تازه وارد آواتار tanzadeh7
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    بوشهر
    پست
    98

    نقل قول: لود کرنل لینوکس

    نقل قول نوشته شده توسط احسان! مشاهده تاپیک
    منظورتون از بوت سکتور همون بوت لودره؟
    اره همون بوت لودر

    نقل قول نوشته شده توسط احسان! مشاهده تاپیک
    چرا از بوت لودر های موجود مثل گراب استفاده نمیکنید؟
    من میخوام بوت لودر رو خودم نوشته باشم و فقط از هسته لینوکس استفاده کنم مثل اندروید

    یه سوا دیگه هم برام پیش اومده gnome-shell از کجا شروع میشه یعنی main اون کجاست

  4. #4
    کاربر دائمی
    تاریخ عضویت
    تیر 1393
    محل زندگی
    کرمانشاه
    پست
    232

    نقل قول: لود کرنل لینوکس

    نقل قول نوشته شده توسط tanzadeh7 مشاهده تاپیک
    اره همون بوت لودر


    من میخوام بوت لودر رو خودم نوشته باشم و فقط از هسته لینوکس استفاده کنم مثل اندروید

    یه سوا دیگه هم برام پیش اومده gnome-shell از کجا شروع میشه یعنی main اون کجاست
    جریان اندروید کلا جدا هستش.(با این روش نمیشه.)
    منظورتون رو از اینکه گنوم شل از کجا شروع میشه متوجه نمیشم.گنوم شل رو دیگه خود لینوکس اجرا میکنه.در واقع محیط گرافیکی جدا هستش.;)

    به هر حال اگر میخواید یه توزیع لینوکس از پایه بسازید(و نه ریمیستر) باید اطلاعات بیشتری داشته باشید،میتونید کتاب LFS رو مطالعه کنید.

  5. #5
    کاربر تازه وارد آواتار tanzadeh7
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    بوشهر
    پست
    98

    نقل قول: لود کرنل لینوکس

    نقل قول نوشته شده توسط احسان! مشاهده تاپیک
    جریان اندروید کلا جدا هستش.(با این روش نمیشه.)
    منظورتون رو از اینکه گنوم شل از کجا شروع میشه متوجه نمیشم.گنوم شل رو دیگه خود لینوکس اجرا میکنه.در واقع محیط گرافیکی جدا هستش.;)

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

  6. #6

    نقل قول: لود کرنل لینوکس

    برای اینکار باید خیلی بیشتر ار اینها اطلاعات داشته باشید.

    مورد اول اینه که بوت لودر باید مولتی بوت باشه تا بتونه هسته‌ ( و نه گنوم) رو لود کنه. و بعد با کد بوت لودر بالا زیاد نمی تونید پیش برید. الان قضیه بوت لودرها به مراتب پیچیده تر از کدهای بالا هست.

    ساخت توزیع گنو/لیتوکس کار خیلی سختی نیست میخوام یه چیز سخت تر باشه یعنی فرمت خاص خودش رو شناسایی کنه و نرم افزار های لینوکس روش نصب نشه قبلم گفتم یه چیزی شبیه اندروید
    برای اینکار پلان خاصی دارید؟ یا طرح اولیه ای توی ذهنتون هست؟ میدونید باید چی کار کنید؟

    یه سوا دیگه هم برام پیش اومده gnome-shell از کجا شروع میشه یعنی main اون کجاست
    ۱. گنوم برنامه هست. نه هسته.
    ۲. شما نباید دنبال تابع main باشید اگر هم پیداش کنید به درتون نمی خوره.
    ۳. برای اجرای برنامه احتیاج به entry point برنامه هست نه تابع main. یکی از مسئولیتهای نقطه ورود فراخوانی تابع main ( در اکثر برنامه های C/C++‎ ) هست.

  7. #7
    کاربر تازه وارد آواتار tanzadeh7
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    بوشهر
    پست
    98

    نقل قول: لود کرنل لینوکس

    نقل قول نوشته شده توسط pswin.pooya مشاهده تاپیک

    مورد اول اینه که بوت لودر باید مولتی بوت باشه تا بتونه هسته‌ ( و نه گنوم) رو لود کنه. و بعد با کد بوت لودر بالا زیاد نمی تونید پیش برید. الان قضیه بوت لودرها به مراتب پیچیده تر از کدهای بالا هست.
    برای ساخت سیستم عامل موبایل فکر نکنم نیازی به مولتی پوت نیست.
    نقل قول نوشته شده توسط pswin.pooya مشاهده تاپیک
    ۱. گنوم برنامه هست. نه هسته.
    ۲. شما نباید دنبال تابع main باشید اگر هم پیداش کنید به درتون نمی خوره.
    ۳. برای اجرای برنامه احتیاج به entry point برنامه هست نه تابع main. یکی از مسئولیتهای نقطه ورود فراخوانی تابع main ( در اکثر برنامه های C/C++‎‎ ) هست.
    میدونم که گنوم نرم افزار است من میخوام از گنوم برای محیط گرافیکی استتفاده کنم.


    چجوری باید linux kernel رو به حافظه لود کنم و از گنوم به عنوان محیط گرافیکی اون استفاده کنم

  8. #8

    نقل قول: لود کرنل لینوکس

    برای ساخت سیستم عامل موبایل فکر نکنم نیازی به مولتی پوت نیست.
    میدونی مولتی بوت چیه؟!

  9. #9
    کاربر تازه وارد آواتار tanzadeh7
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    بوشهر
    پست
    98

    نقل قول: لود کرنل لینوکس

    نقل قول نوشته شده توسط pswin.pooya مشاهده تاپیک
    میدونی مولتی بوت چیه؟!
    یک روش برای داشتن چندین سیستم عامل بر روی یک کامپیوتر

  10. #10

    نقل قول: لود کرنل لینوکس

    یک روش برای داشتن چندین سیستم عامل بر روی یک کامپیوتر

    نه، یه استاندارد برای بوت هسته هست که یکسری داده رو در اختیار هسته برای بوت شدن قرار میده. این استاندارد همچنین مواردی مثل فایلهای مورد نیاز هسته و ... رو قبل از اجرای هسته داخل حافظه قرار میده تا هسته بتونه از اونها استفاده کنه. که باعث میشه به شدت از پیچیدگی بوت هسته جلوگیری به عمل بیاد و البته کد هسته هم قابلیت پورت بیشتری رو پیدا کنه.

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

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

تاپیک های مشابه

  1. حرفه ای: مشکل در لود کردن یک مادول به کرنل لینوکس
    نوشته شده توسط sheervin در بخش توسعه‌ی هسته‌ی سیستم عامل
    پاسخ: 1
    آخرین پست: سه شنبه 26 آذر 1392, 15:03 عصر
  2. سوال: کرنل لینوکس
    نوشته شده توسط jeson_park در بخش توسعه‌ی هسته‌ی سیستم عامل
    پاسخ: 1
    آخرین پست: پنج شنبه 17 بهمن 1387, 10:26 صبح
  3. سورس کد کرنل لینوکس
    نوشته شده توسط tazekaram در بخش توسعه‌ی لینوکس و نرم افزارهای آزاد
    پاسخ: 1
    آخرین پست: یک شنبه 21 مرداد 1386, 23:34 عصر
  4. نقطه ضعف در کرنل لینوکس ( 2.4 )
    نوشته شده توسط Inprise در بخش امنیت در شبکه
    پاسخ: 2
    آخرین پست: جمعه 01 اسفند 1382, 08:01 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •