Skip to content

Commit 884d549

Browse files
feature ready: Linux Setup tutorials
1 parent e18b1b7 commit 884d549

18 files changed

Lines changed: 933 additions & 1089 deletions

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# AI
22
.claude
33
CLAUDE.md
4+
# Self Private Ignores
5+
helpers/
46

57
out/
68
compile_commands.json
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# PenguinLab ARM64 QEMU virt 学习配置
2+
# ─────────────────────────────────────
3+
# 基于 allnoconfig,只开启内核学习所需的最小功能集
4+
#
5+
# 设计原则:
6+
# - 能在 QEMU virt 机器上启动进入 BusyBox shell
7+
# - 支持内核模块加载和卸载
8+
# - 支持 GDB 远程调试
9+
# - 不包含任何真实 SoC/物理硬件驱动
10+
#
11+
# 使用方法:
12+
# cd third_party/linux
13+
# make O=../../out/build_latest_arm64 allnoconfig
14+
# scripts/kconfig/merge_config.sh -m O=../../out/build_latest_arm64/.config ../../configs/arm64-qemu-virt-learn.config
15+
# make O=../../out/build_latest_arm64 olddefconfig
16+
# make O=../../out/build_latest_arm64 -j$(nproc) Image
17+
#
18+
# 或者用项目脚本(需先 config 再 build):
19+
# cd third_party/linux
20+
# make O=../../out/build_latest_arm64 allnoconfig
21+
# scripts/kconfig/merge_config.sh -m ../../out/build_latest_arm64/.config ../../configs/arm64-qemu-virt-learn.config
22+
# cd ../..
23+
# ARCH=aarch64 ./scripts/linux-action-scripts.sh build
24+
25+
# === 平台基础 ===
26+
CONFIG_ARM64=y
27+
CONFIG_64BIT=y
28+
CONFIG_SMP=y
29+
CONFIG_NR_CPUS=2
30+
31+
# === 串口控制台 (QEMU virt 的 PL011 UART) ===
32+
CONFIG_TTY=y
33+
CONFIG_VT=y
34+
CONFIG_VT_CONSOLE=y
35+
CONFIG_SERIAL_AMBA_PL011=y
36+
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
37+
CONFIG_CONSOLE_TRANSLATIONS=y
38+
39+
# === initramfs (加载 BusyBox rootfs) ===
40+
CONFIG_BLK_DEV_INITRD=y
41+
CONFIG_RD_GZIP=y
42+
43+
# === 基础文件系统 ===
44+
# devtmpfs: 内核自动填充 /dev 设备节点,BusyBox 的 mknod 才能工作
45+
CONFIG_DEVTMPFS=y
46+
CONFIG_DEVTMPFS_MOUNT=y
47+
# procfs: ps、top、cat /proc/* 等都需要
48+
CONFIG_PROC_FS=y
49+
# sysfs: ls /sys/*、设备模型浏览
50+
CONFIG_SYSFS=y
51+
# tmpfs: BusyBox init 脚本用 mount -t tmpfs 挂载 /dev
52+
CONFIG_TMPFS=y
53+
54+
# === 内核模块 ===
55+
CONFIG_MODULES=y
56+
CONFIG_MODULE_UNLOAD=y
57+
CONFIG_MODULE_FORCE_UNLOAD=y
58+
59+
# === 调试支持 (GDB + 学习必备) ===
60+
# debugfs: 很多内核调试接口挂载在这里
61+
CONFIG_DEBUG_FS=y
62+
# 调试信息:GDB 断点、变量查看、堆栈回溯都需要
63+
CONFIG_DEBUG_INFO=y
64+
# GDB python 辅助脚本:lx-symbols、lx-ps 等便捷命令
65+
CONFIG_GDB_SCRIPTS=y
66+
# printk:内核日志输出,没有它等于瞎了
67+
CONFIG_PRINTK=y
68+
# BUG() 宏:内核断言失败时产生 oops
69+
CONFIG_BUG=y
70+
# kallsyms:/proc/kallsyms 里能看到所有内核符号地址
71+
CONFIG_KALLSYMS=y
72+
CONFIG_KALLSYMS_ALL=y
73+
74+
# === VirtIO (QEMU virt 机器的核心设备总线) ===
75+
CONFIG_VIRTIO=y
76+
CONFIG_VIRTIO_MMIO=y
77+
78+
# === BusyBox 运行所需的二进制格式 ===
79+
# ELF:BusyBox 本体是 ELF 可执行文件
80+
CONFIG_BINFMT_ELF=y
81+
# script:/init 是 #!/bin/sh 开头的脚本
82+
CONFIG_BINFMT_SCRIPT=y
83+
84+
# === POSIX 接口 (BusyBox shell 和基本命令需要) ===
85+
CONFIG_MULTIUSER=y
86+
CONFIG_SYSVIPC=y
87+
CONFIG_FUTEX=y
88+
CONFIG_EPOLL=y
89+
CONFIG_SIGNALFD=y
90+
CONFIG_TIMERFD=y
91+
CONFIG_EVENTFD=y
92+
CONFIG_SHMEM=y
93+
94+
# === 高精度定时器 (让 sleep 等命令精度正常) ===
95+
CONFIG_HIGH_RES_TIMERS=y
96+
CONFIG_NO_HZ_IDLE=y

document/part1/_category_.json

Lines changed: 0 additions & 8 deletions
This file was deleted.

document/part1/day01-02-setup.md

Lines changed: 0 additions & 230 deletions
This file was deleted.

0 commit comments

Comments
 (0)