Skip to content

Latest commit

 

History

History
821 lines (652 loc) · 29.8 KB

os_001.md

File metadata and controls

821 lines (652 loc) · 29.8 KB

Books

  • 华章的一些比较好的书,讲u-boot,树莓派,linux驱动之类,见下面(GNU/Linux嵌入式快速编程,嵌入式Linux设备驱动程序开发指南)

  • 自研操作系统DIM-SUM设计与实现
    https://gitee.com/xiebaoyou/dim-sum

  • 一步一步写嵌入式操作系统
    search baidupan, 一步一步写嵌入式操作系统
    https://github.com/Joyounger/leeos

  • 30天自制操作系统, OSASK
    https://github.com/Tassandar/OSASK

  • 一个64位操作系统的设计与实现
    https://github.com/yifengyou/The-design-and-implementation-of-a-64-bit-os

  • Linux内核完全注释
    search baidupan, Linux内核完全注释
    https://github.com/yuan-xy/Linux-0.11
    http://www.oldlinux.org
    search baidupan, linux-0.11-devel-040809.zip

  • ARM Linux内核源码剖析
    search baidupan, ARM Linux内核源码剖析

  • 源码开放的嵌入式实时操作系统T-Kernel

  • Orange'S一个操作系统的实现
    search baidupan, 一个操作系统的实现

  • 嵌入式实时操作系统Small RTOS51原理及应用
    baidupan

  • 從 RISC-V 處理器到 UNIX 作業系統
    https://github.com/riscv2os/riscv2os

  • 嵌入式设计及LINUX开发指南

  • 嵌入式Linux编程

  • 深度探索嵌入式操作系统

  • ARM嵌入式Linux系统构建与驱动开发范例

  • 华章,按需印刷

  • 深度实践嵌入式linux系统移植, jamvm, u-boot, s3c2440

  • linux内核探秘:深入解析文件系统和设备驱动的架构与设计

  • 深度探索linux操作系统:系统构建和原理解析

  • Linux环境编程从应用到内核

  • Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理(第2版)

  • GNU/Linux嵌入式快速编程(beagleBone Black, SAMA5D3, Wandboard)

  • 嵌入式Linux编程,克里斯西蒙兹

  • 嵌入式Linux设备驱动程序开发指南(树莓派3b)

  • 嵌入式LINUX系统开发教程(第2版)

  • Linux嵌入式设计, 周伟民
    (???) stbmenu
    (???) https://github.com/nothings/stb

Old

Work

  • search baidupan, arm_linux, linux-3.2.tar.bz2

Unix内核源码剖析

https://minnie.tuhs.org/cgi-bin/utree.pl
https://minnie.tuhs.org/Archive/Distributions/Research/Dennis_v6/
http://simh.trailing-edge.com
https://github.com/takahiro-itazuri/unix-v6
see v6root.tar.gz.\usr\sys
https://github.com/atotto/my_unix_v6
search github, found if newproc EAGAIN
https://github.com/changLifan/Forward_Secrecy
https://github.com/WarlockD/arm-cortex-v7-unix
包含了一些xv6, v6mini的内容
https://github.com/takahiro-itazuri/unix-v6/tree/master/v6root/usr/sys
https://github.com/atotto/my_unix_v6/blob/master/_unix_v6/root/usr/sys/ken

返璞归真:UNIX技术内幕

https://github.com/JiYou/unix-v6

pdp11-js

http://takahirox.github.io/pdp11-js/unixv6.html

Unix V6 环境搭建:Simh 安装 Unix V6、Unix V6 基本使用以及源代码获取

simhv39-0-exe
https://blog.csdn.net/u012814856/article/details/98724746

XV6

(gdb) file _cat
(gdb) b main

然后就可以断在main函数处

在ubuntu 14下用gdb和Eclipse-CDT调试xv6-public。
(1)首先编译xv6-public xv6-rev9。最好用rev9版本,
因为Makefile里面注释掉的-g -gdwarf-2参数,需要修改打开。
sudo apt install qemu; make qemu-nox-gdb,用Ctrl+A X退出
(2)打开控制台的另一个tab,用gdb调试(生成gdbinit文件,需要自己写set auto-load safe-path /)。
(3)用Eclipse-CDT调试。sudo apt install eclipse-cdt,用eclipse命令打开,
创建工程选择Makefile, linux gcc,
然后添加remote gdb调试,gdb参数去掉.gdbinit留空白,目录选择xv6-public-xv6-rev9,
调试文件选择目录下的kernel即可。
connection选tcp,端口号26000
(4)其他gdb工具也可以,例如ddd,cgdb和gdbtui

