zoukankan      html  css  js  c++  java
  • arm linux 移植 e2fsprogs

    背景

    之前在zynq平台下处理系统分区,用到了SPI-FLASH以及EMMC。

    根据ZYNQ平台的特性以及产品升级需要,规划了

    • SPI-FLASH放置BootLoader
    • EMMC中分为2个区,一个FAT放置内核、一个EXT4存放文件系统

    因为发现默认的文件系统中没有mkfs.ext4的命令,因此需要自己移植,而这个程序连同mkfs.ext2mkfs.ext3被包含在e2fsprogs中。

    e2fsprogs     :1.45.6

    移植

    还是一个脚本搞定的事情。

    #/** @file         make.sh
    #*  @author       Schips
    #*  @date         2020-10-28 23:22:53
    #*  @version      v1.0
    #*  @copyright    Copyright By Schips, All Rights Reserved
    #*
    #**********************************************************
    #*
    #*  @par 修改日志:
    #*  <table>
    #*  <tr><th>Date       <th>Version   <th>Author    <th>Description
    #*  <tr><td>2020-10-28 <td>1.0       <td>Schips    <td>创建初始版本
    #*  </table>
    #*
    #**********************************************************
    #*/
    
    #!/bin/sh
    
    BUILD_HOST=arm-linux
    BASE=`pwd`
    OUTPUT_PATH=${BASE}/install/
    ## 必要时,填写你的工具链的所在路径
    BUILD_HOST_PATH=/opt/gcc-arm-linux-gnueabi/bin
    export PATH=${PATH}:${BUILD_HOST_PATH}
    
    require () {
        if [ -z "$1" ];then
            return 
        fi
        command -v $1 >/dev/null 2>&1 || { echo >&2 "Aborted : Require "$1" but not found."; exit 1;   }
        echo "Using: $1"
    }
    make_dirs () {
        #为了方便管理,创建有关的目录
        cd ${BASE} && mkdir compressed install source -p
    }
    tget () { #try wget
        filename=`basename $1`
        echo "Downloading [${filename}]..."
        if [ ! -f ${filename} ];then
            wget $1 
        fi
    
        echo "[OK] Downloaded [${filename}] "
    }
    
    download_package () {
        cd ${BASE}/compressed
        tget https://udomain.dl.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.45.6/e2fsprogs-1.45.6.tar.gz
    }
    
    tar_package () {
        cd ${BASE}/compressed
        ls * > /tmp/list.txt
        for TAR in `cat /tmp/list.txt`
        do
            tar -xf $TAR -C  ../source
        done
        rm -rf /tmp/list.txt
    }
    
    make_e2fsprogs () {
        cd ${BASE}/source/e2fsprogs*
        mkdir configure_dir -p
        cd configure_dir
        CC=${BUILD_HOST}-gcc ../configure --host=arm-linux --enable-elf-shlibs 
            --prefix=${OUTPUT_PATH}/e2fsprogs 
            --datadir=${OUTPUT_PATH}/e2fsprogs/doc 
    		--with-udev-rules-dir=${OUTPUT_PATH}/e2fsprogs 
    		--with-crond-dir=${OUTPUT_PATH}/e2fsprogs 
    		--with-systemd-unit-dir=${OUTPUT_PATH}/e2fsprogs
        make && make install
    }
    
    require ${BUILD_HOST}-gcc
    make_dirs
    download_package
    tar_package
    make_e2fsprogs
    exit $?
    
    

    拷贝

    拷贝install/e2fsprogs/sbin到板子/usr/sbin

    拷贝install/e2fsprogs/lib到板子/usr/lib

    运行即可,例如:

    # mkfs.ext4 /dev/mmcblk1p2
    
  • 相关阅读:
    【BZOJ1093】【ZJOI2007】最大半联通子图 [DP][Tarjan]
    【BZOJ1926】【SDOI2010】粟粟的书架 [主席树]
    【BZOJ4069】【APIO2015】巴厘岛的雕塑 [贪心][DP]
    【BZOJ2815】【ZJOI2012】灾难 [LCA]
    【BZOJ3453】XLkxc [拉格朗日插值法]
    【BZOJ2850】巧克力王国 [KD-tree]
    《类和对象》
    @RequestMapping映射请求
    010-Python-socket编程
    SSH-Struts第二弹:一个Form提交两个Action
  • 原文地址:https://www.cnblogs.com/schips/p/porting_e2fsprogs_on_arm_linux_with_usage.html
Copyright © 2011-2022 走看看