חיקוי לינוס טורבלדס: צור מערכת הפעלה משלך מאפס (I)

ראשית, הגיב שזו המאמר הראשון שלי ושאני מקווה שכולכם אוהבים את זה.

לינוס טורוולס מאושר

En esta serie vamos a emular a לינוס טורבאלדס, אנו הולכים ליצור את מערכת ההפעלה שלנו מ- 0. בפרק הראשון הזה אנו הולכים לראות את האתחול ונשים טקסט על המסך מהליבה שלנו.

En mi caso el sistema operativo se llama NextDivel. ההחלטה הראשונה שעלינו לקבל ברגע שנשקול את מערכת ההפעלה היא מה עומד להיות bootloader?

ישנן מספר גרסאות, ואנחנו אפילו יכולים ליצור אחת בעצמנו; עם זאת במדריך זה אשתמש GRUBכי רובם יודעים עליו פחות או יותר משהו. אנו יוצרים תיקיה שתהיה שורש מערכת ההפעלה שלנו ושם אנו יוצרים את תיקיית / boot / grub

mkdir nextroot && cd nextroot

mkdir -p boot/grub

שם אנו יוצרים את קובץ grub.cfg באופן הבא:

menuentry "NextDivel" {
echo "Booting NextDivel"
multiboot /next/START.ELF
boot
}

בקובץ זה ראינו כיצד GRUB יטען את הגרעין שלנו, במקרה זה, ב- /next/START.ELF. עכשיו עלינו ליצור את הגרעין שלנו.

בשביל זה נצטרך את GCC y גז (מרכיב הפרויקט גנה, בדרך כלל מגיע עם ה- gcc). אז אנחנו הולכים ליצור את הגרעין.

ראשית אנו יוצרים קובץ שנקרא kernel.asm. קובץ זה יכיל את נקודת ההתחלה של הליבה שלנו ויגדיר גם את ריבוי האתחול (תכונה של כמה מאגרי Boot Boot כגון GRUB). התוכן של kernel.asm יהיה:

.text
.globl start
start:
jmp multiboot_entry
.align 4
multiboot_header:
.long 0x1BADB002
.long 0x00000003
.long -(0x1BADB002+0x00000003)
multiboot_entry:
movl $(stack + 0x4000), %esp
call NextKernel_Main
loop: hlt
jmp loop
.section ".bss"
.comm stack,0x4000

כל מה שקשור למולטיבוט הוא פשוט לעקוב אחר המפרט לא אחר. הכל יתחיל בהתחלה, זה יקרא multiboot_entry, הגדרנו את כותרת multiboot ב -4 k הראשונה ונשים אותו (עם movl).

בהמשך אנו קוראים ל- NextKernel_Main שזו פונקציית ה- kernel C שלנו. בלולאה אנו עוצרים לעצור את המחשב. זה קומפילציה עם:

as -o kernel.o -c kernel.asm

עכשיו אנחנו נכנסים לתכנות ב- C. אתם תחשבו שעכשיו הכל חתיכת עוגה, שמנו printf en ראשי וזהו, עשינו את זה.

Pues no, ya que הדפס y ראשי הם פונקציות המוגדרות על ידי מערכת ההפעלה, אך אנו יוצרים אותן! אנו יכולים להשתמש רק בפונקציות שאנו מגדירים בעצמנו.

בפרקים מאוחרים יותר אדבר על אופן הכנת ספריית C משלנו (glibc, bionic, newlibc) אך מדי פעם. דיברנו שאנחנו רוצים לשים טקסט על המסך, ובכן נראה איך אנחנו עושים את זה.

ישנן שתי אפשרויות, האחת היא להתקשר ל BIOS ואחר הוא לנהל ישירות את זיכרון המסך. אנחנו הולכים לעשות את האחרון כי זה ברור מ- C וזה גם יאפשר לנו לעשות את זה כשנכנס למצב מוגן.

אנו יוצרים קובץ בשם NextKernel_Main.c עם התוכן הבא:

int NextKernel_Main()
{
char *str = "NextDivel says Hello World", *ch;
unsigned short *vidmem = (unsigned short*) 0xb8000;
unsigned i;
for (ch = str, i = 0; *ch; ch++, i++)
vidmem[i] = (unsigned char) *ch | 0x0700;
return 0;
}

בעזרת זה אנו מטפלים ישירות בזיכרון VGA ודמות אחר דמות אנו כותבים אותה. אנו מרכיבים על ידי השבתת ה- stdlib:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding

אם הצלחת להגיע עד כה, תרצה לנסות את מערכת ההפעלה החדשה שלך, אך עדיין לא סיימנו. אנו זקוקים לקובץ קטן שיאמר למהדר היכן בקובץ להשאיר כל קטע. זה נעשה בעזרת סקריפט מקשר. אנו יוצרים את link.ld:

