Meniru Linus Torvalds: Buat sistem operasi Anda sendiri dari awal (I)

Pertama-tama, beri komentar bahwa ini adalah artikel pertama saya dan saya harap Anda semua menyukainya.

Linus Torvals senang

Dalam seri ini kita akan meniru Linus Torvalds, kita akan membuat sistem operasi kita dari 0. Di episode pertama ini kita akan melihat boot dan kita akan meletakkan teks di layar dari kernel kita.

Dalam kasus saya, sistem operasi disebut BerikutnyaMenyelam. Keputusan pertama yang harus kita buat segera setelah kita mempertimbangkan sistem operasi adalah apa yang akan menjadi bootloader?

Di sini ada beberapa varian, dan kami bahkan dapat membuatnya sendiri; Namun dalam tutorial ini saya akan menggunakan GRUB, karena kebanyakan tahu sedikit banyak tentang dia. Kami membuat folder yang akan menjadi root sistem operasi kami dan di sana kami membuat folder / boot / grub

mkdir nextroot && cd nextroot

mkdir -p boot/grub

Di sana kami membuat file grub.cfg sebagai berikut:

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

Dalam file ini kita telah melihat caranya GRUB akan memuat kernel kami, dalam hal ini, di /next/START.ELF. Sekarang kita harus membuat kernel kita.

Untuk ini kita membutuhkan GCC y GAS (perakit proyek GNU, biasanya dilengkapi dengan gcc). Jadi kami akan membuat kernel.

Kami pertama kali membuat file bernama kernel.asm. File ini akan berisi titik awal kernel kami dan juga akan menentukan multiboot (fitur dari beberapa bootloader seperti GRUB). Isi dari kernel.asm adalah:

.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

Segala sesuatu yang berhubungan dengan multiboot hanya mengikuti spesifikasinya, tidak lebih. Semuanya akan dimulai di awal, ini akan memanggil multiboot_entry, kita akan mendefinisikan header multiboot di 4k pertama dan kita akan menaruhnya (dengan movl).

Kemudian kami memanggil NextKernel_Main yang merupakan fungsi kernel C kami. Dalam loop kami melakukan penghentian untuk menghentikan komputer. Ini dikompilasi dengan:

as -o kernel.o -c kernel.asm

Sekarang kita akan memasuki pemrograman dalam C. Anda akan berpikir bahwa sekarang semuanya sudah mudah, kami meletakkan file Printf en utama dan hanya itu, kami telah melakukannya.

Tidak, sejak itu Printf y utama Ini adalah fungsi yang ditentukan oleh sistem operasi, tetapi kami sedang membuatnya! Kami hanya dapat menggunakan fungsi yang kami tentukan sendiri.

Dalam bab-bab selanjutnya saya akan berbicara tentang bagaimana meletakkan perpustakaan C kita sendiri (glibc, bionic, newlibc) tetapi dari waktu ke waktu. Kami telah mengatakan bahwa kami ingin meletakkan teks di layar, kami akan melihat bagaimana kami melakukannya.

Ada dua pilihan, satu adalah memanggil file BIOS dan lainnya adalah mengelola memori layar secara langsung. Kami akan melakukan yang terakhir karena lebih jelas dari C dan itu juga akan memungkinkan kami untuk melakukannya ketika kami memasuki mode terlindungi.

Kami membuat file bernama NextKernel_Main.c dengan konten berikut:

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;
}

Dengan ini kami langsung memanipulasi memori VGA dan karakter demi karakter kami menulisnya. Kami mengkompilasi dengan menonaktifkan stdlib:
gcc -o NextKernel_Main.o -c NextKernel_Main.c -nostdlib -fPIC -ffreestanding

Jika Anda sudah berhasil sejauh ini, Anda pasti ingin mencoba sistem operasi baru Anda sekarang, tetapi kami belum selesai. Kami membutuhkan file kecil yang memberi tahu kompiler di mana file akan meninggalkan setiap bagian. Ini dilakukan dengan skrip linker. Kami membuat 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 = .;
}

Dengan ini kami menentukan posisi setiap bagian dan titik masuk, mulai, yang telah kami definisikan di kernel.asm. Sekarang kita bisa menyatukan semua ramuan ini:

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

Sekarang kita salin START.ELF ke / next di dalam folder kita yang mensimulasikan root sistem operasi kita. Kami pergi ke folder root sistem operasi baru kami dengan konsol dan memverifikasi bahwa ada dua file: satu /boot/grub/grub.cfg dan /next/START.ELF lainnya.

