2010-05-10 32 views
25

Tôi muốn tạo một hệ điều hành mới cho máy tính PC x86. Tôi muốn nó là 64-bit nhưng có thể chạy như 32-bit là tốt.Cách tạo hệ điều hành x86 riêng cho máy tính PC hiện đại

Tôi có các loại câu hỏi sau:

Bạn bắt đầu làm việc gì trước tiên? Biết nơi bắt đầu bằng văn bản hệ điều hành của riêng bạn dường như với tôi là một chủ đề khó khăn, vì vậy tôi quan tâm đến đầu vào của bạn.

Thông thường cách tạo hệ điều hành 32 bit/64 bit của riêng bạn hoặc các tài nguyên tốt đề cập đến thông tin hữu ích về cách viết hệ điều hành của riêng bạn cho máy tính x86. Tôi không quan tâm các nguồn cũ miễn là chúng vẫn có liên quan và hữu ích với những gì tôi đang làm.

Tôi biết rằng tôi sẽ muốn nó có trình điều khiển hạt nhân truy cập trực tiếp phần cứng ngoại vi. Tôi nên tìm lời khuyên và tài liệu để lập trình và hiểu giao diện cho phần cứng ngoại vi mà hệ điều hành sẽ liên lạc với ai? Tôi sẽ cần phải hiểu làm thế nào hệ điều hành sẽ nhận được đầu vào và tương tác với bàn phím, chuột, màn hình máy tính, ổ đĩa cứng, USB, vv vv Đây có lẽ là khu vực tôi biết ít nhất về.

Tôi có hướng dẫn sử dụng bộ hướng dẫn của Intel và đã quen thuộc hơn với lập trình lắp ráp, do đó bên CPU của mọi thứ là những gì tôi biết nhiều nhất.

Tại thời điểm này, tôi nghĩ rằng tôi muốn thực hiện các cuộc gọi hệ thống Linux trong hệ điều hành của mình để các chương trình chạy trên Linux có thể chạy trên hệ điều hành của tôi. Tôi muốn hệ điều hành của tôi sử dụng định dạng nhị phân ELF. Tôi tự hỏi những trở ngại nào tôi phải vượt qua để đạt được khả năng tương thích với Linux này. Có phải những điều chính đang triển khai hệ thống gọi là Linux cung cấp và sử dụng định dạng ELF? Còn gì nữa?

Tôi cũng quan tâm đến suy nghĩ của mọi người về lý do tại sao bạn không nên tạo hệ điều hành của riêng mình và tại sao bạn nên tạo hệ điều hành của riêng mình.

Cảm ơn bạn đã nhập bất kỳ thông tin nào.

+2

Tương tự như http://stackoverflow.com/questions/1224617/how-can-i-build-a-small-operating-system-on-an-old-desktop-computer –

+7

Thật tuyệt khi thấy không "không thậm chí không thử nó quá khó! " câu trả lời. –

+2