xv6 book rev9

xv6 pdf打印

xv6 book rev7

调试运行第一个xv6程序

https://blog.csdn.net/u011675745/article/details/122890830

xv6-explained

https://github.com/YehudaShapira/xv6-explained/blob/master/xv6%20Code%20Explained.md

All Labs implementation of 6.828 2018 OS course of MIT.

https://github.com/k0Iry/xv6-jos-i386-lab

xv6

https://gitee.com/hedonihilist/jos

xv6-riscv

https://github.com/mit-pdos/xv6-riscv

xv6-k210

https://github.com/HUST-OS/xv6-k210

xv6-rpi

https://github.com/david50407/xv6-rpi

xv6 64bit

xv6 d1

xv6 exp (based on xv6-rev9)

Writing an OS shutdown process for QEMU (xv6)

https://unix.stackexchange.com/questions/645618/writing-an-os-shutdown-process-for-qemu-xv6
why Ctrl + a x not work ??? only use Ctrl Alt Q

work_xv6_mingw, xv6 mingw

  • search baidupan, work_xv6_mingw, i686-elf-tools-windows.zip, xv6_mingw_patch_v1.rar
//-Wno-stringop-overflow  
*(volatile char*)lastaddr = 99;  
QEMUGDB = $(shell echo "-gdb tcp:127.0.0.1:$(GDBPORT)")  
(gdb) target remote 127.0.0.1:25500  

UNIX xv6内核源码深入剖析

xv6 bochs

JOS

unzip clann24_jos-master.zip
cd /work_jos/jos-master/final/lab
unzip final.tar
make qemu

gedit GNUmakefile, mod to gcc -pipe -std=gnu99
CC	:= $(GCCPREFIX)gcc -pipe -std=gnu99
gedit inc/mmu.h, and remove '(struct Segdesc)'

// Null segment
#define SEG_NULL	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
// Segment that is loadable but faults when used
#define SEG_FAULT	{ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0 }
// Normal segment
#define SEG(type, base, lim, dpl) 			\

linux 0.11 lab

  • https://github.com/zirandu/linux-0.11-lab
  • search baidupan, linux-0.11-lab-master.zip
    ubuntu1404 success
    rpd2017 compile failed
  • http://showdesk.io/2017-03-18-17-54-23-linux-0.11-lab-usage-00-06-42/
    sudo apt install qemu-system-x86
    sudo apt install bochs bochs-sdl
    sudo apt install bochs-x
    make switch #switch to bochs
    make start #only for bochs
    make start-fd #not work
    make start-hd #with gcc and mkfs command
  • qemu monitor:
    -monitor stdio
    Ctrl+Alt+2:
    (qemu) info block
    (qemu) change floppy0 rootfs/rootimage-0.11
    Ctrl+Alt+1
  • 我研究一下,如果不考虑代码可能的差异,比较容易编译和运行linux 0.11的方法通过这个项目:zirandu/linux-0.11-lab(出自tinylab),不过缺点是里面有些情况无法运行OS(可能是我没理解)。运行方法是:(1)apt install qemu-system-x86 bochs bochs-sdl(注意bochs需要sdl插件)(2)make switch (切换到bochs); make start(文件系统是第二个软驱,只支持bochs,不支持qemu);make start-hd(bochs和qemu都支持,文件系统是第一个硬盘)。顺带一提,linux-0.11-lab可能有编译器问题,我用ubuntu14是正常的,但用较新的rpd 2017会编译失败
  • 总体来说linux 0.11的软盘根文件系统最好使用bochs(虽然后来有人搞出了支持qemu的根文件系统),那么xv6呢?xv6的qemu是双IDE硬盘,第一个硬盘是OS镜像,第二个硬盘是根文件系统,而且根文件系统是通过c程序生成的,比较容易修改。linux 0.11把整个gcc(古老版本)打进去硬盘版的根文件系统中,所以只能在qemu里头自己打代码然后编译了,不够方便

你管这破玩意叫操作系统源码 — 像小说一样品读 Linux 0.11 核心代码

K210-Linux0.11

https://github.com/lizhirui/K210-Linux0.11

linux0.11-1, 中文注释, VC

https://github.com/beride/linux0.11-1

Linux 0.01内核分析与操作系统设计

Linux内核完全注释

(TODO) linux 0.01, DrAcOnUx's web page

能在windows环境下编译的Linux 0.11了,不是在Cygwin,也不是在虚拟机里,而是使用MinGW

  • search linux-0.11.rar
  • oldlinux吧

MinixFsImg

