Skip to content

rcore-os/zCore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

zCore

CI Docs Coverage Status issue forks stars license

ๅŸบไบŽ zircon ๅนถๆไพ› Linux ๅ…ผๅฎนๆ€ง็š„ๆ“ไฝœ็ณป็ปŸๅ†…ๆ ธใ€‚

ๅŽŸ็‰ˆREADME

Reimplement Zircon microkernel in safe Rust as a userspace program!

  • zCore่ฎพ่ฎกๆžถๆž„ๆฆ‚่ฟฐ
  • ๆ”ฏๆŒbare-metalๆจกๅผ็š„Zircon & Linux
  • ๆ”ฏๆŒlibosๆจกๅผ็š„Zircon & Linux
  • ๆ”ฏๆŒ็š„ๅ›พๅฝขๅบ”็”จ็จ‹ๅบ็ญ‰ๆ›ดๅคšๆŒ‡ๅฏผ่ฏทๆŸฅ็œ‹ๅŽŸ็‰ˆREADMEๆ–‡ๆกฃใ€‚

ๅฏๅŠจๅ†…ๆ ธ

cargo qemu --arch riscv64

่ฟ™ไธชๅ‘ฝไปคไผšไฝฟ็”จ qemu-system-riscv64 ๅฏๅŠจ zCoreใ€‚

้ป˜่ฎค็š„ๆ–‡ไปถ็ณป็ปŸไธญๅฐ†ๅŒ…ๅซ busybox ๅบ”็”จ็จ‹ๅบๅ’Œ musl-libc ้“พๆŽฅๅ™จใ€‚ๅฎƒไปฌๆ˜ฏ็”จ่‡ชๅŠจไธ‹่ฝฝ็š„ musl-libc RISC-V ไบคๅ‰็ผ–่ฏ‘ๅทฅๅ…ท้“พ็ผ–่ฏ‘็š„ใ€‚

็›ฎๅฝ•

้กน็›ฎๆž„ๅปบ

้กน็›ฎๆž„ๅปบ้‡‡็”จ xtask ๆจกๅผ๏ผŒๅธธ็”จๆ“ไฝœ่ขซๅฐ่ฃ…ๆˆ cargo ๅ‘ฝไปคใ€‚

ๅฆๅค–๏ผŒ่ฟ˜้€š่ฟ‡ Makefile ๆไพ› make ่ฐƒ็”จ๏ผŒไปฅๅ…ผๅฎนไธ€ไบ›ๆ—ง่„šๆœฌใ€‚

็›ฎๅ‰ๅทฒๆต‹่ฏ•็š„ๅผ€ๅ‘็ŽฏๅขƒๅŒ…ๆ‹ฌ Ubuntu20.04ใ€Ubuntu22.04 ๅ’Œ Debian11๏ผŒUbuntu22.04 ไธ่ƒฝๆญฃ็กฎ็ผ–่ฏ‘ x86_64 ็š„ libc ๆต‹่ฏ•ใ€‚่‹ฅไธ้œ€่ฆ็ƒงๅ†™ๅˆฐ็‰ฉ็†็กฌไปถ๏ผŒไฝฟ็”จ WSL2 ๆˆ–ๅ…ถไป–่™šๆ‹Ÿๆœบ็š„ๆ“ไฝœไธŽ็œŸๆœบๅนถๆ— ไธๅŒไน‹ๅค„ใ€‚

ๆž„ๅปบๅ‘ฝไปค

ๅ‘ฝไปค็š„ๅŸบๆœฌๆ ผๅผไธบ cargo <command> [--args [value]]๏ผŒ่ฟ™ๅฎž้™…ไธŠๆ˜ฏ cargo run --package xtask --release -- <command> [--args [value]] ็š„็ฎ€ๅ†™ใ€‚command ่ขซไผ ้€’็ป™ xtask ๅบ”็”จ็จ‹ๅบ๏ผŒ่งฃๆžๅนถๆ‰ง่กŒใ€‚

่ฎธๅคšๅ‘ฝไปค็š„ๆ•ˆๆžœๅ—ๅˆฐไป“ๅบ“็Žฏๅขƒ็š„ๅฝฑๅ“๏ผŒไนŸไผšๅฝฑๅ“ไป“ๅบ“็š„็Žฏๅขƒใ€‚ไธบไบ†ไฝฟ็”จๆ–นไพฟ๏ผŒๅฆ‚ๆžœไธ€ไธชๅ‘ฝไปคไพ่ต–ไบŽๅฆไธ€ไธชๅ‘ฝไปค็š„ๆ•ˆๆžœ๏ผŒๅฎƒไปฌ่ขซ่ฎพ่ฎกไธบ้€’ๅฝ’็š„ใ€‚ๅ‘ฝไปค็š„้€’ๅฝ’ๅ…ณ็ณปๅ›พๅฆ‚ไธ‹๏ผŒๅฏนไบŽๅฎƒไปฌ็š„่ฏฆ็ป†่งฃ้‡Šๅœจไธ‹ไธ€่Š‚๏ผš