nếu bạn đang tìm kiếm một số mã để bắt đầu, hãy xem [hệ điều hành tối thiểu này] (http://stackoverflow.com/a/6143888/309483). –

Trả lời

13

Có thể bạn sẽ chỉ muốn nó chạy bên trong máy ảo để bắt đầu. Đó là một PITA đang cố gắng phát triển một hệ điều hành trên phần cứng thực tế (với việc khởi động lại liên tục và gỡ lỗi-nối tiếp-cáp).

Bên trong máy ảo, bạn thường có bộ phần cứng được đơn giản hóa (và tương đối chuẩn) để hỗ trợ có thể dễ dàng phát triển ban đầu. Đặc biệt, nếu bạn muốn hiển thị cho người khác hệ điều hành của bạn, bạn chỉ cần cung cấp cho họ một tệp .vhd và tự tin hợp lý rằng nếu nó hoạt động cho bạn thì nó cũng sẽ làm việc cho họ.

Bạn cũng có thể muốn bắt đầu với một cái gì đó đã được bật lên & chạy ban đầu (ví dụ: Singularity của Microsoft là khá gọn gàng). Điều đó sẽ cho phép bạn có được tất cả các bộ nạp khởi động và trình điều khiển thiết bị cơ bản trên đường đi và bạn có thể truy cập vào các công cụ "thịt" nhanh hơn.

+1

Tuyệt vời.Một trình giả lập như bochs http://bochs.sourceforge.net/? – mudge

+1

Bochs là hệ điều hành amoungst devers khá phổ biến, vâng. VMWare, Virtual PC và VirtualBox sẽ là đủ, quá (mặc dù Bochs đã hỗ trợ tuyệt vời cho hệ điều hành gỡ lỗi) –

+0

Tôi đã tìm thấy Qemu là một thay thế nhanh hơn và dễ dàng hơn kịch bản cho Bochs. Bochs được cấu hình hoặc tại thời gian chạy (gây phiền nhiễu nếu bạn chạy nó rất nhiều, như sau mỗi lần cập nhật) hoặc với một tập tin cấu hình. Cá nhân, tôi không thích sử dụng các tập tin cấu hình. Bạn sẽ nhận được nhiều thông tin gỡ lỗi hơn, đặc biệt nếu bạn tự xây dựng nó với tính năng gỡ lỗi bổ sung được bật. Qemu, mặt khác, có thể được cấu hình từ dòng comand. Bochs cũng là một trình giả lập, trong khi Qemu là một máy ảo dựa trên JIT. Đó là một sự cân bằng một trong hai cách. – Tyler

8
+0

Tôi đồng ý. Tôi cũng khuyên bạn nên viết một vài trình điều khiển hạt nhân cho Linux (nhiều hướng dẫn, mã nguồn trên mạng), vì vậy bạn có thể có được một lượng lớn nỗ lực mà bạn có thể tham gia ... – tucuxi

+0

cải thiện phiên bản thứ 3. Thiết kế và triển khai hệ điều hành (Phiên bản thứ 3) – limitcracker

4

Bạn sẽ phải thực hiện một số loại bảng mô tả để kích hoạt chế độ 32-bit. Bật tính năng đa luồng không phải là một nhiệm vụ dễ dàng và gần như chắc chắn sẽ là điều kiện tiên quyết. Bạn có thể cũng muốn phát triển hỗ trợ hệ thống tập tin sớm để có được một hình ảnh đĩa mềm hoặc bất cứ điều gì bạn đang sử dụng.

Tôi chắc chắn bạn sẽ gặp phải trang web này trong quá khứ http://wiki.osdev.org/Main_Page nhưng có rất nhiều bài viết hay.

Bạn cũng có thể thấy cuốn sách này hữu ích cho giai đoạn phát triển bạn đang ở: The Indispensable PC Hardware Book nó đi vào chi tiết và có nhiều sơ đồ cũng như một số đoạn mã.

6

Tôi khuyên bạn nên đầu tiên nghiên cứu một hệ điều hành nhỏ như Minix1 được xây dựng cho mục đích giáo dục hoặc Minix3 tuân thủ POSIX.

20

Tốt hơn là bạn hãy xem mã nguồn Linux 0.01. nó là phiên bản đầu tiên của hệ điều hành. nó rất đơn giản và mang tính thông tin. Đây là một nơi tốt để bắt đầu

1

Bắt đầu với bộ nạp khởi động, tìm hiểu về việc lấy bản đồ bộ nhớ, quét bus PCI, khởi tạo các chip khác nhau, chẳng hạn như APIC và cách chuyển sang chế độ được bảo vệ.

Một khi bạn đã khởi động hạt nhân, hãy thử viết thói quen sẽ xuất ra màn hình, đọc từ bàn phím, nhận trình gỡ lỗi đơn giản, theo sau là trình quản lý bộ nhớ vật lý và sau đó là trình quản lý bộ nhớ ảo. Hai cái sau không thể được tắt lâu, bởi vì mọi chương trình, kể cả hệ điều hành, cần một cách để cấp phát và giải phóng bộ nhớ theo một cách có trật tự.

1

Chỉ cần cung cấp phương pháp tiếp cận đề xuất mới ... người ta có thể hình ảnh bộ nạp khởi động vào USB hoặc RW CD, sau đó hướng máy tính của bạn để sử dụng làm thiết bị chính. Tôi đã cài đặt Vista và tôi chỉ cần cắm USB với bộ tải khởi động và tệp tin kernel.bin để kiểm tra hệ điều hành đồ chơi của tôi. Hãy chắc chắn sử dụng cùng một thiết bị để lưu các tệp bổ sung hoặc bất kỳ phần bổ sung nào để bạn không làm hỏng ổ đĩa cứng của mình. Khi hệ điều hành của bạn có tất cả những điều cơ bản tại chỗ mua một máy tính rác, cài đặt hệ điều hành của bạn với nó và mở rộng từ đó.

1

https://github.com/rajneshrat/ratos

Đây là os tối thiểu với sau support- mạng, vm hỗ trợ, ngắt hỗ trợ, hỗ trợ PCI.

+0

Tôi không thử hệ điều hành đó. Bạn có thể cung cấp một hình ảnh đĩa mềm chuẩn cho những ai muốn xem nó trước khi cố gắng xây dựng phiên bản riêng của họ không? – ssh

2

Nếu bạn muốn phát triển hệ điều hành của riêng bạn, động thái đầu tiên của bạn là đi lang thang trong diễn đàn osdev (http://forum.osdev.org/), và đọc tốt wiki của họ: http://wiki.osdev.org/Main_Page.

Tôi đã tìm thấy những người ở đó không chỉ có kiến ​​thức mà còn vô cùng hữu ích, họ thậm chí sẽ chỉ ra những sai lầm trong đoạn mã của bạn!

Tôi bắt đầu với hướng dẫn x86 của James Molloy (Google tôi không được phép đăng liên kết này). Bạn có thể bắt đầu với mã của mình và sau đó hack, hack, hack :-).

+0

Lưu ý rằng hướng dẫn của James Molloy là lỗi. Vui lòng xem http://wiki.osdev.org/James_Molloy's_Tutorial_Known_Bugs để biết thêm thông tin. – glauxosdever

Các vấn đề liên quan