Pertama-tama, beri komentar bahwa ini adalah artikel pertama saya dan saya harap Anda semua menyukainya.
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.
:O
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
Ini telah menjadi posting terbaik yang sejauh ini saya lihat di blog ini. Saya sudah ingin tahu apa lagi yang harus saya lakukan.
Terkesan
Sangat mengesankan !!
FUUUUUUU!
itu posting paling geek yang pernah saya lihat hehe. Selamat Adrián, artikel pelacur! sangat menarik !!! 🙂
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 ...»
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!
Ini menarik bagi saya, menunggu bab berikutnya.
Saya melihat tutorial ini beberapa waktu lalu, ini untuk C ++
https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Terima kasih untuk tautannya, saya akan melihatnya.
Saya ingin Sistem Operasi yang 100% kompatibel dengan grafis AMD: /
Windows
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!
tunggu saja katup untuk menghapus pasar
Kontribusi ajaib, sempurna, dan luar biasa, sepertinya rangkaian postingan yang bagus 🙂
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.
Mooooooolaaa !!!!
Artikel yang sangat bagus, tetapi hanya ingin tahu mengapa Anda belum mengikuti proyek Linux From Scratch?
salam
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.
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!
uuuoooohh !! Saya tidak pernah mengambil foto sebanyak ini.
Silakan lanjutkan 😀
Saya tidak tahu apa yang salah:
kesalahan: tajuk multiboot tidak ditemukan.
kesalahan, Anda perlu memuat kernel terlebih dahulu
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.
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
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.
[+100]
Bagus !!!
Ini sangat keren 🙂
Aku melepas topiku. Posting yang mengesankan. Selamat.
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 😀
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/
Valla, terima kasih informasinya 😀
aku akan melihatnya
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.
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
Sumber unix ditutup, penggunaan minix ... yang merupakan hal lain.
dan mereka yang membuat QDOS apa?
didasarkan pada sesuatu?
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!
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.
Artikel yang sangat bagus, Adrián. Tolong lanjutkan…
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.
LEL Posting yang bagus, pertahankan.
Sungguh postingan yang bagus, inilah yang saya lewatkan desde linux. Luar biasa.
Pos yang bagus, terima kasih banyak.
Saya tidak mengerti apa fungsi file link.ld, dapatkah seseorang menjelaskannya kepada saya?
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.
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?
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).
kupikir ini itu dapat memberi Anda gagasan yang lebih baik tentang bagaimana melakukannya.
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.
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
Tambahkan ";" di akhir * (. multiboot_header)
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.
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
Hal yang sama terjadi pada saya. Apakah Anda menemukan solusinya?
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
Isi dari konten ini tidak untuk dimasukkan di baris perintah, tetapi di file yang Anda buat bernama grub.cfg
Artikel yang bagus, terima kasih!
Spektakuler…!! itu seperti mata rantai yang hilang.
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
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.
Hottie
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.
Tanpa ragu saya sudah harus melakukan liburan.
Ini bagus dan dalam program apa Anda merancang dan mengkodekannya?
tolong beri saya jawaban itu
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
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.
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.
Topik yang bagus, menunggu cakupan yang lebih luas. Bersulang
Bagus, saya berharap lebih
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
Anda mungkin perlu memperbarui program xorriso di distro Anda. Distro dan versi apa yang Anda gunakan?
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
Kemudian instal xorriso dari pusat perangkat lunak atau cukup dari terminal lakukan "sudo apt-get install xorriso"
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
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.
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.
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!
Anda membuat file grub.cfg dengan editor teks apa pun dan Anda harus menyimpannya di PROJECT_FOLDER / boot / grub / grub.cfg
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
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.
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.
Terima kasih banyak atas bantuannya….
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
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
Tolong, bagaimana saya bisa membuatnya menampilkan pesan HELLO WORLD? Saya seorang pemula dan saya masih belum cukup tahu
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