NOTICE ๅปบ่ฎฎไฝฟ็”จ็ญ‰ๅฎฝๅญ—ไฝ“


โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
| update-all | | check-style | | zircon-init |
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”Œโ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
| asm | | qemu |โ”€โ†’| bin |  | linux-libos | | libos-libc-test |
โ””โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                     |            โ””โ”€โ”€โ”€โ”โ”Œโ”€โ”€โ”€โ”€โ”€โ”˜   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                     โ†“                โ†“โ†“      โ”Œโ”€โ”€| libc-test |
                 โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”โ†โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                 | image |โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’| rootfs |โ†โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                 โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€| other-test |
                 โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”           โ†‘         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                 | opencv |โ”€โ”€โ”€โ”€โ†’โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                 โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”Œโ”€โ†’| musl-libc |
                 โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  |  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                 | ffmpeg |โ”€โ”€โ”˜
                 โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
-------------------------------------------------------------------
ๅ›พไพ‹๏ผšA ้€’ๅฝ’ๆ‰ง่กŒ B๏ผˆA ไพ่ต– B ็š„็ป“ๆžœ๏ผŒๆ‰ง่กŒ A ๆ—ถ่‡ชๅŠจๅ…ˆๆ‰ง่กŒ B๏ผ‰
โ”Œโ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”
| A |โ”€โ†’| B |
โ””โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”˜

ๅ‘ฝไปคๅ‚่€ƒ

ๅฆ‚ๆžœไธ‹้ข็š„ๅ‘ฝไปคๆ่ฟฐไธŽ่กŒไธบไธ็ฌฆ๏ผŒๆˆ–ๆ€€็–‘ๆญคๆ–‡ๆกฃๆ›ดๆ–ฐไธๅŠๆ—ถ๏ผŒไบฆๅฏ็›ดๆŽฅๆŸฅ็œ‹ๅ†…่”ๆ–‡ๆกฃใ€‚ ๅฆ‚ๆžœๅ‘็Žฐ error: no such subcommand: ...๏ผŒๆŸฅ็œ‹ๅ‘ฝไปค็ฎ€ๅ†™ไธบๅ“ชไบ›ๅ‘ฝไปค่ฎพ็ฝฎไบ†ๅˆซๅใ€‚


NOTICE ๅ†…่”ๆ–‡ๆกฃไนŸๆ˜ฏไธญ่‹ฑๅŒ่ฏญ


update-all

ๆ›ดๆ–ฐๅทฅๅ…ท้“พใ€ไพ่ต–ๅ’Œ git ๅญๆจกๅ—ใ€‚

ๅฆ‚ๆžœๆฒกๆœ‰้€’ๅฝ’ๅ…‹้š†ๅญๆจกๅ—๏ผŒๅฏไปฅไฝฟ็”จ่ฟ™ไธชๅ‘ฝไปคๅ…‹้š†ใ€‚

cargo update-all

check-style

้™ๆ€ๆฃ€ๆŸฅใ€‚่ฎพ็ฝฎๅคš็ง็ผ–่ฏ‘้€‰้กน๏ผŒๆฃ€ๆŸฅไปฃ็ ่ƒฝๅฆ็ผ–่ฏ‘ใ€‚

cargo check-style

zircon-init

ไธ‹่ฝฝ zircon ๆจกๅผๆ‰€้œ€็š„ไบŒ่ฟ›ๅˆถๆ–‡ไปถใ€‚

cargo zircon-init

asm

ๅๆฑ‡ๅนถไฟๅญ˜็ผ–ๆŒ‡ๅฎšๆžถๆž„็š„ๅ†…ๆ ธใ€‚้ป˜่ฎคไฟๅญ˜ๅˆฐ target/zcore.asmใ€‚

cargo asm -m virt-riscv64 -o z.asm

bin

็”Ÿๆˆๅ†…ๆ ธ raw ้•œๅƒๅˆฐๆŒ‡ๅฎšไฝ็ฝฎใ€‚้ป˜่ฎค่พ“ๅ‡บๅˆฐ target/{arch}/release/zcore.binใ€‚

cargo bin -m virt-riscv64 -o z.bin

qemu

ๅœจ Qemu ไธญๅฏๅŠจ zCoreใ€‚่ฟ™้œ€่ฆ Qemu ๅทฒ็ปๅฎ‰่ฃ…ๅฅฝไบ†ใ€‚

cargo qemu --arch riscv64 --smp 4

ๆ”ฏๆŒๅฐ† qemu ่ฟžๆŽฅๅˆฐ gdb๏ผš

cargo qemu --arch riscv64 --smp 4 --gdb 1234

rootfs

้‡ๅปบ Linux rootfsใ€‚็›ดๆŽฅๆ‰ง่กŒ่ฟ™ไธชๅ‘ฝไปคไผšๆธ…็ฉบๅทฒๆœ‰็š„ไธบๆญคๆžถๆž„ๆž„้€ ็š„ rootfs ็›ฎๅฝ•๏ผŒ้‡ๅปบๆœ€ๅฐ็š„ rootfsใ€‚

