Satu hal yang selalu ingin saya lakukan adalah mengembangkan sistem operasi saya sendiri (tidak harus seperti Linux atau Windows, tetapi lebih baik daripada boot loader sederhana yang sudah saya lakukan).
Saya mengalami kesulitan menemukan sumber daya / panduan yang membawa Anda melewati menulis OS "Hello World" sederhana.
Saya tahu banyak orang mungkin akan merekomendasikan saya melihat Linux atau BSD; tetapi basis kode untuk sistem seperti itu (mungkin) sangat besar sehingga saya tidak tahu harus mulai dari mana.
Ada saran?
Pembaruan: Untuk memudahkan orang yang mendarat di pos ini melalui Google, berikut adalah beberapa sumber pengembangan OS:
Menulis Sistem Operasi Anda Sendiri (Terima Kasih Adam)
Linux From Scratch (Terima kasih John)
SharpOS (Sistem Operasi C #) (Terima kasih lomaxx)
OS Dev Wiki dan Forum (Terima kasih Steve)
BonaFide (Terima kasih Steve)
Bran (Terima kasih Steve)
Gulung mainan Anda sendiri UNIX-clone OS (Terima kasih Steve)
Sumber lain:
Saya menemukan sumber yang bagus bernama MikeOS , "MikeOS adalah alat pembelajaran untuk menunjukkan bagaimana OS sederhana bekerja. Ia menggunakan mode nyata 16-bit untuk akses BIOS, sehingga tidak memerlukan driver yang rumit"
Diperbarui 11/14/08
Saya menemukan beberapa sumber di Freebyte's Guide to ... Sistem Operasi Gratis dan tidak bebas yang terhubung ke kit seperti perpustakaan OSKit dan ExOS. Ini tampaknya sangat berguna dalam memulai pengembangan OS.
Diperbarui 2/23/09
Ric Tokyo merekomendasikan nanoos dalam pertanyaan ini . Nanoos adalah OS yang ditulis dalam C ++.
Diperbarui 3/9/09
Dinah memberikan beberapa diskusi Stack Overflow yang berguna tentang calon pengembang OS: Penghadang dalam menciptakan sistem operasi khusus membahas kesulitan apa yang mungkin Anda temui saat mengembangkan OS dan Pengembangan OS adalah diskusi yang lebih umum.
Diperbarui 7/9/09
LB menyediakan tautan ke Proyek Pintos , OS pendidikan yang dirancang untuk siswa yang belajar pengembangan OS.
Diperbarui 7/27/09 (Masih kuat!)
Saya menemukan kursus OS online dari Berkley yang menampilkan 23 kuliah.
TomOS adalah cabang dari MikeOS yang mencakup sedikit manajer memori dan dukungan mouse. Sebagai MikeOS, ia dirancang untuk menjadi proyek pendidikan. Itu ditulis dalam assembler NASM.
Diperbarui 8/4/09
Saya menemukan slide dan bahan-bahan lain yang cocok dengan kuliah online Berkeley yang tercantum di atas.
Diperbarui 8/23/09
Semua pertanyaan menandai osdev di stackoverflow
OS / 161 adalah OS akademik yang ditulis dalam c yang dijalankan pada perangkat keras yang disimulasikan. OS ini serupa di Nachos. Terima kasih Novelocrat!
tangurena merekomendasikan http://en.wikipedia.org/wiki/MicroC/OS-II , OS yang dirancang untuk sistem embedded. Ada buku pendamping juga.
Pengembangan Kernel Linux oleh Robert Love disarankan oleh Anders. Ini adalah "pandangan orang dalam yang diakui secara luas pada kernel Linux."
Diperbarui 9/18/2009
Terima kasih Tim S. Van Haren karena memberi tahu kami tentang Cosmos , sebuah OS yang ditulis seluruhnya dalam c #.
tgiphil memberi tahu kami tentang Kerangka Kerja Aliansi Sistem Operasi Terkelola (MOSA) , "seperangkat alat, spesifikasi, dan kode sumber untuk mendorong pengembangan sistem operasi yang dikelola berdasarkan Common Intermediate Language."
Pembaruan 9/24/2009
Steve menemukan beberapa sumber daya untuk pengembangan di windows menggunakan Visual Studio, periksa pengaturan panduan BrokenThorn dengan VS 2005 atau Bagian VS OSDev .
Diperbarui 9/5/2012
kerneltrap.org tidak lagi tersedia. Kernel linux v0.01 tersedia dari kernel.org
Diperbarui 12/21/2012 Tutorial pengembangan OS dasar yang dirancang untuk menjadi proyek semester. Ini memandu Anda melalui membangun sebuah OS dengan komponen dasar. Awal yang sangat bagus untuk pemula. Kertas terkait . Terima kasih Srujan!
Diperbarui 11/15/2013
Menulis Sistem Operasi Sederhana Dari Awal . Terima kasih James Moore!
Diperbarui 12/8/2013
Cara membuat sistem operasi komputer Terima kasih ddtoni!
Diperbarui 3/18/2014
ToAruOS sebuah OS yang dibangun sebagian besar dari awal, termasuk GUI
Diperbarui 12 September 2016
Menulis Sistem Pengoperasian Toy Anda sendiri
Diperbarui 10 Des 2016
Menulis Sistem Operasi Sederhana —dari Scratch (terima kasih @Tyler C)
sumber
Jawaban:
Ada banyak tautan setelah tinjauan singkat tentang apa yang terlibat dalam penulisan OS untuk platform X86.
Tautan yang tampaknya paling menjanjikan (www.nondot.org/sabre/os/articles) tidak lagi tersedia, jadi Anda perlu membaca versi Archive.org untuk membacanya.
Pada akhirnya, bootloader mengambil kode mesin dari kernel, memasukkannya ke dalam memori, dan melompat ke sana. Anda dapat memasukkan kode mesin apa pun ke dalam kernel yang Anda inginkan, tetapi sebagian besar program C mengharapkan OS sehingga Anda harus memberi tahu kompiler Anda bahwa ia tidak memiliki semua itu, atau bootloader harus membuatnya.
Kernel kemudian melakukan semua pengangkatan berat, dan saya menduga itu adalah contoh kernel yang Anda inginkan. Tetapi ada jalan panjang untuk memiliki antara kernel yang mengatakan, "Halo dunia" untuk memiliki kernel yang memuat penerjemah perintah, menyediakan layanan disk, dan memuat dan mengelola program.
Anda mungkin ingin mempertimbangkan untuk berlangganan ACM untuk mendapatkan akses ke literatur lama mereka - ada banyak artikel di akhir 80-an dan awal 90-an di majalah komputasi awal tentang cara membuat OS alternatif . Ada kemungkinan buku-buku yang tidak dicetak dari era ini juga. Anda mungkin bisa mendapatkan informasi yang sama secara gratis dengan mencari indeks majalah-majalah itu (yang tersedia di situs itu - klik "indeks" di dekat nama majalah) dan kemudian tanyakan orang-orang yang memiliki salinan.
Terakhir, saya tahu bahwa usenet sudah mati (karena begitu juga para nabi malapetaka internet) tetapi Anda akan menemukan bahwa banyak ahli tua yang kasar dari zaman itu masih hidup di sana. Anda harus mencari grup google (mereka memiliki repositori lama dejanews) dan saya berharap Anda akan menemukan banyak orang mengajukan pertanyaan yang sama satu dekade atau 1,5 lalu yang Anda tanyakan sekarang. Anda bahkan dapat menemukan banyak permintaan Linus Torvalds untuk mendapatkan bantuan saat ia mengembangkan linux pada awalnya. Jika pencarian tidak memunculkan sesuatu, tanyakan di newsgroup yang sesuai (mungkin dimulai dengan comp.arch, tetapi cari yang dengan OS atas nama).
sumber
Minix jauh lebih kecil, dan dirancang untuk tujuan belajar, dan buku yang cocok dengannya juga bagus.
Pembaruan: Saya kira Minix 3 sedikit tujuan yang berbeda, tetapi Minix 2 (dan tentu saja versi pertama) adalah untuk tujuan pengajaran.
sumber
Tanenbaum book and minix3
cukup untuk membuat perubahan pada minix3 pada akhirnya membantu saya berkontribusi ke kernel linux?Sebagai seseorang yang telah menulis sistem operasi multi-tugas waktu-nyata dari awal ...
keyboard rutin bounce, driver keyboard, driver disk, driver video, sistem file, dan akhirnya boot-loader - dan itu hanya untuk meluncurkannya untuk pertama kalinya tanpa ada hubungannya!
... Saya tidak bisa cukup menekankan betapa pentingnya untuk mengenal perangkat keras! Ini terutama terjadi jika Anda benar-benar ingin melakukan semuanya sendiri alih-alih hanya mengambil sistem primitif yang sudah disiapkan oleh orang lain untuk Anda. Misalnya, hubungi Intel dan minta kartu CPU mereka untuk jenis CPU Anda! Ini akan menjelaskannya untuk Anda - "pin-out", interupsi, opcode, sebut saja!
Ingat perangkat keras memungkinkan semuanya. Pelajari perangkat kerasnya. Anda tidak akan menyesalinya.
.
sumber
Tulis OS mikrokontroler. Saya merekomendasikan mikrokontroler berbasis x86. OS modern sangat besar . Pelajari dasar-dasarnya terlebih dahulu.
sumber
Saya berharap ada satu tempat untuk mendapatkan semua info tentang mengembangkan OS Anda sendiri. Yang paling dekat dengan itu adalah OS Dev Wiki and Forums . Mereka menawarkan banyak informasi yang baik mengenai pengaturan, pengembangan, dan informasi perangkat keras perangkat.
Juga ada beberapa tutorial hebat di BoneFide , saya telah menggunakan tutorial memulai oleh Bran , dan sekarang saya melihat tutorial yang lebih baru berdasarkan yang disebut Roll your toy UNIX-clone OS .
Saya kedua memeriksa: "Sistem Operasi: Desain dan Implementasi"
Dan jika Anda ingin mengembangkan di Windows, lihat posting blog jolson.Sunting: Untuk pengembangan di windows menggunakan Visual Studio, lihat panduan BrokenThorn atau wiki OSDev .
sumber
Sumber daya yang bagus adalah materi dari kursus MIT 6.828: Teknik Sistem Operasi.
XV6 - OS pengajaran seperti Unix sederhana yang ditulis dalam ANSI C untuk x86 http://pdos.csail.mit.edu/6.828/2012/xv6.html
Sumber XV6 - sebagai buklet tercetak dengan nomor baris http://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf
Buku XV6 - menjelaskan ide-ide utama desain os http://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf
Bahannya kompak: 92 halaman sumber dan 96 halaman komentar.
Saya lebih menyukainya daripada buku Minix! Itu permata sejati!
sumber
Anda juga mungkin ingin melihat SharpOS yang merupakan sistem operasi yang mereka tulis di c #.
sumber
Ada sumber daya yang baik untuk dasar-dasar sistem operasi dalam buku. Karena tidak ada banyak panggilan untuk membuat OS baru dari awal, Anda tidak akan menemukan satu ton informasi jenis hobi di internet.
Saya merekomendasikan buku teks standar, "Sistem Operasi Modern" oleh Tanenbaum. Anda juga mungkin dapat menemukan "Elemen Sistem Operasi" oleh Calingaert bermanfaat - ini adalah ikhtisar tipis dari sebuah buku yang memberikan sketsa kasar tentang apa OS dari sudut pandang seorang desainer.
Jika Anda memiliki minat pada sistem waktu nyata (dan Anda setidaknya harus memahami perbedaan dan alasan OS waktu nyata) maka saya juga akan merekomendasikan "MicroC / OS-II" oleh Labrosse.
Edit:
Bisakah Anda menentukan apa yang Anda maksud dengan "lebih teknis"? Buku-buku ini memberikan detail implementasi kode semu, tetapi apakah Anda mencari contoh OS, atau cuplikan kode untuk mesin / bahasa tertentu?
-Adam
sumber
Baru saja datang dari pertanyaan lain. Saya ingin menyebutkan Pintos ... Saya ingat kursus OS saya dengan Nachos dan Pintos sepertinya adalah hal yang sama yang dapat dijalankan pada x86.
sumber
Saya menemukan Pengembangan Kernel Linux Robert Love cukup menarik. Ini memberi tahu Anda tentang bagaimana berbagai subsistem dalam kernel Linux bekerja dengan cara yang sangat sederhana. Karena sumbernya tersedia, Linux adalah kandidat utama untuk melakukan peretasan.
sumber
Berikut adalah beberapa halaman Stack Overflow lainnya yang layak dimasukkan ke dalam diskusi ini:
Penghadang dalam menciptakan sistem operasi kustom
Mengembangkan sistem operasi untuk arsitektur x86
sumber
Kursus sistem operasi saya di tingkat sarjana membuat kami membangun sejumlah subsistem untuk OS / 161 , sebuah kernel sederhana, mirip BSD yang menyediakan beberapa dasar-dasar sambil meninggalkan kebebasan untuk mengeksplorasi berbagai keputusan ruang desain dalam mengimplementasikan layanan tingkat yang lebih tinggi.
sumber
Mulai meretas di Minix. Ini jauh lebih kecil daripada Linux (jelas) dan dirancang dengan tujuan pengajaran dalam pikiran (beberapa, setidaknya). Bukan Minix 3, itu cerita yang sangat berbeda.
sumber
Sudah menjawab, tetapi ketika saya mengambil Sistem Operasi di perguruan tinggi kami mulai dengan kernel linux awal dan menambahkan fitur modern sederhana (sistem file dasar, memori virtual, multitasking, mutex). Menyenangkan. Anda bisa melewatkan beberapa hal benar-benar gila perakitan tingkat rendah hanya untuk mucking w / mode dilindungi dan tabel halaman sementara masih belajar beberapa nyali.
http://kerneltrap.org/node/14002 http://kerneltrap.org/files/linux-0.01.tar.bz2
sumber
Anda mungkin ingin melihat linuxfromscratch .
sumber
Tutorial pengembangan OS sederhana dan dasar yang dirancang untuk menjadi proyek semester. Ini memandu Anda melalui membangun sebuah OS dengan komponen dasar. Awal yang sangat bagus untuk pemula. Makalah terkait ada di sini .
sumber
Saya ingin memasukkan repo ini How-to-Make-a-Computer-Operating-System oleh Samy Pesse. Sedang dalam proses. Sangat menarik.
sumber
Satu OS yang cukup sederhana untuk dipelajari adalah μC / OS. Buku itu memiliki disket dengan sumbernya.
http://en.wikipedia.org/wiki/MicroC/OS-II
sumber
Lihatlah Proyek Managed Operating System Alliance (MOSA) di www.mosa-project.org . Mereka mendesain kompiler AOT / JIT dan sistem operasi yang dikelola sepenuhnya dalam C #. Beberapa pengembang berasal dari proyek SharpOS yang tidak aktif.
sumber
Saya bermain-main dengan Cosmos , yang merupakan "proyek sistem operasi yang diimplementasikan sepenuhnya dalam bahasa yang sesuai dengan CIL." Itu ditulis dalam C #, jadi itu tepat di gang saya. Untuk orang seperti saya yang belum pernah mencoba membangun sistem operasi, sebenarnya cukup keren untuk bisa menjalankan sistem operasi "Hello World" dalam waktu singkat.
sumber
Lihatlah situs ini: http://osix.net/modules/article/?id=359
sumber
Seperti disebutkan di atas, Wiki OSDev (sejauh ini) adalah sumber terbaik untuk pengembangan OS. Bagi Anda yang berbicara bahasa Jerman, Wiki tingkat rendah juga bagus. Sesuatu yang relatif tidak dikenal Incitatus OS , sebuah kernel sederhana dengan satu set kecil aplikasi userspace. Ini bagus untuk digunakan untuk masuk ke topik rumit pengembangan OS.
sumber
Movitz adalah lingkungan Lisp yang ditulis dalam Common Lisp dan menjalankan "on the metal". Sayangnya, beberapa tautan di halaman utama Movitz menolak akses, tetapi Anda dapat menemukan petunjuk tentang cara mengunduh dan mengkompilasi kode sumber dari halaman trac . Juga, gambar siap dapat ditemukan pada arsip halaman ini .
IMHO ini sangat menarik, karena membawa kembali mesin Lisp konsep pada perangkat keras yang tersedia saat ini. Gagal secara komersial, tetapi ini tidak membuktikan kepada saya bahwa ide itu buruk.
Buku pegangan Unix pembenci adalah buku yang menyenangkan yang secara semi serius mencaci maki konsep Unix dan turunannya. Banyak bagian berargumen tentang seberapa baik konsep mesin Lisp.
sumber
Inilah makalah yang disebut " Menulis Sistem Operasi Sederhana Dari Awal ". Ini mencakup penulisan bootloader, memasuki mode terproteksi x86-32, dan menulis kernel dasar di C. Tampaknya melakukan pekerjaan yang baik untuk menjelaskan semuanya secara rinci.
sumber
The x86 JS simulator dan simulator ARM juga bisa sangat berguna untuk memahami bagaimana berbagai karya potongan hardware dan tes make tanpa keluar browser favorit Anda.
sumber
Pertanyaan Intresting untuk para programmer. Melihatnya akan membutuhkan waktu yang sangat lama untuk membangun OS seperti Windows atau Mac tetapi jika Anda ingin membangun yang sederhana maka Anda dapat mencoba yang terbaik
Sekarang Anda telah memperoleh gelar master (Tidak sepenuhnya hanya sedikit lagi untuk pergi) dalam menciptakan OS sekarang mendistribusikan pengetahuan ini ke teman Anda dan dengan bantuan mereka mencoba membuat OS sekuat Mac, Linux atau Windows
sumber
Ketika Anda telah membuat sistem operasi dasar, sebenarnya sulit untuk melanjutkan karena tidak banyak sumber daya untuk membuat GUI atau porting library. Tapi saya pikir melihat ToAruOS akan sangat membantu!
Kode di bawah permukaan OS itu sangat sederhana! tetapi pada saat yang sama ia telah porting hal-hal seperti cairo, python, (belum tapi segera) sdl, membuat memori berbagi dan ia juga membuat widget toolkit sendiri. Semuanya ditulis dalam C.
OS lain yang menarik adalah pedigreeOS . Itu dibuat oleh JamesM (orang di belakang tutorial kernel jamesM . Meskipun memiliki lebih banyak fitur daripada ToaruOS itu juga lebih besar dan lebih membingungkan.
Tapi bagaimanapun 2 OS ini akan banyak membantu Anda terutama ToAruOS.
sumber
Ketika saya mulai bekerja pada sistem operasi dasar saya, saya membutuhkan panduan dasar seperti batu loncatan untuk sistem operasi dasar . Itu membantu saya tidak kehilangan kepalaku.
Bahwa jika Anda ingin membuatnya dari nol (kode assembly murni)
sumber