tiny4412 驱动 (2)制作根文件系统

本文详细介绍了如何从源代码构建 BusyBox 并创建一个基本的根文件系统,包括配置 BusyBox,编译安装,设置设备节点,挂载文件系统,以及通过 NFS 启动的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

busybox : busybox-1.22.1
gcc     : arm-linux-gcc-4.5.1
Author  : flinn
Date    : May 30, 2019

basic

tar xvf busybox-1.22.1.tar.bz2
mkdir rootfs
cd busybox-1.22.1/
make menuconfig
    Busybox Settings  ---> 
        Build Options  ---> 
            (/home/flinn/tools/4.5.1/bin/arm-none-linux-gnueabi-) Cross Compiler prefix
        Installation Options ("make install" behavior)  ---> 
            (../rootfs) BusyBox installation prefix
            
make 
make install

config

cd ../rootfs
mkdir dev
cd dev
sudo mknod console c 5 1 
sudo mknod null c 1 3
cd ..
mkdir etc
vim  etc/inittab
    console::askfirst:-/bin/sh
​

add library

mkdir lib
mkdir usr/lib -p
cp /home/flinn/tools/4.5.1/arm-none-linux-gnueabi/lib/*.so* ./lib -d
cp /home/flinn/tools/4.5.1/arm-none-linux-gnueabi/sys-root/lib/*.so* ./lib -d
cp /home/flinn/tools/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/*.so* ./usr/lib -d

add mdev

vim  etc/inittab
    console::askfirst:-/bin/sh
    ::sysinit:/etc/init.d/rcS
​
mkdir etc/init.d
    
vim  etc/init.d/rcS
    #mount -t proc none /proc
    mount -a
    
chmod +x etc/init.d/rcS
​
mount -a 依赖/etc/fstab
​
vim etc/fstab
     # device    mount-point      type   option    dump   fsck  order
        proc         /proc            proc     defaults     0      0
        sysfs           /sys           sysfs    defaults     0      0
        tmpfs           /dev           tmpfs    defaults     0      0
        
cd rootfs
mkdir sys
​
vim etc/init.d/rcS
    mount -a 
    mkdir /dev/pts/
    mount -t devpts devpts /dev/pts
    echo /sbin/mdev > /proc/sys/kernel/hotplug
    mdev -s

nfs

host PC

vim /etc/exports

/home/flinn/tiny4412-SDK/tiny4412/fs/rootfs *(rw,sync,no_root_squash)

重启

sudo /etc/init.d/nfs-kernel-server restart

nfs启动

setenv bootargs noinitrd init=/linuxrc console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.1.101:/home/flinn/tiny4412-SDK/tiny4412/fs/rootfs  ip=192.168.1.123:192.168.1.101:192.168.1.1:255.255.255.0::eth0:off 

host: 192.168.1.101

board: 192.168.1.123

 

load kernel

tiny4412

usb start;nfs 0x40600000 192.168.1.101:/home/flinn/bin/uImage;nfs 0x42000000 192.168.1.101:/home/flinn/bin/exynos4412-tiny4412.dtb;bootm 0x40600000 - 0x42000000

 

ramdisk.img

 

制作空白的ramdisk

mkdir ramdisk

sudo dd if=/dev/zero of=ramdisk bs=1k count=8192

ramdisk挂载为loop文件系统

sudo losetup /dev/loop0 ramdisk
sudo mke2fs -m 0 /dev/loop0  
sudo mkdir /mnt/loop
sudo mount -t ext2 /dev/loop0 /mnt/loop

将最小文件系统的数据拷贝到/mnt/loop,然后卸载

sudo cp -arf rootfs/* /mnt/loop
sudo umount /mnt/loop
sudo rm -rf /mnt/loop

 

使用u-boot的工具mkimage 压缩为.img

gzip -v9 ramdisk 
mkimage -n 'Tiny4412 Ramdisk Image' -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz ramdisk.img  

 

### Tiny4412 制作 SD 启动盘方法 #### 准备工作 为了制作适用于 Tiny4412 开发板的 SD 启动盘,需要准备一张容量低于 4GB 的 SD 卡[^3]。较小的 SD 卡可能无法满足分区需求。 #### 工具与环境配置 在 Linux 环境下操作时,需确保已安装必要的工具链以及开发环境。将 SD 卡插入电脑后,确认其设备名称(如 `/dev/sdb` 或 `/dev/sdc`),这是后续烧写的关键参数之一[^1]。 #### 步骤说明 以下是具体的制作流程: 1. **切换至目标目录** 进入 `uboot_tiny4412` 文件夹中的子目录 `sd_fuse/tiny4412`: ```bash cd /path/to/FriendlyARM/uboot_tiny4412/sd_fuse/tiny4412/ ``` 2. **执行烧录脚本** 使用提供的脚本来完成固件烧录。注意指定正确的设备名(例如 `/dev/sdb`)。务必小心避免误选系统磁盘作为目标设备: ```bash sudo ./fusing.sh /dev/sdb ``` 如果确定设备路径,请先通过 `lsblk` 或 `fdisk -l` 查看当前连接的所有存储设备。 3. **验证分区结构** 完成烧录之后,可以再次检查 SD 卡上的分区布局是否符合预期——通常会有两个主要部分:一个是引导区域(约 130MB 大小),另一个则是 FAT32 格式的文件系统用于存放操作系统镜像文件。 4. **复制必要文件** 将预编译好的 U-Boot 映像以及其他所需资源放置到对应位置上。这些资料一般由官方提供或者自行构建得到。 5. **测试启动功能** 把已经处理完毕的 SD 卡装回主机侧接口处,并调整 BIOS 设置使其优先尝试从外部介质加载 OS;接着借助串口调试器观察整个开机过程直至进入交互界面为止[^2]。 ```python # 示例 Python 脚本片段展示如何自动化检测可用驱动器列表 import os def list_drives(): drives = [] for drive in ['a', 'b', 'c']: path = f'/dev/sd{drive}' if os.path.exists(path): drives.append(path) return drives print(list_drives()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值