OldLinuxSrc, 0.11 and 0.12

minix

操作系统设计与实现(第三版)

minix

minix

using clang under Minix3

VirtualBox虚拟机安装MSDOS和MINIX2.0.0双系统

MINIX1

8427003/study-minix-os

uclinux

uclinux

https://github.com/robutest/uclinux
https://github.com/pfoubet/linux_2.6.33.8_STM32
https://github.com/jserv/stm32f429-linux-builder
search baidupan, arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2
search baidupan, stm32f429-linux-builder-master.zip

uClinux for Cortex-M3 and Cortex-M4

https://github.com/robutest/uclinux
stm32f429-linux-builder
This is a simple tool designed to create a uClinux distribution for STM32f429 Discovery board from STMicroelectronics.
https://github.com/jserv/stm32f429-linux-builder

uClinux源代码中Make文件完全解析.pdf

uclinux in emulator

T-Kernel

https://github.com/tron-forum/mtkernel_3
https://github.com/Ninals-GitHub/TRON

ucos

https://www.micrium.com/rtos/
https://github.com/weston-embedded/uC-OS3
Cortex-M3 is ARMv7-M ???
https://github.com/weston-embedded/uC-OS2
baidupan, uCOS_III简单的例子程序.rar
baiduapn, Micrium.RTOS.1.0.0.pack
??? MicriumOS
https://github.com/hancaliskan/MicriumOS

contiki

https://github.com/contiki-os/contiki

鸿蒙OS

SerenityOS

http://serenityos.org
https://github.com/SerenityOS/serenity

OS/2 Warp 4.52

https://lantian.pub/article/modify-computer/os2-warp-firefox.lantian/
https://winworldpc.com/product/os-2-warp-4/os-2-warp-452

MS-RTOS

https://www.edgeros.com/ms-rtos
https://github.com/ms-rtos

Azure RTOS

https://azure.microsoft.com/zh-cn/services/rtos/
ThreadX RTOS
https://github.com/azure-rtos/threadx

rtems

https://www.rtems.org

ecos

http://ecos.sourceware.org

smallrtos51

search baidupan, small RTOS51.rar
《嵌入式实时操作系统Small RTOS51原理及应用》

rtems

https://github.com/RTEMS/rtems

vsf

https://github.com/vsfteam/vsf

LiteOS 移植竞赛

https://github.com/LiteOS/LiteOS_PortingContest

CMSIS-RTOS Documentation

https://www.keil.com/pack/doc/cmsis/RTOS/html/index.html

常用开源RTOS研究

https://www.jianshu.com/p/b545411930e5

基于STM32F1X系例的单片机的常用操作系统的模板,开发工具为MDK

https://github.com/LiShanwenGit/STM32F1X-RTOSDemo

The Linux Kernel Module Programming Guide

https://github.com/sysprog21/lkmpg

Linux 内核揭秘

https://github.com/MintCN/linux-insides-zh

Linux内核源代码情景分析(非扫描版).pdf

嵌入式Linux应用开发完全手册

嵌入式Linux应用开发完全手册.pdf
嵌入式linux应用开发完全手册 书籍光盘.iso
http://download.100ask.net/books/Linux/ELADCM1/index.html

奔跑吧Linux内核

实验指导手册 - 奔跑吧Linux内核-v1.3.1公开版.pdf
https://github.com/figozhang/runninglinuxkernel_4.0
https://github.com/weimingtom/wmt_qemu_memo
https://www.jianshu.com/p/ebfd457b0f57

(TODO) qemu arm linux 编译:

《 奔跑吧 Linux内核 入门篇》
创建 git仓库

嵌入式实时操作系统原理与最佳实践

Trochili RTOS
https://baike.baidu.com/item/嵌入式实时操作系统原理与最佳实践/53220213?fr=aladdin

MyOS, 30天自制操作系统

https://github.com/VictorYXL/MyOS
https://zhuanlan.zhihu.com/p/92256014
https://zhuanlan.zhihu.com/p/92090983
https://blog.csdn.net/wxkhturfun/article/details/120256016

MonaOS

rtlinux

rt-smart

System emulation using QEMU (some iso)

How to Run Linux on RISC-V with QEMU Emulator

NJU-ProjectN

nanos-lite

NJUOS

squashfs-tools

linux-insides

MS-DOS 1.25 and 2.0

riscv-isa-sim

Apache NuttX

https://nuttx.apache.org
BL604

Linux From Scratch (LFS) is a project that provides you with step-by-step instructions for building your own custom Linux system, entirely from source code.

LiteBSD

rtems

