从0开始运行主线Linux内核

本博客以Xunlong Orangepi Zero为例,运行最新Linux 4.11.0-rc4内核。

[Mainline U-Boot & Mainline Kernel & Rootfs Howto]

Mainline U-Boot

# 克隆u-boot仓库
git clone git://git.denx.de/u-boot.git

# 编译配置
make orangepi_zero_defconfig

# 交叉编译
make V=s -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

编译完成在源码根目录出现目标文件:

  • u-boot-sunxi-with-spl.bin

Mainline Kernel

# 克隆kernel仓库
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

# 编译配置
make ARCH=arm sunxi_defconfig

# 交叉编译
make V=s -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

编译完成在源码目录出现目标文件:

  • zImage (arch/arm/boot/zImage)
  • sun8i-h2-plus-orangepi-zero.dtb (arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dtb)

Rootfs

1\ busybox

# 克隆busybox仓库
git clone git://git.busybox.net/busybox

# 编译配置
make menuconfig

[*] Build busybox as a static binary

(arm-linux-gnueabihf-) Cross Compiler prefix

(./_install) Busybox Installation prefix

# 编译
make

cd _install/

chmod 4755 bin/busybox

接下来的步骤都基于这个_install文件夹。

2\ etc/inittab

创建etc/inittab文件:

# /etc/inittab
::sysinit:/etc/init.d/rcS
ttyS0::sysinit:/bin/ash
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

3\ etc/fstab

创建etc/fstab文件:

# device        mount-point     type    options dump    fsck    order
proc    /proc   proc    defaults        0       0
tmpfs   /tmp    tmpfs   defaults        0       0

4\ etc/init.d/rcS

创建etc/init.d/rcS文件:

#!/bin/sh
mount -a

5\ 创建设备节点

在dev目录下创建基本的设备节点:

mknod -m 0666 console c 5 1
mknod -m 0666 null c 1 3
mknod ttyS0 c 4 64

Install

将sd卡分区,第一个分区放zImage和dtb文件,第二个分区作为rootfs挂载:

#!/bin/sh

card=/dev/mmcblk0
cardroot=${card}${p}2

# sd卡格式化
dd if=/dev/zero of=${card} bs=1M count=1

# sd卡分区
blockdev --rereadpt ${card}
cat <<EOT | sfdisk ${card}
1M,16M,c
,,L
EOT

# 格式化分区
mkfs.vfat ${card}${p}1
mkfs.ext4 ${card}${p}2

# 刷入U-Boot
dd if=u-boot-sunxi-with-spl.bin of=${card} bs=1024 seek=8

# 写入zImage和dtb文件
mount ${card}${p}1 /mnt/
cp zImage /mnt/
cp sun8i-h2-plus-orangepi-zero.dtb /mnt/
umount /mnt/

# 写入rootfs
mount ${cardroot} /mnt/
cp -r /myrootfs /mnt/
umount /mnt

Boot

在U-Boot命令行中执行:

=> setenv bootargs 'console=ttyS0,115200n8 earlyprintk root=/dev/mmcblk0p1 rootwait panic=10'
=> fatload mmc 0 0x46000000 zImage
reading zImage
3657840 bytes read in 226 ms (15.4 MiB/s)
=> fatload mmc 0 0x49000000 sun8i-h2-plus-orangepi-zero.dtb
reading sun8i-h2-plus-orangepi-zero.dtb
14025 bytes read in 30 ms (456.1 KiB/s)
=> bootz 0x46000000 - 0x49000000

Boot Success

成功进入Linux系统,重新挂载可读写文件系统,挂载proc,sys,debug目录:

/ # mount -o remount,rw /
[   58.970790] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
/ # mount -t proc proc /proc
/ # mount -t sysfs sysfs /sys
/ # mount -t debugfs debugfs /sys/kernel/debug

/ # cat /proc/version 
Linux version 4.11.0-rc4-00064-g89970a0 (chenziping@techping-pc) (gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11) ) #1 SMP Thu Mar 30 18:55:45 CST 2017
/ # 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容