cargo rootfs --arch riscv64

musl-libs

ๅฐ† musl ๅŠจๆ€ๅบ“ๆ‹ท่ดๅˆฐ rootfs ็›ฎๅฝ•ๅฏนๅบ”ไฝ็ฝฎใ€‚

cargo musl-libs --arch riscv64

ffmpeg

ๅฐ† ffmpeg ๅŠจๆ€ๅบ“ๆ‹ท่ดๅˆฐ rootfs ็›ฎๅฝ•ๅฏนๅบ”ไฝ็ฝฎใ€‚

cargo ffmpeg --arch riscv64

opencv

ๅฐ† opencv ๅŠจๆ€ๅบ“ๆ‹ท่ดๅˆฐ rootfs ็›ฎๅฝ•ๅฏนๅบ”ไฝ็ฝฎใ€‚ๅฆ‚ๆžœ ffmpeg ๅทฒ็ปๆ”พๅฅฝไบ†๏ผŒopencv ๅฐ†ไผš็ผ–่ฏ‘ๅ‡บๅŒ…ๅซ ffmepg ๆ”ฏๆŒ็š„็‰ˆๆœฌใ€‚

cargo opencv --arch riscv64

libc-test

ๅฐ† libc ๆต‹่ฏ•้›†ๆ‹ท่ดๅˆฐ rootfs ็›ฎๅฝ•ๅฏนๅบ”ไฝ็ฝฎใ€‚

cargo libc-test --arch riscv64

other-test

ๅฐ†ๅ…ถไป–ๆต‹่ฏ•้›†ๆ‹ท่ดๅˆฐ rootfs ็›ฎๅฝ•ๅฏนๅบ”ไฝ็ฝฎใ€‚

cargo other-test --arch riscv64

image

ไปŽ rootfs ็›ฎๅฝ•ๆž„ๅปบ Linux rootfs ้•œๅƒๆ–‡ไปถใ€‚

cargo image --arch riscv64

linux-libos

ๅœจ linux libos ๆจกๅผไธ‹ๅฏๅŠจ zCore ๅนถๆ‰ง่กŒไฝไบŽๆŒ‡ๅฎš่ทฏๅพ„็š„ๅบ”็”จ็จ‹ๅบใ€‚

NOTICE libos ๆจกๅผๅช่ƒฝๆ‰ง่กŒๅ•ไธชๅบ”็”จ็จ‹ๅบ๏ผŒๅฎŒๆˆๅฐฑไผš้€€ๅ‡บใ€‚

cargo linux-libos --args "/bin/busybox"

ๅฏไปฅ็›ดๆŽฅ็ป™ๅบ”็”จ็จ‹ๅบไผ ๅ‚ๆ•ฐ๏ผš

cargo linux-libos --args "/bin/busybox ls"

ๅนณๅฐๆ”ฏๆŒ

Qemu/virt

็›ดๆŽฅไฝฟ็”จๅ‘ฝไปคๅฏๅŠจ๏ผŒๅ‚่งๅฏๅŠจๅ†…ๆ ธๅ’Œ qemu ๅ‘ฝไปคใ€‚

ๅ…จๅฟ—/ๅ“ชๅ’

ไฝฟ็”จไปฅไธ‹ๅ‘ฝไปคๆž„้€ ็ณป็ปŸ้•œๅƒ๏ผš

cargo bin -m nezha -o z.bin

็„ถๅŽไฝฟ็”จ rustsbi-d1 ๅฐ†้•œๅƒ้ƒจ็ฝฒๅˆฐ Flash ๆˆ– DRAMใ€‚

ๅฆ: ๅฏไปฅๆŸฅ็œ‹README for D1 ๆ–‡ๆกฃ่Žท็Ÿฅๆ›ดๅคšD1ๅผ€ๅ‘ๆฟๆœ‰ๅ…ณ็š„ๆ“ไฝœๆŒ‡ๅฏผใ€‚

่ต›ๆ˜‰/ๆ˜Ÿๅ…‰

ไฝฟ็”จไปฅไธ‹ๅ‘ฝไปคๆž„้€ ็ณป็ปŸ้•œๅƒ๏ผš

cargo bin -m visionfive -o z.bin

็„ถๅŽๆ นๆฎๆญคๆ–‡ๆกฃ็š„่ฏฆ็ป†่ฏดๆ˜Ž้€š่ฟ‡ u-boot ็ฝ‘็ปœๅฏๅŠจ็ณป็ปŸใ€‚

ๆ™ถ่ง†/cr1825

ไฝฟ็”จไปฅไธ‹ๅ‘ฝไปคๆž„้€ ็ณป็ปŸ้•œๅƒ๏ผš

cargo bin -m cr1825 -o z.bin

็„ถๅŽ้€š่ฟ‡ u-boot ็ฝ‘็ปœๅฏๅŠจ็ณป็ปŸใ€‚

ๅ…ถไป–