`
haoningabc
  • 浏览: 1482606 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用buildroot为jslinux建立最小rootfs

阅读更多
##############################################################################
制作镜像文件
buildroot-2016.08.1.tar.gz
make O=haoning menuconfig
 Target options  ---> 
	Target Architecture Variant (i686)  --->
因为我的当前系统uname是i686的,为了兼容指令集
Filesystem images  --->
	[*] ext2/3/4 root filesystem 
为了生成rootfs.ext2

Target packages  ---> 
	Development tools  --->  
		 [*] make    
生成命令行的make

make O=haoning -j16 

得到buildroot/haoning/images/rootfs.ext2
编译出来的最小大概2.1M

mount -o loop rootfs.ext2  root

mv root/sbin/init root/sbin/init

vim root/sbin/init
#!/bin/sh
echo "JSLinux started, initializing..."

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
export HOME=/root
export TERM=vt100
mount -n -t proc /proc /proc
mount -n -t sysfs /sys /sys
mount -n -t devpts devpts /dev/pts
mount -n -t tmpfs /tmp /tmp
mount -n -t tmpfs /var /var
ifconfig lo 127.0.0.1
#/sbin/mdev -s      
mkdir -p "/tmp/root"
                   
while /bin/true; do                                                     
    echo "haoning buildroot-2016.08.1 this is before sh ttyS0.........."
    setsid sh -c 'exec sh </dev/ttyS0 >/dev/ttyS0 2>&1 && echo "hahah"'
    echo "this is not over  ...."
done
~      

运行

qemu-system-i386 -kernel  /opt/jslinux/kernel/linux-2.6.20/arch/i386/boot/bzImage -drive file=rootfs.ext2.onlyext2,if=ide,cache=none -append "console=ttyS0 root=/dev/hda rw init=/sbin/init notsc=1"  -boot order=dc,menu=on -net nic,vlan=0,macaddr=52:54:00:12:34:22,model=e1000,addr=08 -net tap,ifname=tap1,script=./if-up,downscript=./if-down -nographic

启动之后
/sbin/mdev -s
会在/dev下建好设备
包括jsclipboard

sync,保存到磁盘,这些dev是jslinux启动的时候用的

ctl+a x 退出qemu
ctl+a c是切换到monitor

重新mount修改rootfs.ext2里面的 /sbin/init
注释
#/sbin/mdev -s

替换jslinux-network的硬盘
cp rootfs.ext2.onlyext2 /var/www/jslinux-network/root.bin



由于只有2M左右,所以修改jslinux.js

    /* Preload blocks so that the boot time does not depend on the
     * time to load the required disk data (optional) */
   // block_list = [ 0, 7, 3, 643, 720, 256, 336, 644, 781, 387, 464, 475, 131, 589, 468, 472, 474, 776, 777, 778, 779, 465, 466, 473, 467, 469, 470, 512, 59
2, 471, 691, 697, 708, 792, 775, 769 ];
    block_list = [ 0, 7, 3 ];



进入jslinux
ip link可用

如果嫌硬盘不够大,还想装点其他东西

cd /opt/jslinux/buildroot/buildroot-2016.08.1/haoning/images
qemu-img create -f raw image.raw 20M
mkfs.ext2  image.raw 
mkdir image
mount -o loop image.raw image
mount -o loop rootfs.ext2 root
cp -r root/* image/

把rootfs.ext2 里的文件cp到image.raw里面,jslinux和qemu可用

得到一个比较大有空间的image镜像image.raw给qemu用
如果使用gcc需要注意内核的版本
FATAL kernel too old
http://blog.csdn.net/yimiyangguang1314/article/details/6095740

★★★★★★★★★★★★★
交叉编译tcc
buildroot的i686-linux-gcc 在buildroot-2016.08.1/haoning/host
host目录下有完整的交叉编译用的gcc等,但是比较大,我们用tcc编译


export PATH=/opt/jslinux/buildroot/buildroot-2016.08.1/haoning/host/usr/bin
这下面有i686-linux-gcc
测试:
[root@centos32 tcc-0.9.25]# i686-linux-gcc --version
i686-linux-gcc.br_real (Buildroot 2016.08.1) 4.9.4
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


export CC=i686-linux-gcc

cd tcc-0.9.25
注意这里CC要放在前面
CC=i686-linux-gcc ./configure --prefix=/opt/jslinux/buildroot/buildroot-2016.08.1/haoning/images/image/usr --cc=i686-linux-gcc


make
make install

image.raw 挂载在image下,把tcc写入了这个镜像
cp -r /opt/jslinux/buildroot/buildroot-2016.08.1/haoning/host/usr/i686-buildroot-linux-uclibc/sysroot/* /opt/jslinux/buildroot/buildroot-2016.08.1/haoning/images/image/


qemu执行

qemu-system-i386 -kernel  /opt/jslinux/kernel/linux-2.6.20/arch/i386/boot/bzImage -drive file=image.raw,if=ide,cache=none -append "console=ttyS0 root=/dev/hda rw init=/sbin/init notsc=1"  -boot order=dc,menu=on -net nic,vlan=0,macaddr=52:54:00:12:34:22,model=e1000,addr=08 -net tap,ifname=tap1,script=./if-up,downscript=./if-down -nographic



进入系统tcc

之后保存系统
sync
sync

vi /sbin/init
注释掉
#/sbin/mdev -s
替换/var/www/jslinux-network/root.bin
测试jslinux


最后报错:
/var # tcc sniffer.c -o sniffer                                                
In file included from sniffer.c:3:                                             
In file included from /usr/include/netinet/in.h:24:                            
In file included from /usr/include/sys/socket.h:27:                            
In file included from /usr/include/sys/uio.h:23:                               
/usr/include/sys/types.h:146: include file 'stddef.h' not found                


可能是没选c++
编译一次下周一再看

分享到:
评论

相关推荐

    buildroot构建rootfs和app,官方源码包

    Buildroot 是一个开源项目,它为嵌入式系统提供了一种简单、高效的方式来构建自定义的 Linux root 文件系统。通过 Buildroot,你可以选择要包含在根文件系统中的软件包,然后它会自动下载源代码、配置、编译并打包成...

    buildroot-2017.08-rootfs-lichee-nano.tar

    使用buildroot-2017.08编译的适用于lichee-nano的rootfs,登录名:root,无密码,直接回车即可

    基于zynqmp的根文件系统的建立(buildroot方式)

    在构建基于ZynqMP芯片的Linux根文件系统时,我们通常使用Buildroot工具来简化这一过程。Buildroot是一个开源项目,它允许用户自定义构建一个嵌入式系统的最小文件系统,包括内核、库、应用程序和服务。在这个场景中...

    基于Buildroot的Phytium Linux系统交叉编译源码

    该项目为基于Buildroot的Phytium Linux系统交叉编译源码,包含12692个文件,其中包含3062个Makefile文件、2913个hash文件、2896个input文件、1848个patch文件,并涉及Python、Shell、C、HTML、Java、CSS、JavaScript...

    arm-buildroot-linux-gnueabihf_sdk-buildroot.tar.gz

    嵌入式linux 交叉编译器

    基于zynq的buildroot制作根文件系统

    基于ZYNQ的根文件系统制作涉及到多个步骤和技术,这里我们将详细探讨如何使用Buildroot工具来创建一个定制化的根文件系统,特别是对于Xilinx的Zynq 7z045芯片。 首先,Buildroot是一个开源的构建系统,它主要用于...

    rootbuilder:使用 buildroot 生成 rootfs.tar 的基础 Docker 镜像

    正如您在示例目录中看到的,Dockerfile 用于使用配置文件创建 buildroot。 Makefile 为您提供主要的工作流程任务。 config任务只是在 rootbuild 中运行make nconfig并拉出.config文件。 然后build任务从 Dockerfile...

    buildroot开发板搭建ssh远程登录服务

    标题中的“buildroot开发板搭建ssh远程登录服务”是指在基于Buildroot构建的嵌入式Linux系统中,通过OpenSSH服务器实现远程登录控制台的功能。嵌入式环境下的SSH允许开发者在没有物理访问设备的情况下,通过网络进行...

    ARM_LINUX构建最小根文件系统

    本文档详细记录了使用Busybox工具来构建适用于ARM架构Linux系统的最小根文件系统的步骤。 首先,文档介绍了编写本文档的目的是为了记录构建过程,便于日后查阅和参考。接着,文档进入了构建根文件系统的主要内容,...

    Buildroot开发使用

    Buildroot 是一个强大的工具,主要用于构建嵌入式Linux系统,尤其适合那些资源有限的设备。它简化了构建过程,使得开发者能够快速地编译出一个完整的...这样,你就可以开始使用Buildroot构建定制的嵌入式Linux系统了。

    rk3288 buildroot文件系统

    使用RK3288的buildroot编译的文件系统,qt版本5.15.2.支持eglfs和wayland显示。qt支持3D显示,scene3d是qt示例中编译出来的3D显示的demo。

    Buildroot中文用户手册

    **Buildroot**是一个自动化构建嵌入式Linux系统的工具。它可以帮助开发者快速构建一个完整的Linux发行版,包括交叉编译工具链、Linux内核、文件系统以及必要的库和应用程序。通过高度可配置的方式,Buildroot满足了...

    【正点原子】Buildroot用户手册中文版(正点原子翻译)_V1.0.pdf

    Buildroot是一个用于创建嵌入式Linux系统的工具,它能够简化交叉编译、生成根文件系统、编译内核镜像以及编译引导加载程序的过程。Buildroot支持数千种软件包,如Gtk3、QT5、GStreamer和Webkit等,提供了一种高效、...

    buildroot学习文档.zip

    通过阅读“buildroot学习文档”中的内容,你可以更深入地了解如何使用Buildroot来构建嵌入式Linux系统,包括配置技巧、问题排查以及最佳实践。这个压缩包对于初学者和经验丰富的开发者来说都是宝贵的资源,可以帮助...

    buildroot生成文件系统

    通过以上步骤,我们成功地使用 Buildroot 为 ZYNQ7010 平台构建了一个完整的 ramdisk 文件系统。这一过程不仅展示了 Buildroot 的强大功能,还让我们深入了解了构建嵌入式 Linux 文件系统的整个流程。

    buildroot使用手册

    使用Buildroot,开发者可以方便地为特定硬件平台配置、编译和安装软件包,从而搭建出定制的系统镜像。本手册详细介绍了Buildroot的安装、配置、使用方法和常见问题的解决。 ### Getting Started - **About ...

    基于zynq的Linux根文件系统生成

    在Linux系统中,根文件系统(Root Filesystem,简称rootfs)扮演着至关重要的角色,它是操作系统启动时的第一个文件系统,包含系统运行所需的基本程序和配置。在ZYNQ FPGA平台上的嵌入式Linux系统中,构建根文件系统...

    buildroot-slides.pdf

    Buildroot作为一个嵌入式Linux系统构建工具,它的主要作用是为用户提供一个快速建立定制Linux系统的途径。与传统的系统构建方式相比,Buildroot能够简化Linux系统的编译和配置过程,使得开发者可以专注于应用开发而...

    buildroot配置及Qt5交叉编译.docx

    **Buildroot** 是一个轻量级的构建系统,它允许开发者为嵌入式设备生成最小化的、自包含的文件系统。它通过提供一个基于菜单的配置界面(menuconfig),使用户能够选择要包含在最终文件系统中的软件包,如Busybox、...

    Buildroot用户手册.docx

    通过使用交叉编译技术,它可以为不同的目标架构生成必要的组件,包括但不限于交叉编译工具链、根文件系统、Linux内核映像以及引导加载程序。Buildroot的灵活性体现在它允许用户选择性地使用其提供的功能,比如可以...

Global site tag (gtag.js) - Google Analytics