Kami pergi ke direktori atas dan memanggil utilitas pembuatan ISO dengan GRUB disebut grub-mkrescue

grub-mkrescue -o nextdivel.iso nextroot

Setelah kami melakukan ini, kami akan memiliki file ISO. ISO ini dapat dibuka di komputer x86 (64 bit juga) dan mesin virtual. Untuk mengujinya, saya akan menggunakan QEMU. Kami memanggil QEMU dari baris perintah:

qemu-system-i386 nextdivel.iso

Akan dimulai BIOS Laut dan nanti kita akan punya GRUB. Nanti jika semuanya benar kita akan melihat frase kita.
Anda akan berpikir bahwa ini sulit, saya menjawab Anda, ya.

Sungguh sulit untuk membuat sistem operasi dan yang satu ini di sini tidak berguna. Dalam bab-bab selanjutnya kita akan melihat bagaimana menangani warna pada layar, memesan memori dan jika saya bisa, bagaimana mendapatkan data dari keyboard.

Jika seseorang tidak ingin menyalin semuanya di sini, saya memiliki repositori di GitHub (lebih rumit) dengan sistem operasi BerikutnyaMenyelam. Jika Anda ingin mengkompilasi BerikutnyaMenyelam Anda hanya perlu memiliki git dan 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

Saya mendorong Anda untuk berkolaborasi di NextDivel jika Anda punya waktu dan keinginan untuk membuat sistem operasi. Mungkin lebih unggul dari Linux ... waktu akan menjawabnya.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.

  1.   hidup dijo

    :O

    1.    marianogaudix.dll dijo

      Torvalds menggunakan sistem operasi Minix (berasal dari UNIX) untuk Andrew S. Tanenbaum dan memperbaikinya.

      Tanenbaum bertengkar dengan Linus, mereka saling menghina. Tanenbaum mengatakan bahwa Microkernel adalah masa depan (HURD, Microkernel kerucut Minix baru).

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

  2.   eliotime3000 dijo

    Ini telah menjadi posting terbaik yang sejauh ini saya lihat di blog ini. Saya sudah ingin tahu apa lagi yang harus saya lakukan.

  3.   Carlos. Gude dijo

    Terkesan

  4.   axl dijo

    Sangat mengesankan !!

  5.   rhoconlinux.dll dijo

    FUUUUUUU!
    itu posting paling geek yang pernah saya lihat hehe. Selamat Adrián, artikel pelacur! sangat menarik !!! 🙂

    1.    Joaquin dijo

      Saya setuju. Saya membayangkan situasi ini:
      GNU / Linux Power User (dengan wajah gembira):
      "Saya sudah tahu cara mengompilasi Gentoo saya"

      Nerd (dengan sikap menghina): «pff, saya telah membuat distro saya sendiri ...»

      1.    dekoder dijo

        Ya, saya bisa membuat distro linux saya sendiri. Sebenarnya di dalamnya saya sedang mengembangkan initramfs dan kernel untuk linux tertanam. Membuat sistem operasi tidak sama dengan distro linux. Yang pertama jauh lebih sulit, hampir tidak mungkin, yang kedua, seperti yang Anda katakan, bisa apa saja, bahkan Ubuntu dengan logo xD berubah. Jadi saya akan membiarkannya seperti ini:

        GNU / Linux Power User (dengan wajah gembira)
        - Saya sudah tahu cara mengompilasi Gentoo saya

        Semi kutu buku
        - Pff, saya telah mengikuti linux dari awal dan saya telah membuat distro saya sendiri

        Nerd (dengan sikap menghina)
        - pff, karena saya telah memprogram kernel di assembler dan di C

        Saludos!

  6.   kronos dijo

    Ini menarik bagi saya, menunggu bab berikutnya.

  7.   abimaelmartell dijo

    Saya melihat tutorial ini beberapa waktu lalu, ini untuk C ++
    https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System

    1.    AdrianArroyoStreet dijo

      Terima kasih untuk tautannya, saya akan melihatnya.

  8.   Jose Jácome dijo

    Saya ingin Sistem Operasi yang 100% kompatibel dengan grafis AMD: /

    1.    ivanlinux dijo

      Windows

      1.    Jose Jácome dijo

        hahaha di Windows Catalyst tidak memiliki dukungan OpenGL, meskipun di Linux saya tidak dapat menggunakan semua kekuatan grafis, saya akan terus menunggu untuk melihat apa yang terjadi!

        1.    beny_hm dijo

          tunggu saja katup untuk menghapus pasar

  9.   KZKG ^ Gaara dijo

    Kontribusi ajaib, sempurna, dan luar biasa, sepertinya rangkaian postingan yang bagus 🙂

  10.   O_Pixote_O dijo

    Buah, saya ingin tahu bagaimana membuat program untuk membantu Anda, hanya sebagai cara untuk berlatih dengan pengetahuan yang Anda pelajari, dan membantu. Untuk saat ini saya tinggalkan moto untuk menarik perhatian ke proyek setelah Anda menyelesaikannya "Gunakan NextDivel, pornografi terlihat sama (atau lebih baik).", Anda akan menyapu xD.

  11.   nama ini salah dijo

    Mooooooolaaa !!!!

  12.   nordi dijo

    Artikel yang sangat bagus, tetapi hanya ingin tahu mengapa Anda belum mengikuti proyek Linux From Scratch?

    salam

    1.    AdrianArroyoStreet dijo

      Nah, Linux dari Scratch baik-baik saja, dan Anda dapat mengetahui itu milik Anda, tetapi sebenarnya sangat mekanis:
      -Unduh font
      -Tangkap mereka
      -Menyusun
      -Install
      -Lanjut
      Di sini, meskipun hasilnya lebih buruk pada akhirnya, Anda dapat mengatakan bahwa Anda telah meninjau semua file.

    2.    dekoder dijo

      Seperti yang jelas dari komentar saya sebelumnya, karena tidak memiliki tingkat kerumitan yang sama. Lebih jauh lagi, linux dari awal tidak benar-benar, bertentangan dengan namanya, membuat sistem dari awal. Membuat sistem dari awal adalah memprogramnya sendiri, menulis kernel Anda sendiri, bukan kernel linux, jika mungkin bahkan bootloader Anda sendiri, bukan grub, lilo, syslinux, dll. Meskipun LFS bukanlah prestasi kecil dan cukup kompleks, LFS bahkan tidak mendekati pemrograman kernel Anda sendiri ...

      Selain itu, saya setuju dengan AdrianArroyo Calle bahwa itu terlalu mekanis, saya telah membacanya kadang-kadang dan Anda akhirnya menyerah pada halaman keenam, mereka juga memberi tahu Anda untuk menggunakan versi paket apa karena jika tidak instruksinya tidak berfungsi (itu menunjukkan kurangnya fleksibilitas, menurut saya). Saya pikir lebih baik memiliki sesuatu dari ide Anda sendiri, mengkompilasi paket yang Anda inginkan, bahkan memprogram beberapa, mengkompilasi kernel linux dan dengan tenang.

      Saludos!

  13.   kue dijo

    uuuoooohh !! Saya tidak pernah mengambil foto sebanyak ini.
    Silakan lanjutkan 😀

  14.   linux_pengguna dijo

    Saya tidak tahu apa yang salah:

    kesalahan: tajuk multiboot tidak ditemukan.
    kesalahan, Anda perlu memuat kernel terlebih dahulu

    1.    AdrianArroyoStreet dijo

      Jika ada penghiburan, saya melakukan kesalahan yang sama. Coba gunakan sumber yang ada di GitHub, ada kesalahan sudah diatasi. Bagaimanapun saya pikir jika Anda mengubah baris di grub.cfg dari "multiboot /next/START.ELF" menjadi "kernel /next/START.ELF" itu mungkin berhasil. Saya tidak tahu persis.

      1.    mcplatano.dll dijo

        Pertama-tama, pintu masuk yang luar biasa 🙂
        Saya mengalami masalah yang sama saat memuat kernel dari grub. Bahkan menggunakan sumber GitHub atau mengubah multiboot untuk kernel ...

        kesalahan: tajuk multiboot tidak ditemukan.
        kesalahan: tidak ada kernel yang dimuat

        1.    AdrianArroyoStreet dijo

          Apakah Anda menggunakan clang sebagai kompiler? Ubah untuk gcc
          Apakah Anda ingat untuk menggunakan skrip linker? Hal ini diperlukan untuk linker (ld dalam kasus kami) untuk mengetahui di mana file itu akan meletakkan setiap benda. Dalam hal ini, header multiboot harus berada di awal.
          Apakah Anda menggunakan sistem CMake? Jika Anda menggunakannya saya rasa tidak gagal.
          Jika tidak berhasil untuk Anda, saya akan mencoba mencari solusi lain.

  15.   khourt dijo

    [+100]
    Bagus !!!

  16.   invisible15 dijo

    Ini sangat keren 🙂

  17.   tanrak dijo

    Aku melepas topiku. Posting yang mengesankan. Selamat.

  18.   pria dijo

    Wah!
    Alangkah baiknya jika Anda bisa membuka aplikasi buatan HTML5 dan Javascript tanpa harus menggunakan browser, apakah bisa?
    Saya berbicara tentang mereka seperti aplikasi asli.
    Jadi akan mudah memprogram untuk sistem operasi ini 😀

    1.    AdrianArroyoStreet dijo

      Dalam hal ini saya tidak akan melakukannya karena dibutuhkan lebih banyak pekerjaan di belakangnya tetapi ada sistem operasi yang disebut "ada" yang melakukan apa yang Anda katakan. Sebenarnya baris perintahnya adalah JavaScript dan jendela digambar menggunakan fungsi JavaScript Canvas. Insinyur Nintendo melakukannya dan sekarang open source.

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

      1.    pria dijo

        Valla, terima kasih informasinya 😀
        aku akan melihatnya

  19.   patodx.dll dijo

    Siapapun yang bisa membuat OS sendiri bisa mati dengan damai, karena tingkat intelektual yang harus ia capai dengannya; Itu membuat Anda membuang surga atau neraka.
    Sepotong posting.

    1.    Miguel dijo

      sejauh ini tidak ada yang diketahui telah membuat hanya sesuatu yang dapat dikatakan sebagai sistem operasi yang layak dibuat dari awal, bahkan tidak Linux Torvalds seperti yang Anda katakan di awal, karena ini dimulai dari sumber Unix dan yang lainnya dibuat secara umum dengan yang lainnya. dari satu orang, hidup ini sangat singkat dan mulai dari awal tidak terpikirkan oleh siapa pun, bahkan jika yang diinginkan sebaliknya, hal ini dapat dibuktikan dalam banyak kesalahan yang dilakukan dalam menyalin dan menempel oleh Linux Torvalds

      1.    skarmiglione.dll dijo

        Sumber unix ditutup, penggunaan minix ... yang merupakan hal lain.

      2.    Philip Robaina dijo

        dan mereka yang membuat QDOS apa?
        didasarkan pada sesuatu?

  20.   Tesla dijo

    Dari yang saya lihat, siapa yang tidak punya sistem operasi sendiri itu karena tidak mau, hahahaha.

    Sekarang sungguh, sangat menarik! Banyak hal di luar pengetahuan pemrograman saya yang terbatas, tetapi saya akan membaca bagian lain dari seri ini dengan antisipasi.

    Terima kasih atas kirimannya!

  21.   Manuel R. dijo

    Anda meninggalkan saya dengan wajah O_O ... tanpa niat meremehkan kontribusi siapa pun, itu adalah salah satu yang paling "pro" yang pernah saya lihat belakangan ini. Salam.

  22.   aitor_cz dijo

    Artikel yang sangat bagus, Adrián. Tolong lanjutkan…

  23.   mj dijo

    Apakah Anda bercanda pada April Mop?, Jangan bermaksud kasar "Meniru Linus Torvalds: Buat sistem operasi Anda sendiri dari awal." Menurut saya tidak sulit bagi mereka yang mengejar karir di beberapa institut teknologi atau universitas; tapi bagi saya saya seorang pemanah pemula (ada yang menyebut kami "Noob" tapi saya menganggap diri saya lebih Newbie agak malas) yang kedengarannya seperti tidak menginjak tanah. Pokoknya, ARTIKEL INI MENCIPTAKAN BANYAK KEAMANAN DAN TANPA ADMIRASI RAGU DAN MENGHORMATI EDITORNYA, SELAMAT; Hal pertama yang akan saya lakukan adalah mencoba memahami setidaknya sedikit dari materi yang berharga ini.
    TERIMA KASIH Adrian Arroyo Calle, kerja luar biasa dan penyampaian pengetahuan yang mulia.

  24.   Blaire pascal dijo

    LEL Posting yang bagus, pertahankan.

  25.   f3niX dijo

    Sungguh postingan yang bagus, inilah yang saya lewatkan desde linux. Luar biasa.

  26.   Rubi dijo

    Pos yang bagus, terima kasih banyak.
    Saya tidak mengerti apa fungsi file link.ld, dapatkah seseorang menjelaskannya kepada saya?

    1.    AdrianArroyoStreet dijo

      File link.ld memberi tahu linker (dalam hal ini ld) di mana posisi di dalam file yang dihasilkan setiap bagian kode seharusnya. Kami juga mendefinisikan titik masuk karena kami tidak memiliki sistem operasi, kami tidak dapat menggunakan main sebagai program normal, dalam hal ini kami memilih fungsi start.

  27.   maxi dijo

    Hebat semua postingan Anda! Menunggu 7! Bagaimana jika saya ragu, misalnya jika saya hanya ingin menjalankan algoritma, tanpa OS, bagaimana saya tahu apa yang bisa saya gunakan dan apa yang tidak C?

    1.    AdrianArroyoStreet dijo

      Jika Anda menggunakannya seperti ini, Anda tidak akan dapat menggunakan apa pun dari stdlib, yang secara praktis digunakan semua orang (tidak ada malloc, gratis, printf, scanf, strcmp, dll). Semuanya harus diimplementasikan langsung dari memori atau ASM. Mungkin di bab yang lebih tinggi saya akan menunjukkan kepada Anda bagaimana menginstal perpustakaan C untuk sistem operasi. Jika Anda menggunakan C ++ Anda tidak dapat menggunakan pengecualian dan operator baru dan hapus (dan tentunya lebih banyak lagi).

    2.    Pengalih dijo

      kupikir ini itu dapat memberi Anda gagasan yang lebih baik tentang bagaimana melakukannya.

  28.   Esteban dijo

    Halo, sekitar 5 tahun yang lalu saya mengikuti publikasi serupa dan mengembangkan mikrokernel yang dimulai dengan cara yang sama, ia memiliki beberapa aspek untuk ditingkatkan, tetapi mungkin menarik bagi Anda, ini berjalan dalam mode terlindungi, menjalankan multi-tasking dan melakukan virtualisasi memori, akhir-akhir ini saya mengerjakannya driver disk dan drive cd agar dapat diinstal dan tidak hanya berjalan di live cd ... Salam.

  29.   Johan dijo

    Yang terhormat, saya mengalami kesalahan saat menjalankan perintah:
    gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc

    link.ld: 5 kesalahan sintaks
    collect2: error: ld mengembalikan 1 status keluar

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

    Sejalan 5 Saya tidak melihat kesalahan, apakah seseorang terjadi hal yang sama padanya?

    Saya bekerja dengan debian wheezy di virtualbox

    1.    Gambar placeholder Julian Reyes Escrigas dijo

      Tambahkan ";" di akhir * (. multiboot_header)

  30.   Eric Orellana Romero dijo

    Inisiatif yang luar biasa, saya pasti akan mengikuti bab-bab dari posting ini, berniat untuk belajar banyak darinya. Terima kasih banyak telah meluangkan waktu untuk mengajari kami. Satu detail dalam hal ini, perlu dicatat bahwa Linus Torvalds bukanlah pencipta sistem operasi apapun, ia menciptakan Kernel dari sistem GNU / Linux (yang telah digunakan di OS lain), yang masih layak, tetapi penting untuk memberi Richard Stallman kredit yang diperlukan untuk membuat sebagian besar OS.

    Terima kasih banyak atas kontribusinya dan saya harap Anda mempertimbangkan pengamatan saya.

  31.   Gambar placeholder Julian Reyes Escrigas dijo

    Saya telah mengotak-atik subjek untuk sementara waktu, saya menjadi tertarik segera setelah saya membaca judulnya. tapi pesannya terus diterima

    kesalahan: tajuk multiboot tidak ditemukan.
    kesalahan, Anda perlu memuat kernel terlebih dahulu

    Saya telah mengunggah apa yang saya bawa ke repo di github https://github.com/rkmax/GenyOS

    1.    martin villalba dijo

      Hal yang sama terjadi pada saya. Apakah Anda menemukan solusinya?

  32.   Carlos dijo

    sebuah pertanyaan saya mulai memperkenalkan sintaks dan baris menuentry memberitahu saya perintahtidak ditemukan siapa yang bisa memberi tahu saya mengapa
    Inilah yang saya lakukan

    HITAM @ HITAM-pc: ~ / blackroot $ menuentry «NextDivel» {
    menuentry: perintah tidak ditemukan

    1.    AdrianArroyoStreet dijo

      Isi dari konten ini tidak untuk dimasukkan di baris perintah, tetapi di file yang Anda buat bernama grub.cfg

  33.   simpul dijo

    Artikel yang bagus, terima kasih!

  34.   David dijo

    Spektakuler…!! itu seperti mata rantai yang hilang.

  35.   r.garciag dijo

    Saya suka tutorial Emulating LInus Torvalds Anda, tetapi ada satu langkah yang saya tidak mengerti, berikut ini:
    Sekarang kita salin START.ELF ke / next di dalam folder kita yang mensimulasikan root sistem operasi kita. Kami pergi ke folder root sistem operasi baru kami dengan konsol dan memverifikasi bahwa ada dua file: satu /boot/grub/grub.cfg dan /next/START.ELF lainnya.

    Kami pergi ke direktori atas dan memanggil utilitas pembuatan ISO dengan GRUB yang disebut grub-mkrescue

    Bisakah seseorang menjelaskannya kepada saya: p

    1.    AdrianArroyoStreet dijo

      Cukup untuk menghasilkan ISO minimum yang dapat dimuat GRUB, kami menyalin kernel ke (/ dari ISO, folder apa pun) /next/START.ELF dan file konfigurasi GRUB ke (/ dari ISO, folder apa pun) / boot / grub / grub.cfg. Setelah selesai, kami belum menginstal GRUB di ISO dan ada utilitas yang menghasilkan ISO dari folder dan menginstal GRUB yang disebut grub-mkrescue. Kemudian akhirnya kita akan mendapatkan ISO yang dapat di-boot yang telah menginstal GRUB, yang dapat membaca konfigurasi untuk kemudian menjalankan START.ELF dengan benar. Saya tidak tahu apakah saya telah menjelaskan diri saya sendiri, tetapi yang kami lakukan adalah sejenis sistem file palsu yang kami gunakan untuk menghasilkan ISO.

  36.   perhatian miguel jose guevara dijo

    Hottie

  37.   michael moreno dijo

    Yah terlihat benar-benar sistem baru tidak begitu banyak tetapi jika meningkatkan linux misalnya membuat exonucleus linux dengan komponen server yang bertindak sebagai mikrokernel jika diinginkan, artinya struktur exo dengan perilaku mikronukleus yang akan menjadi super dan linux.

    Hal lain adalah bahwa saya bukan ahli dalam pemrograman, hanya beberapa cheesy c ++ dan beberapa java, itu akan cukup bagi saya untuk memberikan modul program kernel linux, memusnahkannya, memodifikasinya, dll.

  38.   Musim DinginSoldier 53 dijo

    Tanpa ragu saya sudah harus melakukan liburan.

  39.   Fermin dijo

    Ini bagus dan dalam program apa Anda merancang dan mengkodekannya?
    tolong beri saya jawaban itu

  40.   Pikiran Gelap dijo

    Saat menyusun dari git Anda, saya mendapatkan:

    [jmponce @ jar build] $ cmake ..
    - Membuat direktori NextRoot
    - Menghasilkan skrip ISO
    buat DESTDIR = pemasangan berikutnya
    ./iso.sh
    - Ditemukan Doxygen: / usr / bin / doxygen (ditemukan versi "1.8.9")
    - Konfigurasi selesai
    - Pembangkitan selesai
    - File build telah ditulis ke: / home / jmponce / next-divel / build
    [jmponce @ jar build] $ make
    Memindai ketergantungan target START.ELF
    [7%] Membuat objek ASM-ATT src / CMakeFiles / START.ELF.dir / start / boot.asm.o
    [14%] Membuat objek CXX src / CMakeFiles / START.ELF.dir / start / NextShellLite.cpp.o
    [21%] Membuat objek CXX src / CMakeFiles / START.ELF.dir / start / ND_Screen.cpp.o
    [28%] Membuat objek CXX src / CMakeFiles / START.ELF.dir / start / NextKernel_Main.cpp.o
    [35%] Membuat objek CXX src / CMakeFiles / START.ELF.dir / start / ND_Panic.cpp.o
    [42%] Membuat objek CXX src / CMakeFiles / START.ELF.dir / start / ND_Timer.cpp.o
    [50%] Membuat objek CXX src / CMakeFiles / START.ELF.dir / start / ND_Memory.cpp.o
    [57%] Membuat objek CXX src / CMakeFiles / START.ELF.dir / start / ND_Ports.cpp.o
    [64%] Membuat objek CXX src / CMakeFiles / START.ELF.dir / start / ND_GDT.cpp.o
    [71%] Membuat objek CXX src / CMakeFiles / START.ELF.dir / start / ND_ISR.cpp.o
    [78%] Membuat objek CXX src / CMakeFiles / START.ELF.dir / start / ND_String.cpp.o
    [85%] Membuat objek CXX src / CMakeFiles / START.ELF.dir / start / ND_IRQ.cpp.o
    [92%] Membuat objek CXX src / CMakeFiles / START.ELF.dir / start / ND_IDT.cpp.o
    [100%] Membuat objek CXX src / CMakeFiles / START.ELF.dir / start / ND_Keyboard.cpp.o
    Menautkan START.ELF yang dapat dieksekusi CXX
    / usr / bin / ld: Tidak kompatibel /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/libgcc.a dilewati saat mencari -lgcc
    / usr / bin / ld: tidak dapat menemukan -lgcc
    collect2: error: ld mengembalikan status keluar 1
    src / CMakeFiles / START.ELF.dir / build.make: 402: Petunjuk gagal untuk target 'src / START.ELF'
    make [2]: *** [src / START.ELF] Kesalahan 1
    CMakeFiles / Makefile2: 106: Instruksi gagal untuk target 'src / CMakeFiles / START.ELF.dir / all'
    membuat [1]: *** [src / CMakeFiles / START.ELF.dir / all] Kesalahan 2
    Makefile: 117: Kegagalan dalam instruksi untuk target 'semua'
    membuat: *** [semua] Kesalahan 2

    1.    AdrianArroyoStreet dijo

      Kesalahannya tampaknya tidak dapat menemukan llibgcc karena Anda memiliki versi 64-bit dan saat ini sistem kompilasi dipaksa untuk menggunakan 32-bit. Anda harus menginstal paket kompatibilitas pada distro Anda atau lebih baik, gunakan sistem 32-bit.

      1.    Ronaldo Rodríguez dijo

        Saya memiliki 32 bit dan saya mendapatkan kesalahan yang sama, maksud Anda sistem operasi atau arsitekturnya? milik saya 64 Bit, tapi saya menggunakan Ubuntu 32 bit, jangan tanya, masalah keuangan, dengan itu saya katakan semuanya.

  41.   Jorge dijo

    Topik yang bagus, menunggu cakupan yang lebih luas. Bersulang

  42.   Jhon dijo

    Bagus, saya berharap lebih

  43.   Soid perez dijo

    Halo, saya adalah duta muda yang ingin membuat sistem operasi yang mendukung semua program dan platform sehingga pengembang tidak harus memiliki mesin atau aplikasi atau program yang kuat di komputer.
    itulah mengapa saya tertarik dengan posting ini tetapi ketika saya mengunduh git Anda atau mencoba membuatnya, semuanya berjalan dengan baik sampai saya menjalankan perintah ./iso.sh atau grub-mkrescue -o nextdivel.iso nextroot Anda mendapatkan kesalahan ini

    "Grub-mkrescue: peringatan: xorriso Anda tidak mendukung" –grub2-boot-info ". Beberapa fitur telah dinonaktifkan. Gunakan xorriso 1.2.9 atau yang lebih baru ..
    grub-mkrescue: peringatan: xorriso Anda tidak mendukung "–grub2-boot-info". Gambar kernel Anda terlalu besar. Boot disk telah dinonaktifkan. Gunakan xorriso 1.2.9 atau yang lebih baru .. »
    Saya benar-benar tidak tahu karena saya tahu banyak tentang aplikasi dan web tetapi saya tidak tahu apa-apa tentang grub

    1.    AdrianArroyoStreet dijo

      Anda mungkin perlu memperbarui program xorriso di distro Anda. Distro dan versi apa yang Anda gunakan?

      1.    Soid perez dijo

        Saya menggunakan xubuntu 14.04lts dan mencoba menjalankan xorriso tetapi shell memberi tahu saya bahwa ia tidak dapat menemukannya dan saya mendapatkan apt-get install xorriso meskipun saya dengan tulus mengharapkan tanggapan karena saya memiliki pengalaman buruk menginstal hal-hal yang tidak saya ketahui di linux hehe . Saya akan memperbaruinya sekarang dan memberi tahu Anda apa yang terjadi

      2.    AdrianArroyoStreet dijo

        Kemudian instal xorriso dari pusat perangkat lunak atau cukup dari terminal lakukan "sudo apt-get install xorriso"

      3.    Soid perez dijo

        Saya sudah melakukan semua yang Anda perintahkan dan dengan git dan milik saya, saya mendapatkan xorriso 1.3.2: manipulator sistem file RockRidge, proyek libburnia.

        Drive saat ini: -outdev 'stdio: nextdivel.iso'
        Arus media: file stdio, dapat ditimpa
        Status media: kosong
        Ringkasan media: 0 sesi, 0 blok data, 0 data, gratis 1901 juta
        Ditambahkan ke citra ISO: direktori '/'='/tmp/grub.OEqSzV'
        xorriso: UPDATE: 546 file ditambahkan dalam 1 detik
        xorriso: FAILURE: Tidak dapat menentukan atribut file sumber '/ media / gaia / Jupiter1 / ShellSystem / nextroot / nextroot': Tidak ada file atau direktori seperti itu
        xorriso: UPDATE: 546 file ditambahkan dalam 1 detik
        xorriso: aborting: -abort_on 'FAILURE' menemukan 'FAILURE'
        dan korduroi Saya tidak mengerti struktur saya adalah /nextroot/boot/grub/grub.cfg dan nextroot / next / START.ELF

      4.    Soid perez dijo

        Terima kasih, saya siap untuk bergerak maju, seorang teman membantu saya dan memberi tahu saya bahwa kesalahan saya adalah pengaturan direktori, jadi saya menyelesaikannya dan hanya itu.

      5.    erik dijo

        Permisi, dapatkah Anda memberi tahu saya prosedur apa yang Anda lakukan karena saya tidak mendapatkan kesalahan untuk boot: tidak ada file atau direktori seperti itu

        tidak ada perangkat yang dapat di-boot.

  44.   jose dijo

    Bersulang! Saya akan meminta bantuan Anda jika Anda dapat mengirimi saya email dengan apa yang Anda jelaskan di sini, saya agak bingung dan saya perlu membandingkan apa yang saya miliki dengan apa yang Anda jelaskan, mungkin yang tidak jelas bagi saya adalah apakah pembuatan grub. cfg dilakukan di terminal gcc atau di mana tepatnya? Terima kasih banyak teman!

    1.    AdrianArroyoStreet dijo

      Anda membuat file grub.cfg dengan editor teks apa pun dan Anda harus menyimpannya di PROJECT_FOLDER / boot / grub / grub.cfg

  45.   jhuazano dijo

    Halo Adrian, pertama-tama ucapkan selamat dan terima kasih atas kontribusinya.

    Anda tahu saya melakukan ini untuk latihan dan saya mulai menggabungkannya setelah les Anda, namun setelah memulai saya menemukan kesalahan pertama

    $ sebagai -o kernel.o -c kernel.asm
    bash: sebagai: perintah tidak ditemukan ...
    Perintah serupa adalah:
    'sa'
    'ac'

    Saya sedang mengerjakan fedora 20, dan saya tidak dapat menemukan solusi dalam hal ini, saya akan menghargai panduan Anda apakah saya harus mengubah sesuatu di gcc atau gas

    terima kasih sebelumnya

    1.    AdrianArroyoStreet dijo

      Anda harus memasang GAS agar saya dapat melihat kode kesalahan. Saya tidak memiliki Fedora, tetapi secara teori jika Anda menginstal gcc-c ++ Anda akan menginstal seluruh GCC suite dan GNU As biasanya disertakan dengannya.

  46.   Gaston Ramirez dijo

    Saya bersama Anda, saya tahu sesuatu tentang C ++, C # (meskipun yang terakhir ini tidak terlalu berguna dalam hal ini), hal buruknya adalah saya masih kurang pengalaman, saya tidak pernah menangani bahasa C, publikasi Anda bagus, Saya tidak punya banyak hal untuk dikatakan, jika saya punya waktu saya melihat. Terima kasih.

  47.   Teresita dari Yesus Nah Sanchez dijo

    Terima kasih banyak atas bantuannya….

  48.   jky dijo

    Saya suka linux itu adalah distrik terbaik yang ada, kebenaran untuk windows saya adalah sampah untuk yang saya tahu bahwa pencipta linux adalah pencipta windows

  49.   Mengendarai dijo

    Halo, saya mendapatkan Kesalahan dalam grub mengatakan
    error: file /next/START.ELF Tidak ditemukan
    error: Anda perlu memuat kernel terlebih dahulu

    Bisakah Anda membantu saya dan mencari di Google tetapi saya tidak dapat menemukan

  50.   Henry Avila dijo

    Tolong, bagaimana saya bisa membuatnya menampilkan pesan HELLO WORLD? Saya seorang pemula dan saya masih belum cukup tahu

  51.   CARLOS GUERRERO ALVAREZ dijo

    Hal berikut terjadi pada saya:
    gcc -o START.ELF kernel.o NextKernel_Main.o -Tlink.ld -nostdlib -fPIC -ffreestanding -lgcc
    / usr / bin / ld: kernel.o: relokasi R_X86_64_32 terhadap simbol `stack 'tidak dapat digunakan saat membuat objek PIE; kompilasi ulang dengan -fPIE
    / usr / bin / ld: tautan terakhir gagal: bagian yang tidak dapat direpresentasikan pada keluaran
    collect2: error: ld mengembalikan 1 status keluar