freebsd x11

在FreeBSD上安装x11的方法。
(1)首先通过dvd1.iso(不要用disk1版)光盘安装系统(基本上默认即可,过程略)
(2)弹出光盘后重启
(3)登入root后,重新放入光驱,然后挂载:
mkdir /mnt/cdrom; mount -t cd9660 /dev/cd0 /mnt/cdrom,
然后复制package设置:cp /mnt/cdrom/packages/repos/FreeBSD_install_cdrom.conf /etc/pkg/,
然后用ee修改这个文件:ee /etc/pkg/FreeBSD_install_cdrom.conf,

把其中的file:///dist/packages改成file:///mnt/cdrom/packages,保存  

(4)最后用pkg install xorg即可,进入x11用startx命令。
补充,如果想pkg install gnome似乎不能用这种方法。

Aboriginal Linux, running on qemu and J2 open processor, SH2 (SuperH 2)

循序渐进,学习开发一个RISC-V上的操作系统 - 汪辰 - 2021春

skyeye

一张图让你读懂Linux内核运行原理

search baidupan, Linux操作系统内核实习

gdb target sim (for GDB/ARMulator ???)

  • search baidupan, readme_xubuntu200464_gdb12_target_sim

Unix like source line count compare

  • 我大概统计了一下这几个类unix代码的代码量,大概是这样。值得注意的是这些代码是需要花费很多人力写出来和测试的,并非想象中只有一两个人做出来的:
    (1)xv6: xv6-public, 75个文件,总行数10k行
    (2)unix v6: UnixV6, 64个文件,总行数12k行
    (3)linux-0.11: linux-0.11-lab, 91个文件,13k行
    (4)minix2: CD-ROM-2.0, SYS, 1012个文件, 114k行
  • xv6: xv6-public, 75个文件(含根文件系统用户态),总行数9778行
    unix v6: UnixV6, 64个文件,总行数12274行
    linux-0.11: linux-0.11-lab, 91个文件,13154行
    minix2: CD-ROM-2.0, SYS, 1012个文件, 113906行
  • minix1: 300个文件,48583行
  • linux-0.01-rm-3.5: 88个文件,总行数13222行

SylixOS

search baidupan, 消费机, linux

我发现有的消费机似乎也是跑uclinux的,叫W90P710,ARM7架构。。。
当然这只是猜测。看ROM里面有linux 2.4.20-uc0的字样。
不过固件和rootfs(rom1fs,romfs)真的很小,
甚至固件比rootfs还小,大概2M和1.5M左右

MS-DOS OEM adaptation

  • search 115

uclinux dist old files, see wikipedia

uclinux stm32

to integrate the nommu and classic m68k code, in order to run Linux on the original Atari ST.

https://ford.biologie.hu-berlin.de/matze/linux-m68k-atarinommu/-/wikis/home

The Linux/68000 Project

http://thierry.fedorawiez.free.fr/st/lin68k.html

v7/x86

https://www.nordier.com
https://my.oschina.net/u/2245781/blog/636502/
https://sourceforge.net/projects/bsd42
research-unix-v7

nuttx

https://github.com/apache/nuttx

Scott Maxwell, Linux内核源代码分析

Linux_内核源代码分析
Linux内核源代码情景分析

DOSBOX

  • my backup, search baidupan, dos.rar

ucore

JX

xinu

rust-raspberrypi-OS-tutorials

FlingOS

tccboot

NucleusPlus, for s3c2440 ?

ucore

buaa os

BenOS, for arm, rpi3

CuRT, an RTOS running on qemu-system-arm -M connex

使用GNU工具链进行嵌入式裸机开发

2023-02-01, qemu micro:bit

火星,qemu 4.0以上居然支持micro:bit,我佛了。写法是这样子的(直接加载hex文件,可能  
就是作为bios加载):  
qemu-system-arm -M microbit -device loader,file=test.hex -serial stdio。  
同时还支持gdb调试,写法是这样:x/10i dollar号pc 

Fuzix

ESP32-based PDP11 simulator, based on SimH

UCAS-Core ???

mimiker, The Mimiker Project, a Unix-like operating system

DuinOS

DoritOS

ChibiOS

循序渐进,学习开发一个 RISC-V 上的操作系统

nixos risc-v

AIMv6

BenOS for RISC-V 64 (RV64)

Flyanx

exdos

A commentary on the Sixth Edition UNIX Operating System

riot-os

有个实时操作系统,riot-os,已经彻底去除MIPS的支持了,不过zephyr和nuttx还支持MIPS

tock

https://github.com/tock/tock