X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/e8e64a4f1d76aaeac3defa13243505cccd25c078..0165ff6162aa6546f9f471edff7eed8672c3159b:/README.md diff --git a/README.md b/README.md index a349d23..c161be6 100644 --- a/README.md +++ b/README.md @@ -3,15 +3,25 @@
- ç®ä½ä¸æ | English + ç®ä½ä¸æ | English
-# LunaixOS Project +# The LunaixOS Project + LunaixOS - ä¸ä¸ªç®åçï¼è¯¦ç»çï¼POSIXå ¼å®¹çï¼ä½æ¿ï¼ï¼ï¼å¸¦ææµéä¸ªäººé£æ ¼çæä½ç³»ç»ãå¼åè¿ç¨ä»¥è§é¢æç¨å½¢å¼å¨Bilibiliåç°ï¼[ãä»é¶å¼å§èªå¶æä½ç³»ç»ç³»åã](https://space.bilibili.com/12995787/channel/collectiondetail?sid=196337)ã -## å½åè¿åº¦ä»¥åæ¯æçåè½ +## 1. ä¸äºå®ç¨èµæº + +妿ææç 读LunaixOSçå æ ¸ä»£ç åå ¶ä¸ç设计ï¼ä»¥ä¸èµæå¯è½ä¼å¯¹æ¤æç¨ã + ++ [ææ°çLunaixOSæºä»£ç åææç¨](docs/tutorial/0-æç¨ä»ç»åç¯å¢æå»º.md) ++ [å æ ¸èæå åç详ç»å¸å±](docs/img/lunaix-os-mem.png) ++ [LunaixOSå¯å¨æµç¨æ¦è§](docs/img/boot_sequence.jpeg) ++ LunaixOSæ»ä½æ¶ææ¦è§ï¼WIPï¼ -该æä½ç³»ç»æ¯æx86æ¶æï¼è¿è¡å¨ä¿æ¤æ¨¡å¼ä¸ï¼éç¨å®å æ ¸æ¶æï¼ç®åä» æ¯æåæ ¸å¿ãå åç»æéç¨ç»å ¸ç3:1ååï¼å³ä½3GiBä¸ºç¨æ·å°å空é´ï¼0x400000 ~ 0xBFFFFFFFï¼ï¼å æ ¸å°å空é´éæ å°è³é«1GiBï¼0xC0000000 ~ 0xFFFFFFFFï¼ãå åç详ç»å¸å±å¯åè[LunaixOSå åå°å¾](docs/img/lunaix-os-mem.png) +## 2. å½åè¿åº¦ä»¥åæ¯æçåè½ + +该æä½ç³»ç»æ¯æx86æ¶æï¼è¿è¡å¨ä¿æ¤æ¨¡å¼ä¸ï¼éç¨å®å æ ¸æ¶æï¼ç®åä» æ¯æåæ ¸å¿ãæ¶æä¸å æ ¸çè§£è¦å工使£å¨è¿è¡ä¸ã å¨ä¸è¿°å表ä¸ï¼åååºç®åææ¯æçæç¨åè½åç¹æ§ãå表项æç §é¡¹ç®æ¶é´æ³è¿è¡ååºæåã @@ -19,60 +29,100 @@ LunaixOS - ä¸ä¸ªç®åçï¼è¯¦ç»çï¼POSIXå ¼å®¹çï¼ä½æ¿ï¼ï¼ï¼å¸¦æ + APIC/IOAPICä½ä¸ºä¸æç®¡çå¨å计æ¶å¨ + ACPI + èæå å -+ å å管ç䏿éå页ï¼Demand Pagingï¼ ++ å å管ç䏿éå页 + é®çè¾å ¥ + å¤è¿ç¨ -+ 17个常è§çLinux/POSIXç³»ç»è°ç¨ï¼[éå½1](#appendix1)ï¼ ++ 54个常è§çLinux/POSIXç³»ç»è°ç¨ï¼[éå½1](#appendix1)ï¼ + ç¨æ·æ¨¡å¼ + ä¿¡å·æºå¶ + PCI 3.0 + PCIe 1.1 (WIP) -+ Serial ATA AHCI (WIP) - -## ç®å½ç»æ - -| | | -|-----|------| -| [lunaix-os](lunaix-os/) | LunaixOSæºä»£ç | -| [slides](slides/) | è§é¢ä¸æç¨çå¹»ç¯çåè¡¥å ææ | -| [reference-material](reference-material/)| æ åï¼ææ¯ææ¡£ååèæç® | - -## ç¼è¯ä¸æå»º ++ Serial ATA AHCI ++ æä»¶ç³»ç» + + èææä»¶ç³»ç» + + ISO9660 + + åç + + Rock Ridgeæå± ++ è¿ç¨GDB串å£è°è¯ (COM1@9600Bd) ++ ç¨æ·ç¨åºå è½½ä¸æ§è¡ ++ 卿龿¥ (WIP) ++ éç¨è®¾å¤æ½è±¡å± ++ éç¨å¾å½¢è®¾å¤æ½è±¡å± + + æ åVGAå®ç° ++ èæç»ç«¯è®¾å¤æ¥å£ï¼å ¼å®¹ POSIX.1-2008ï¼ + +å·²ç»æµè¯è¿çç¯å¢ï¼ + ++ QEMU (>=7.0.0) ++ Bochsï¼SATAåè½ä¸æ¯æï¼ ++ Virtualbox ++ Dell G3 3779 + +## 3. ç®å½ç»æ + +| | | +| ----------------------------------------- | ---------------------------- | +| [lunaix-os](lunaix-os/) | LunaixOSæºä»£ç | +| [slides](slides/) | è§é¢ä¸æç¨çå¹»ç¯çåè¡¥å ææ | +| [reference-material](reference-material/) | æ åï¼ææ¯ææ¡£ååèæç® | + +## 4. ç¼è¯ä¸æå»º æå»ºè¯¥é¡¹ç®éè¦æ»¡è¶³ä»¥ä¸æ¡ä»¶ï¼ -+ gcc (ç®æ å¹³å°: i686-elf) -+ binutils ++ gcc å·¥å ·é¾ + make + xorriso + grub-mkrescue -**注æï¼gccä¸è½æ¯æ¬æºèªå¸¦çï¼å¿ é¡»è¦ä»æºç ç¼è¯ï¼å¹¶é ç½®ç®æ å¹³å°ä¸ºï¼`i686-elf`ï¼ä»¥è¿è¡äº¤åç¼è¯ãé ç½®è¿ç¨å¯åè[éå½äºï¼ç¼è¯gccä½ä¸ºäº¤åç¼è¯å¨](#appendix2)ã** +### 4.1 ä½¿ç¨ GNU CC å·¥å ·é¾ + +æ£å¦å大夿°OS䏿 ·ï¼LunaixOS æ¯ä¸ä¸ªæ··åäº C åæ±ç¼ç产ç©ãè¿å°±æå³çä½ å¾è¦ä½¿ç¨ä¸äºæ åçCç¼è¯å¨æ¥æå»ºLunaixãå¨è¿éï¼ææ¨èä½¿ç¨ GNU CC å·¥å ·é¾æ¥è¿è¡æå»ºãè³äºå ¶ä»çå·¥å ·é¾ï¼å¦llvmï¼ä¹å¯ä»¥å»å°è¯ï¼ä½å¯¹æ¤æå°±ä¸è½ä½ä»»ä½çä¿è¯äºã + +å¦æä½ ä½¿ç¨çæ¯åºäº x86 æä»¤éçLinuxç³»ç»ï¼ä¸è®ºæ¯64ä½è¿æ¯32ä½ï¼**å ¶æ¬æºèªå¸¦çgcc就足以ç¼è¯Lunaix**ã å½ç¶äºï¼å¦æè¯´ä½ ç平尿¯å ¶ä»éx86çï¼ä½ ä¹å¯ä»¥æå®ä½¿ç¨æä¸ªé对x86_32çgccå¥ä»¶æ¥è¿è¡äº¤åç¼è¯ââå¨`make`æ¶éè¿`CX_PREFIX`å鿥æå®gccå¥ä»¶çåç¼ãå¦ä¸ä¾æç¤ºï¼æä»¬å¯ä»¥å¨ä»»æå¹³å°ä¸ï¼å¦risc-vï¼åç¬ä½¿ç¨ä¸ä¸ªé¢åx86_32çgccæ¥è¿è¡äº¤åç¼è¯ï¼ + +``` +make CX_PREFIX=i686-linux-gnu- all +``` + +ç±äºç®åLunaixä» æ¯æx86_32å¾®æ¶æï¼ `CX_PREFIX` æåçgccå¿ é¡»å ·æé对x86_32æ¶æè¿è¡äº¤åç¼è¯çè½åã + +### 4.2 Dockeréå + +对äºå¼åç¯å¢ï¼æ¬é¡¹ç®ä¹æä¾äºDockeréåå°è£ ãå¼ç®±å³ç¨ï¼æ éé ç½®ï¼é常éåæäººæææ¶è ã详ç»ä½¿ç¨æ¹æ³è¯·è½¬å°ï¼[Lunaix OSDK项ç®](https://github.com/Minep/os-devkit)ã + +### 4.3 æå»ºé项 åè¥æ¡ä»¶æ»¡è¶³ï¼é£ä¹å¯ä»¥ç´æ¥æ§è¡`make all`è¿è¡æå»ºï¼å®æåå¯å¨çæç`build`ç®å½ä¸æ¾å°å¯å¼å¯¼çisoã æ¬é¡¹ç®æ¯æçmakeå½ä»¤ï¼ -| å½ä»¤ | ç¨é | -|---|---| -| `make all` | æå»ºéåï¼`-O2`ï¼ | -| `make all-debug` | æå»ºéåè°è¯ç¨çéåï¼`-Og`ï¼ | -| `make run` | 使ç¨QEMUè¿è¡buildç®å½ä¸çéå| -| `make debug-qemu` | æå»ºå¹¶ä½¿ç¨QEMUè¿è¡è°è¯ | -| `make debug-bochs` | æå»ºå¹¶ä½¿ç¨Bochsè¿è¡è°è¯ | -| `make debug-qemu-vscode` | ç¨äºvscodeæ´å | -| `make clean` | å é¤buildç®å½ | +| å½ä»¤ | ç¨é | +| ------------------------ | ----------------------------------------------- | +| `make all` | æå»ºéåï¼`-O2`ï¼ä½ç¦ç¨CSEç¸å ³çä¼å项 **â»** ï¼ | +| `make instable` | æå»ºéåï¼`-O2`ï¼å¼å¯CSEç¸å ³ä¼åï¼ | +| `make all-debug` | æå»ºéåè°è¯ç¨çéåï¼`-Og`ï¼ | +| `make run` | 使ç¨QEMUè¿è¡buildç®å½ä¸çéå | +| `make debug-qemu` | æå»ºå¹¶ä½¿ç¨QEMUè¿è¡è°è¯ | +| `make debug-bochs` | æå»ºå¹¶ä½¿ç¨Bochsè¿è¡è°è¯ | +| `make debug-qemu-vscode` | ç¨äºvscodeæ´å | +| `make clean` | å é¤buildç®å½ | + +**â»ï¼ç±äºå¨`-O2`模å¼ä¸ï¼GCCä¼è¿è¡CSEä¼åï¼è¿å¯¼è´LunaixOSä¼åºç°ä¸äºé叏奿ªã离谱çbugï¼ä»èå½±åå°åºæ¬è¿è¡ãå ·ä½åå æå¾ è°æ¥ã** + +## 5. è¿è¡ï¼åæ¯ä»¥å Issue -## è¿è¡ä»¥åIssue +### 5.1 èæç£çï¼éå¿ é¡»ï¼ -è¿è¡è¯¥æä½ç³»ç»éè¦ä¸ä¸ªèæç£çéåï¼å¯ä»¥ä½¿ç¨å¦ä¸å½ä»¤å¿«éå建ä¸ä¸ªï¼ +ä½ å¯ä»¥ç»å®ä¸ä¸ªèæç£çéåï¼å¯ä»¥ä½¿ç¨å¦ä¸å½ä»¤å¿«éå建ä¸ä¸ªï¼ ```bash -qemu-img create -f vdi machine/disk1.vdi 128M +qemu-img create -f vdi machine/disk0.vdi 128M ``` å¦æä½ æ³è¦ä½¿ç¨å«çç£çéåï¼éè¦ä¿®æ¹`configs/make-debug-tool` æ¾å°è¿ä¸è¡ï¼ + ``` -drive id=disk,file="machine/disk0.vdi",if=none \ ``` @@ -81,27 +131,41 @@ qemu-img create -f vdi machine/disk1.vdi 128M æå¾å¤åæ³å»å建ä¸ä¸ªèæç£çï¼æ¯å¦[qemu-img](https://qemu-project.gitlab.io/qemu/system/images.html)ã -å¨å¤§å¤æ°æ åµä¸ï¼æé½ä¼å°½éä¿è¯æ¬æºè¿è¡æ 误åï¼pushå°ä»åºä¸ãåæ¶ï¼è¯¥ç³»ç»æ¯ç»è¿æ¬æºæµè¯ï¼è½å¤å¨Bochsï¼QEMU (`= 7.0`)ï¼VirtualBox䏿£å¸¸çè¿è¡ï¼ææ¶æ²¡è¯è¿çæºï¼ã妿åç°å¨ä½¿ç¨`make all`ä¹åï¼èææºä¸è¿è¡æ¥éï¼åä¸è¬æ¯ç¼è¯å¨ä¼åé®é¢ãè¿ä¸ªé®é¢ç¬è ä¸è¬å¾å¿«å°±ä¼ä¿®å¤ï¼å¦æä½ 使ç¨å«ççæ¬çgccï¼ç¬è çæ¬11.2ï¼ï¼åºç°äºæ¤é®é¢ï¼æ¬¢è¿æissueã请åè[éå½3ï¼Issueçæäº¤](#appendix3) +### 5.2 代ç ç¨³å®æ§ + +䏻忝ä¸è¬æ¯ç¨³å®çãå 为å¨å¤§å¤æ°æ åµä¸ï¼æé½ä¼å°½éä¿è¯æ¬æºè¿è¡æ 误åï¼pushå°è¯¥åæ¯ä¸ãè³äºå ¶ä»ç忝ï¼åæ¯ä½ä¸ºæ è®°æè æ¯å¼åä¸çåè½ãåè æ è®°ç¨åæ¯ä¸è¬ä¼å¾å¿«å æï¼åè å¼å忝ä¸è½ä¿è¯ç¨³å®æ§ï¼è¿äºåæ¯çä»£ç æå¯è½æ²¡æç»è¿æµè¯ï¼ä½å¯ä»¥ä½ä¸ºLunaixå½åå¼åè¿åº¦çåèã + +è¯¥ç³»ç»æ¯ç»è¿èææºåçæºæµè¯ã妿åç°å¨ä½¿ç¨`make all`ä¹åï¼èææºä¸è¿è¡æ¥éï¼åä¸è¬æ¯ç¼è¯å¨ä¼åé®é¢ãè¿ä¸ªé®é¢ç¬è ä¸è¬å¾å¿«å°±ä¼ä¿®å¤ï¼å¦æä½ 使ç¨å«ççæ¬çgccï¼ç¬è çæ¬11.2ï¼ï¼åºç°äºæ¤é®é¢ï¼æ¬¢è¿æissueã请åè[éå½3ï¼Issueçæäº¤](#appendix3) ä¸é¢ååºä¸äºå¯è½ä¼åºç°çé®é¢ã -#### é®é¢#1ï¼ QEMUä¸8042æ§å¶å¨æç¤ºæ¾ä¸å°ã +#### é®é¢#1ï¼ QEMUä¸8042æ§å¶å¨æç¤ºæ¾ä¸å° è¿æ¯QEMUé ç½®ACPIæ¶çä¸ä¸ªbugï¼å¨7.0.0çä¸ä¿®å¤äºã -#### é®é¢#2ï¼å¤è¿ç¨è¿è¡æ¶ï¼å¶å°ä¼åºç°General Protectioné误ã +#### é®é¢#2ï¼å¤è¿ç¨è¿è¡æ¶ï¼å¶å°ä¼åºç°General Protectioné误 è¿å¾å¤§æ¦çæ¯åºç°äºç«ææ¡ä»¶ãè½ç¶æ¯ç¸å½ä¸å¯è½çãä½å¦æåºç°äºï¼è¿æ¯è¯·æissueã -#### é®é¢#3ï¼Bochsè¿è¡æ¶ï¼æç¤ºæ¾ä¸å°AHCIæ§å¶å¨ +#### é®é¢#3ï¼Bochsæ æ³è¿è¡ï¼æç¤ºæ¾ä¸å°AHCIæ§å¶å¨ æ£å¸¸ï¼**å 为Bochs䏿¯æSATA**ã请使ç¨QEMUæVirtualBoxã -#### é®é¢#4ï¼é®ççä¸ä¸æ¹åé®ï¼ç¨äºæ»å±ï¼å¨VirtualBox䏿æ¶ä¸å¥½ä½¿ +## 6. è°è¯ Lunaix å æ ¸ -å¯ä»¥è¯è¯`Shift+<æ¹åé®>`ï¼è¿ä¸ªé®é¢çè§£å³éè¦éåé®ç驱å¨çç¶ææºãæä¼æ¾æ¶é´å»åï¼æ¯ç«è¿ä¸æ¯çç乿¥ã +é¤äº[éå½4ï¼ä¸²å£GDBè¿ç¨è°è¯](#appendix4)æè¿°çä¸ç§ç¨äºå®æºè°è¯çæ¹å¼ä»¥å¤ãLunaixOSè¿æä¾äºLunaDBGè°è¯å¥ä»¶ãè¿æ¯ä¸ä¸ªGDB客æ·ç«¯æä»¶ï¼å å«äºå¯¹GDBåçå½ä»¤éçä¸äºæ©å ï¼ä¸»è¦ç¨äºæ¹åä¸ç®åå æ ¸è°è¯çè¿ç¨ãç®åå å«ä»¥ä¸å 个å½ä»¤ï¼ -## åèæç¨ ++ `vmrs [pid]` å举è¿ç¨`