ENTRY(start)
SECTIONS
{
. = 0x00100000;
.multiboot_header :
{
*(.multiboot_header)
}
.text :
{
code = .; _code = .; __code = .;
*(.text)
. = ALIGN(4096);
}
.data :
{
data = .; _data = .; __data = .;
*(.data)
*(.rodata)
. = ALIGN(4096);
}
.bss :
{
bss = .; _bss = .; __bss = .;
*(.bss)
. = ALIGN(4096);
}
end = .; _end = .; __end = .;
}

בעזרת זה אנו מגדירים את המיקום של כל קטע ואת נקודת הכניסה, התחל, שהגדרנו ב- kernel.asm. כעת נוכל לאחד את כל הרקחות הללו:

gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc

כעת אנו מעתיקים את START.ELF אל / הבא בתיקייה שלנו המדמה את שורש מערכת ההפעלה שלנו. אנו עוברים לתיקיית הבסיס של מערכת ההפעלה החדשה שלנו עם המסוף ומוודאים שיש שני קבצים: אחד /boot/grub/grub.cfg ואחר /next/START.ELF.

אנחנו הולכים לספרייה העליונה וקוראים לכלי שירות ליצירת ISO עם GRUB שנקרא grub-mkrescue

grub-mkrescue -o nextdivel.iso nextroot

לאחר שנעשה זאת יהיה לנו ISO. ניתן לפתוח ISO זה במחשבים x86 (גם 64 ביט) ומכונות וירטואליות. כדי לבדוק את זה, אני הולך להשתמש QEMU. אנו קוראים QEMU משורת הפקודה:

qemu-system-i386 nextdivel.iso

יתחיל SeaBIOS ובהמשך יהיה לנו GRUB. בהמשך אם הכל תקין נראה את הביטוי שלנו.
אתה תחשוב שזה קשה, אני עונה לך, כן זה.

באמת ליצור מערכת הפעלה זה קשה וזו לא עושה שום דבר מועיל. בפרקים עתידיים נראה כיצד להתמודד עם צבעים על המסך, להזמין זיכרון ואם אוכל, כיצד להשיג נתונים מהמקלדת.

אם מישהו לא רוצה להעתיק הכל כאן, יש לי מאגר בכתובת GitHub (משוכלל יותר) עם מערכת ההפעלה NextDivel. אם אתה רוצה לקמפל NextDivel אתה רק צריך git ו- cmake:

git clone https://github.com/AdrianArroyoCalle/next-divel
cd next-divel
mkdir build && cd build
cmake ..
make
make DESTDIR=next install
chmod +x iso.sh
./iso.sh
qemu-system-i386 nextdivel.iso

אני ממליץ לך לשתף פעולה ב- NextDivel אם יש לך זמן ורצון ליצור מערכת הפעלה. אולי אפילו עדיף על לינוקס ... הזמן יגיד.


תוכן המאמר עומד בעקרונותינו של אתיקה עריכתית. כדי לדווח על שגיאה לחץ כאן.

85 תגובות, השאר את שלך

השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   אלב דיג'ו

    :O

    1.    מריאנוגאודיקס דיג'ו

      טורוואלדס לקח את מערכת ההפעלה Minix (הנגזרת מ- UNIX) לאנדרו ס 'טננבאום ושיפר אותה.

      טננבאום ניהל קרב עם לינוס, הם העליבו זה את זה. טננבאום אומר כי המיקרו-קרנל הוא העתיד (HURD, חרוט חדש של מיניקס מיקרו-קרנל).

      http://www.taringa.net/posts/linux/17215999/Linux-vs-Hurd-Kernel-Monolitico-vs-Microkernel.html

  2.   אליוטיים 3000 דיג'ו

    זה היה הפוסט הכי טוב שראיתי עד כה בבלוג הזה. אני כבר רוצה לדעת מה עוד לעשות.

  3.   קרלוס גודה דיג'ו

    להתרשם

  4.   axl דיג'ו

    ממש מרשים !!

  5.   רוקונלינוקס דיג'ו

    FUUUUUUUUA!
    זה ההודעה החנון ביותר שראיתי מעולם. מזל טוב אדריאן, מאמר זונה! היפר מעניין !!! 🙂

    1.    חואקין דיג'ו

      אני מסכים. אני מתאר לעצמי את המצב הזה:
      משתמש כוח GNU / Linux (עם פרצוף שמח):
      "אני כבר יודע להרכיב את הגנטו שלי"

      חנון (בבוז): «pff, יצרתי את ההפצה שלי ...»

      1.    desikoder דיג'ו

        כן, אני יכול ליצור דיסטרו לינוקס משלי. למעשה בה אני מפתח initramfs וליבה לינוקס מוטבע. זה לא אותו דבר ליצור מערכת הפעלה מאשר הפצת לינוקס. הראשון הוא הרבה יותר קשה, כמעט בלתי אפשרי, השני, כפי שאמרת, יכול להיות כל דבר, אפילו אובונטו עם הלוגו שהשתנה xD. אז הייתי משאיר את זה ככה:

        משתמש כוח GNU / Linux (עם פרצוף שמח)
        - אני כבר יודע להרכיב את הגנטו שלי

        חצי-חנון
        - Pff, עקבתי אחר לינוקס מאפס ועשיתי דיסטרו משלי

        חנון (בגישה מבזה)
        - pff, כי תכננתי גרעין במאסף וב- C

        Saludos!

  6.   קרונוס דיג'ו

    זה מעניין בעיניי, בהמתנה לפרקים הבאים.

  7.   אבימלמרטל דיג'ו

    ראיתי הדרכה זו לפני זמן מה, היא מיועדת ל- C ++
    https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System

    1.    אדריאן ארויו סטריט דיג'ו

      תודה על הקישור, אסתכל עליו.

  8.   חוסה ג'וקום דיג'ו

    אני רוצה מערכת הפעלה תואמת 100% לגרפיקה של AMD: /

    1.    איוואן לינוקס דיג'ו

      Windows

      1.    חוסה ג'וקום דיג'ו

        hahaha ב- Windows Catalyst אין תמיכה ב- OpenGL, אם כי בלינוקס אני לא יכול להשתמש בכל הכוח הגרפי שאמשיך לחכות מה יקרה!

        1.    beny_hm דיג'ו

          רק המתן עד שסתום ימחק את השוק

  9.   KZKG ^ גאארה דיג'ו

    תרומה קסומה, מושלמת, מעולה, זה נראה כמו סדרת הודעות נהדרת 🙂

  10.   O_Pixote_O דיג'ו

    בואה, אני רוצה לדעת כיצד לתכנת לעזור לך, פשוט כדרך לתרגל עם הידע שאתה לומד, ואחד עוזר. לעת עתה אני משאיר לך את המוטו למשוך תשומת לב לפרויקט ברגע שתסיים אותו "השתמש ב- NextDivel, פורנו נראה זהה (או יותר טוב).", אתה תטאטא את xD.

  11.   שם זה לא נכון דיג'ו

    Mooooooolaaa !!!!

  12.   נורדרי דיג'ו

    מאמר טוב מאוד, אבל פשוט סקרן מדוע לא עקבתם אחר פרויקט Linux From Scratch?

    לגבי

    1.    אדריאן ארויו סטריט דיג'ו

      ובכן, לינוקס מ- Scratch בסדר, ותוכלו לדעת שהיא שלכם, אבל היא באמת מכנית מאוד:
      -הורד גופנים
      -תקן אותם
      -לְלַקֵט
      -להתקין
      -הַבָּא
      כאן, למרות שהתוצאה בסופו של דבר גרועה יותר, אתה יכול לומר שבדקת את כל הקבצים.

    2.    desikoder דיג'ו

      כפי שעולה מבהערתי הקודמת, מכיוון שאין בה אותה רמת מורכבות. יתר על כן, לינוקס מאפס אינה באמת, בניגוד לשמה, יצירת מערכת מאפס. יצירת מערכת מאפס היא לתכנת אותה בעצמך, לכתוב את הגרעין שלך, לא את הגרעין של לינוקס, אם אפשר אפילו את מטען האתחול שלך במקום גרוב, lilo, syslinux וכו '. למרות ש- LFS הוא לא דבר של מה בכך והוא מורכב למדי, הוא אפילו לא מתקרב לתכנת גרעין משלך ...

      בנוסף, אני מסכים עם אדריאן ארויו קאלה שהוא מכני מדי, קראתי את זה מתישהו ובסופו של דבר אתה מוותר בדף השישי, הם גם אומרים לך להשתמש באילו גרסאות החבילות כי אחרת ההוראות לא עובדות (זה מראה על חוסר הגמישות, לדעתי). אני חושב שעדיף שיהיה לך משהו מהרעיון שלך, לאסוף את החבילות שאתה רוצה, אפילו לתכנת כמה, להרכיב גרעין לינוקס ובשלום.

      Saludos!

  13.   עוגייה דיג'ו

    uuuoooohh !! מעולם לא תפסתי פוסט כמו זה.
    אנא המשך 😀

  14.   linux_user דיג'ו

    אני לא יודע מה לא בסדר:

    שגיאה: לא נמצא כותרת רבת אתחול.
    שגיאה שעליך לטעון את הליבה תחילה

    1.    אדריאן ארויו סטריט דיג'ו

      אם זו נחמה, עשיתי את אותה הטעות. נסה להשתמש במקורות הנמצאים ב- GitHub, שם השגיאה כבר נפתרה. בכל מקרה אני חושב שאם תשנה את קו grub.cfg מ- "multiboot /next/START.ELF" ל- "kernel /next/START.ELF" זה עשוי לעבוד. אני לא יודע בדיוק.

      1.    מקלאטנו דיג'ו

        קודם כל כניסה מפוארת 🙂
        אני נתקל באותה בעיה בטעינת הגרעין מ- grub. אפילו שימוש במקורות GitHub או שינוי ריבוי אתרים לליבה ...

        שגיאה: לא נמצא כותרת רבת אתחול.
        שגיאה: אין גרעין טעון

        1.    אדריאן ארויו סטריט דיג'ו

          האם אתה משתמש בקלאנג כמהדר? שנה אותו עבור ה- GCC
          האם זכרת להשתמש בתסריט המקשר? זה הכרחי כדי שהמקשר (ld במקרה שלנו) יידע איפה בקובץ הוא הולך לשים כל דבר. במקרה זה כותרת רבת-הרגל חייבת להיות בהתחלה.
          האם אתה משתמש במערכת CMake? אם אתה משתמש בזה אני חושב שהוא לא נכשל.
          אם זה לא עובד בשבילך, אנסה למצוא פיתרון אחר.

  15.   קורט דיג'ו

    [+100]
    פשוט נהדר !!!

  16.   אינו נראה דיג'ו

    זה ממש מגניב 🙂

  17.   טנרקס דיג'ו

    אני מוריד את הכובע. פוסט מרשים. מזל טוב.

  18.   איש דיג'ו

    וואהה!
    זה יהיה נהדר אם אתה יכול לפתוח יישומים שנעשו ב- HTML5 ו- Javascript מבלי שתצטרך להשתמש בדפדפן, האם זה אפשרי?
    אני מדבר עליהם שהם כמו יישומים מקוריים.
    אז יהיה קל לתכנת את מערכת ההפעלה הזו 😀

    1.    אדריאן ארויו סטריט דיג'ו

      במקרה זה אני לא מתכוון לעשות את זה כי זה לוקח הרבה יותר עבודה מאחוריה אבל יש מערכת הפעלה בשם "זה" שעושה את מה שאתה אומר. למעשה שורת הפקודה היא JavaScript וחלונות מצוירים באמצעות פונקציות JavaScript Canvas. מהנדסי נינטנדו עשו זאת ועכשיו זה קוד פתוח.

      http://code.google.com/p/es-operating-system/

      1.    איש דיג'ו

        ואלה, תודה על המידע 😀
        אני אסתכל

  19.   פטודקס דיג'ו

    מי שיכול ליצור מערכת הפעלה משלו יכול למות בשלווה, שכן הרמה האינטלקטואלית שהוא צריך להשיג איתה; זה גורם לך לוותר על גן עדן או גיהינום.
    חתיכת פרסום.

    1.    מיגל דיג'ו

      עד כה לא ידוע שאף אחד לא ייצר רק משהו שאפשר לומר שהוא מערכת הפעלה ראויה העשויה מאפס, אפילו לא לינוקס טורוואלדס כמו שאתה אומר בהתחלה, מכיוון שהדבר התחיל ממקורות יוניקס וכל השאר מחובר במשותף ליותר מאדם אחד, החיים קצרים מאוד והתחלה מההתחלה אינה מתקבלת על הדעת עבור אף אחד, גם אם רוצים להפך, ניתן להפגין אותם בטעויות רבות שנעשו בהעתקה והדבקה על ידי לינוקס טורוואלדס

      1.    סקרמיגליונה דיג'ו

        מקורות יוניקס סגורים, השימוש במיניקס ... שזה משהו אחר.

      2.    פליפה רוביינה דיג'ו

        ואלה שעשו QDOS מה?
        התבססו על משהו?

  20.   טסלה דיג'ו

    ממה שאני רואה, למי אין מערכת הפעלה משלהם זה בגלל שהם לא רוצים, חחחחח.

    עכשיו ברצינות, מעניין מאוד! הרבה מעבר לידיעותי המוגבלות בתכנות, אך את חלקי הסדרה הזו אקרא בשקיקה.

    תודה על הפוסט!

  21.   מנואל ר דיג'ו

    השארת אותי עם פנים של O_O ... ללא כוונה לזלזל בתרומות של אף אחד, זה הכי "מקצוען" שראיתי לאחרונה. ברכות.

  22.   aitor_cz דיג'ו

    מאמר טוב מאוד, אדריאן. המשך בבקשה…

  23.   mj דיג'ו

    אתה צוחק ביום האפריל? אל תהיה מתכוון "לחקות את לינוס טורוואלדס: צור מערכת הפעלה משלך מאפס." אני לא חושב שזה קשה למי שעוסק בקריירה במכון טכנולוגי או באוניברסיטה כלשהי; אבל מבחינתי אני קשת מתחיל (יש כאלה שקוראים לנו "נוב" אבל אני מחשיב את עצמי כמתחיל עצלן יותר) שנשמע כמו לא לעלות על היבשה. בכל מקרה, מאמר זה יוצר המון סקרנות וללא הערצה והתייחסות כפולה לעורך שלו, ברכות; הדבר הראשון שאעשה הוא לנסות להבין לפחות מעט מהחומר היקר הזה.
    תודה אדריאן ארויו קייל, עבודה מעולה ומסירת ידע אצילית.

  24.   בלייר פסקל דיג'ו

    LEL הודעה מעולה, המשך כך.

  25.   F3niX דיג'ו

    איזה פוסט נהדר, זה מה שהתגעגעתי מלינוקס. נִפלָא.

  26.   אוֹדֶם דיג'ו

    פוסט נהדר, תודה רבה.
    לא הבנתי מה עושה הקובץ link.ld, מישהו יכול להסביר לי את זה?

    1.    אדריאן ארויו סטריט דיג'ו

      הקובץ link.ld אומר למקשר (במקרה זה ld) היכן כל חלק בקוד צריך להיות בקובץ שהתקבל. אנו מגדירים גם את נקודת הכניסה שכן מאחר ואין לנו מערכת הפעלה אנו לא יכולים להשתמש ב- main כתוכנית רגילה, במקרה זה אנו בוחרים בפונקציית ההתחלה.

  27.   מקסי דיג'ו

    נהדר כל ההודעה שלך! מחכה ל -7! מה אם יש לי ספק, למשל, אם אני רק רוצה להפעיל אלגוריתם, ללא מערכת הפעלה, איך אוכל לדעת במה אוכל להשתמש ובמה לא C?

    1.    אדריאן ארויו סטריט דיג'ו

      אם אתה משתמש בזה ככה, לא תוכל להשתמש בשום דבר מ- stdlib, וזה כמעט מה שכולם משתמשים בו (ללא malloc, חינם, printf, scanf, strcmp וכו '). הכל צריך להיות מיושם ישירות מהזיכרון או מה- ASM. אולי בפרק גבוה יותר אני אראה לך כיצד להתקין ספריית C למערכת ההפעלה. אם אתה משתמש ב- C ++ אתה לא יכול להשתמש בחריגים ובמפעילים החדשים והמחקים (ובוודאי יותר).

    2.    סוויכר דיג'ו

      אני חושב זה זה יכול לתת לך מושג טוב יותר כיצד לעשות זאת.

  28.   אסטבן דיג'ו

    שלום, לפני כ -5 שנים עקבתי אחר פרסום דומה ופיתחתי מיקרו-קרנל שמתחיל באותה צורה, יש לו כמה היבטים שיש לשפר, אבל זה עשוי לעניין אותך, הוא פועל במצב מוגן, מבצע ריבוי משימות ומבצע וירטואליזציה של זיכרון, לאחרונה אני עבד על זה מנהל התקן דיסק וכונן תקליטורים כדי להפוך אותו להתקנה ולא רק להריץ על תקליטור חי ... ברכות.

  29.   יוהאן דיג'ו

    יקר, יש לי שגיאה בעת ביצוע הפקודה:
    gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC-freestanding -lgcc

    link.ld: שגיאת תחביר 5
    collect2: שגיאה: ld החזיר סטטוס יציאה אחד

    link.ld
    . = 0x00100000;
    .multiboot_header: {
    * (. multiboot_header)
    }

    בשורה 5 אני לא רואה את השגיאה, האם מישהו אותו דבר?

    אני עובד עם דפיאן וירטואלי וירטואלי ב- virtualbox

    1.    ג'וליאן רייס אסקריגס דיג'ו

      תוסיף את ה ";" בסוף * (. multiboot_header)

  30.   אריק אורלנה רומרו דיג'ו

    יוזמה מצוינת, אני בהחלט אעקוב אחר פרקי הפוסט הזה, אני מתכוון ללמוד ממנו הרבה. תודה רבה שלקחתם את הזמן ללמד אותנו. פרט בודד בהקשר זה, יש לציין כי לינוס טורוואלדס אינו היוצר של מערכת הפעלה כלשהי, הוא יצר את הליבה של מערכת GNU / Linux (זו ששימשה במערכת הפעלה אחרת), שהיא עדיין ראויה, אך חשוב לתת לריצ'רד סטולמן קרדיט על יצירת מערכת ההפעלה.

    תודה רבה על התרומה ואני מקווה שתשקול את ההתבוננות שלי.

  31.   ג'וליאן רייס אסקריגס דיג'ו

    אני מתעסק בנושא כבר זמן מה, התעניינתי ברגע שקראתי את הכותרת. אבל המסר ממשיך להתקבל

    שגיאה: לא נמצא כותרת רבת אתחול.
    שגיאה שעליך לטעון את הליבה תחילה

    העליתי את מה שאני לוקח ל- repo ב- github https://github.com/rkmax/GenyOS

    1.    מרטין וילאלבה דיג'ו

      אותו דבר קורה לי. האם מצאת את הפיתרון?

  32.   קרלוס דיג'ו

    שאלה שהתחלתי להציג את התחביר ושורת התפריטים אומרת לי לא נמצא פקודה מי יכול להגיד לי למה
    זה מה שאני עושה

    BLACK @ BLACK-pc: ~ / blackroot $ menuentry «NextDivel» {
    menuentry: הפקודה לא נמצאה

    1.    אדריאן ארויו סטריט דיג'ו

      את התוכן של תוכן זה אין להזין בשורת הפקודה, אלא בקובץ שאתה יוצר בשם grub.cfg

  33.   נודטינו דיג'ו

    מאמר מצוין, תודה!

  34.   דוד דיג'ו

    מַרהִיב…!! זה בדיוק כמו החוליה החסרה.

  35.   r.garciag דיג'ו

    אני אוהב את המדריכים שלך לחיקוי LInus Torvalds, אבל יש צעד אחד שאני לא מבין, זה:
    כעת אנו מעתיקים את START.ELF אל / הבא בתיקייה שלנו המדמה את שורש מערכת ההפעלה שלנו. אנו עוברים לתיקיית הבסיס של מערכת ההפעלה החדשה שלנו עם המסוף ומוודאים שיש שני קבצים: אחד /boot/grub/grub.cfg ואחר /next/START.ELF.

    אנו עוברים לספריה העליונה וקוראים לכלי שירות ליצירת ISO עם GRUB הנקרא grub-mkrescue

    מישהו יכול להסביר לי את זה: עמ '

    1.    אדריאן ארויו סטריט דיג'ו

      פשוט כדי ליצור מינימום ISO ש- GRUB יכול לטעון אנו מעתיקים את הגרעין אליו (/ של ה- ISO, כל תיקיה) / next/START.ELF ואת קובץ התצורה של GRUB אל (/ של ה- ISO, כל תיקיה) / אתחול / grub / grub.cfg. ברגע שזה נעשה, עדיין לא התקנו את GRUB ב- ISO ויש כלי שמייצר את ה- ISO מתיקיה ומתקין את GRUB שנקרא grub-mkrescue. ואז סוף סוף נגיע ל- ISO אתחול שהותקן בו GRUB, שיכול לקרוא את התצורה כדי לבצע בהמשך את START.ELF בצורה נכונה. אני לא יודע אם הסברתי את עצמי, אבל מה שאנחנו עושים זה סוג של מערכת קבצים כוזבת שאיתה אנחנו יוצרים ISO.

  36.   מיגל ג'וזה גווארה אטנסיו דיג'ו

    בואניסימו

  37.   מייקל מורנו דיג'ו

    ובכן, באמת תסתכלו על מערכת חדשה לא כל כך הרבה אבל אם משפרים את לינוקס למשל יוצרים גרעין לינוקס עם רכיב שרת שמשמש כמיקרו גרעין אם רוצים, כלומר מבנה אקסו עם התנהגות מיקרו גרעין שיהיה סופר ולינוקס.

    הדבר השני הוא שאני לא מומחה בתכנות, רק כמה ++ C גביני ואיזה ג'אווה, זה יספיק לי לתת לתוכנת הליבה של לינוקס מודול, לנקות אותו, לשנות אותו וכו '.

  38.   53. חורף דיג'ו

    ללא ספק אני כבר צריך לעשות בחופשה.

  39.   פרמין דיג'ו

    זו טובה ובאיזו תוכנית אתה מעצב ומקודד אותה
    אנא תן לי את התשובה

  40.   DarkMind דיג'ו

    בעת הידור מהגיט שלך אני מקבל:

    [jmponce @ jar build] $ cmake ..
    - יצירת ספריית NextRoot
    - יצירת תסריט ISO
    הפוך את DESTDIR = ההתקנה הבאה
    ./iso.sh
    - נמצא דו חמצן: / usr / bin / doxygen (נמצא גרסה "1.8.9")
    - הגדרת התצורה שנעשתה
    - ייצור נעשה
    - קבצי בנייה נכתבו אל: / home / jmponce / next-divel / build
    [jmponce @ jar build] $ make
    סריקת תלות של יעד START.ELF
    [7%] בניית אובייקט ASM-ATT src / CMakeFiles / START.ELF.dir / start / boot.asm.o
    [14%] בניית אובייקט CXX src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o
    [21%] בניית אובייקט CXX src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o
    [28%] בניית אובייקט CXX src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o
    [35%] בניית אובייקט CXX src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o
    [42%] בניית אובייקט CXX src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o
    [50%] בניית אובייקט CXX src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o
    [57%] בניית אובייקט CXX src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
    [64%] בניית אובייקט CXX src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o
    [71%] בניית אובייקט CXX src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o
    [78%] בניית אובייקט CXX src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o
    [85%] בניית אובייקט CXX src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o
    [92%] בניית אובייקט CXX src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o
    [100%] בניית אובייקט CXX src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o
    קישור ההפעלה CXX START.ELF
    / usr / bin / ld: לא ניתן לתאם /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a בזמן שאתה מחפש -lgcc
    / usr / bin / ld: לא מוצא -lgcc
    collect2: שגיאה: ld החזיר את מצב היציאה 1
    src / CMakeFiles / START.ELF.dir / build.make: 402: הוראות כושלות עבור היעד 'src / START.ELF'
    הפוך [2]: *** [src / START.ELF] שגיאה 1
    CMakeFiles / Makefile2: 106: כשל בהוראות היעד 'src / CMakeFiles / START.ELF.dir / all'
    הפוך [1]: *** [src / CMakeFiles / START.ELF.dir / all] שגיאה 2
    Makefile: 117: כישלון הוראות לכוון 'הכל'
    make: *** [הכל] שגיאה 2

    1.    אדריאן ארויו סטריט דיג'ו

      נראה כי השגיאה אינה מצליחה למצוא את llibgcc מכיוון שיש לך את גרסת 64 הסיביות וכרגע מערכת הבנייה נאלצת להשתמש ב 32 סיביות. עליך להתקין חבילת תאימות במכשיר שלך או יותר טוב, השתמש במערכת 32 סיביות.

      1.    רונאלדו רודריגס דיג'ו

        יש לי 32 ביט ואני מקבל את אותה שגיאה, האם אתה מתכוון למערכת ההפעלה או לארכיטקטורה? שלי הוא 64 סיביות, אבל אני משתמש באובונטו 32 סיביות, אל תשאל, בעיות כלכליות, עם זה אני אומר הכל.

  41.   חורחה דיג'ו

    נושא מצוין, מחכה להיקף גדול יותר. בברכה

  42.   Jhon דיג'ו

    נהדר אני מקווה לעוד

  43.   סויד פרז דיג'ו

    שלום, אני שגריר צעיר שרוצה ליצור מערכת הפעלה שתומכת בכל התוכניות והפלטפורמות כדי שמפתחים לא יצטרכו להחזיק במחשבים מכונות או יישומים או תוכנות חזקים.
    בגלל זה אני מעוניין בהודעה זו, אך כשאני מוריד את git שלך או מנסה ליצור אותו, הכל הולך כשורה עד שאבצע את הפקודה ./iso.sh או grub-mkrescue -o nextdivel.iso הבא אתה מקבל את השגיאה הזו

    "Grub-mkrescue: אזהרה: ה- xorriso שלך אינו תומך ב" – grub2-boot-info". חלק מהתכונות הושבתו. השתמש ב- xorriso 1.2.9 ואילך.
    grub-mkrescue: אזהרה: ה- xorriso שלך אינו תומך ב- "–grub2-boot-info". תמונת הליבה שלך גדולה מדי. אתחול הדיסק הושבת. השתמש ב- xorriso 1.2.9 ואילך .. »
    באמת שאין לי מושג מכיוון שאני יודע הרבה על יישומים וקורים אבל אני לא יודע כלום על גרוב

    1.    אדריאן ארויו סטריט דיג'ו

      יתכן שתצטרך לעדכן את תוכנית xorriso בהפעלה שלך. באיזה distro וגרסה אתה משתמש?

      1.    סויד פרז דיג'ו

        אני משתמש ב- xubuntu 14.04lts ומנסה להריץ xorriso אבל הקליפה אומרת לי שהיא לא יכולה למצוא את זה ואני מקבל apt-get להתקין xorriso אם כי ציפיתי בכנות לתגובה מסוימת מכיוון שהיה לי ניסיון רע בהתקנת דברים שאינני מכיר בלינוקס hehe . אני אעדכן את זה עכשיו ואגיד לך מה קרה

      2.    אדריאן ארויו סטריט דיג'ו

        ואז להתקין את xorriso ממרכז התוכנה או פשוט מהמסוף לעשות "sudo apt-get install xorriso"

      3.    סויד פרז דיג'ו

        כבר עשיתי את כל מה שאמרת לי ועם git וגם שלי אני מקבל את xorriso 1.3.2 הזה: מניפולטור מערכת הקבצים RockRidge, פרויקט libburnia.

        כונן הנוכחי: -outdev 'stdio: nextdivel.iso'
        זרם מדיה: קובץ stdio, ניתן לכתוב עליו
        סטטוס מדיה: ריק
        סיכום מדיה: 0 הפעלות, 0 חסימות נתונים, 0 נתונים, 1901 מ 'בחינם
        נוסף לתמונת ISO: מדריך '/'='/tmp/grub.OEqSzV'
        xorriso: עדכון: 546 קבצים נוספו בשנייה אחת
        xorriso: FAILURE: לא יכול לקבוע תכונות של קובץ המקור '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot': אין קובץ או ספרייה כאלה
        xorriso: עדכון: 546 קבצים נוספו בשנייה אחת
        xorriso: הפלה: -abort_on 'FAILURE' נתקל ב- 'FAILURE'
        ו קורדרוי אני לא מבין שהמבנה שלי הוא /nextroot/boot/grub/grub.cfg ו- nextroot / next / START.ELF

      4.    סויד פרז דיג'ו

        תודה, אני מוכן להתקדם, חבר עזר לי ואמר לי מה שעשיתי לא בסדר היה ארגון הספריה, אז יישבתי את זה וזהו

      5.    אריק דיג'ו

        סלח לי, אתה יכול להגיד לי איזה הליך ביצעת מכיוון שאין לי שום דבר לאתחול לשגיאה: אין קובץ או ספרייה כאלה

        אין התקן אתחול.

  44.   חוסה דיג'ו

    בברכה! התכוונתי לבקש ממך טובה אם תוכלי לשלוח לי דוא"ל עם מה שאתה מסביר כאן, התבלבלתי קצת ואני צריך להשוות את מה שיש לי למה שאתה מסביר, אולי מה שלא ברור לי הוא האם יצירת ה- grub. cfg מתבצע ב- gcc המסוף או איפה בדיוק? תודה רבה חבר!

    1.    אדריאן ארויו סטריט דיג'ו

      אתה יוצר את קובץ grub.cfg עם כל עורך טקסט ועליך לשמור אותו ב- PROJECT_FOLDER / boot / grub / grub.cfg

  45.   ג'ואזאנו דיג'ו

    שלום אדריאן, קודם כל, ברך אותך ותודה על תרומתך.

    אתה יודע שאני עושה את זה לצורך תרגול והתחלתי להרכיב את זה בעקבות ההדרכה שלך, אולם לאחר שהתחלתי מצאתי את השגיאה הראשונה

    $ כמו -o kernel.o -c kernel.asm
    bash: as: הפקודה לא נמצאה ...
    פקודות דומות הן:
    'sa'
    'ac'

    אני עובד על Fedora 20, ואינני יכול למצוא פיתרון בעניין זה, אודה להנחייתך אם עלי לשנות משהו ב- gcc או גז

    תודה מראש

    1.    אדריאן ארויו סטריט דיג'ו

      עליך להתקין את GAS כדי שאוכל לראות את קוד השגיאה. אין לי פדורה בהישג יד, אך בתיאוריה אם אתה כן מתקין את gcc-c ++ תתקין את כל חבילת GCC ו- GNU כפי שבדרך כלל מגיע עם זה.

  46.   גסטון רמירז דיג'ו

    אני איתך, אני יודע משהו על C ++, C # (למרות שהאחרון הזה לא מאוד שימושי בעניין הזה) הדבר הרע הוא שעדיין חסר לי ניסיון, אני אף פעם לא מטפל בשפת C, הפרסום שלך מעולה, אין לי הרבה מה לומר אם יש לי זמן אני רואה. תודה.

  47.   טרסיטה דל ישו נה סאנצ'ס דיג'ו

    תודה רבה על העזרה הגדולה ...

  48.   jky דיג'ו

    אני אוהב את לינוקס זה המחוז הכי טוב שיש, האמת עבור החלונות שלי היא אשפה שאני יודע שיוצר לינוקס הוא יוצר החלונות

  49.   רכב דיג'ו

    שלום אני מקבל שגיאה באמירה
    שגיאה: קובץ / הבא / START.ELF לא נמצא
    שגיאה: עליך לטעון תחילה את הליבה

    אתה יכול לעזור לי ולחפש בגוגל אבל אני לא מוצא

  50.   אנריקה אבילה דיג'ו

    בבקשה, איך אוכל לגרום לו להציג את הודעת HELLO WORLD, אני מתחיל ואני עדיין לא יודע מספיק

  51.   קרלוס גררו אלווארז דיג'ו

    הדברים הבאים קורים לי:
    gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC-freestanding -lgcc
    / usr / bin / ld: kernel.o: לא ניתן להשתמש ב- R_X86_64_32 למיקום מחדש כנגד סמל 'מחסנית' בעת ביצוע אובייקט PIE; הידור מחדש עם -fPIE
    / usr / bin / ld: הקישור הסופי נכשל: סעיף שאינו ניתן לייצוג בפלט
    collect2: שגיאה: ld החזיר סטטוס יציאה אחד