zoukankan      html  css  js  c++  java
  • initramfs打包集成rootfs到image镜像及linux rootfs的正常启动

    最近的项目中需要在仿真机haps及VDK上集成rootfs,中间遇到一些问题,在此整理记录以备忘。

    rootfs里面集成的busybox版本1.29.3 (buildroot环境中自带)

    kernel版本4.14

    u-boot传递bootcmdline参数给kernel

    在arch/arm64/configs中修改defconfig文件配置initramfs的文件路径

    CONFIG_BLK_DEV_INITRD=y
    CONFIG_INITRAMFS_SOURCE="./rootfs_test"

    CONFIG_DEVTMPFS=y

    CONFIG_DEVTMPFS_MOUNT=y

    CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE_NAMES="jxx/jxx_jxx890_xyz"
    CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE=y

    rootfs需要支持:

    1./dev management (Dynamic using devtmpfs + mdev)

    2.busybox启动时的配置文件inittab的改动:

    ::sysinit:/bin/mount -t proc proc /proc
    ::sysinit:/bin/mount -o remount,rw /
    ::sysinit:/bin/mkdir -p /dev/pts /dev/shm
    ::sysinit:/bin/mount -a
    ::sysinit:/sbin/swapon -a
    null::sysinit:/bin/ln -sf /proc/self/fd /dev/fd
    null::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin
    null::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout
    null::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr
    ::sysinit:/bin/hostname -F /etc/hostname
    # now run any rc scripts
    ::sysinit:/etc/init.d/rcS

    # Put a getty on the serial port
    #ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL
    console::respawn:-/bin/sh #start console

    # Stuff to do for the 3-finger salute
    #::ctrlaltdel:/sbin/reboot

    # Stuff to do before rebooting
    ::shutdown:/etc/init.d/rcK
    ::shutdown:/sbin/swapoff -a
    ::shutdown:/bin/umount -a -r

    3.遇到的问题

    console一直进不去:

    一开始怀疑是ttySx这个没对应的问题,也怀疑过bootcmdline有问题,甚至怀疑是kernel没有启动busybox。

    最后发现是/dev目录下面的文件没有被正常创建的问题。

    etc/init.d/S10mdev这个文件里面:

    echo "Starting mdev..."
    echo /sbin/mdev >/proc/sys/kernel/hotplug
    /sbin/mdev -s  (再启动时会执行创建/dev目录下面的文件)

    S10mdev该文件会在init的时候执行,所以需要有可执行权限。若没有会提示:permission denied.

    改过之后发现就可以正常打开console输入命令了。

  • 相关阅读:
    How to function call using 'this' inside forEach loop
    jquery.validate.unobtrusive not working with dynamic injected elements
    Difference between jQuery.extend and jQuery.fn.extend?
    Methods, Computed, and Watchers in Vue.js
    Caution using watchers for objects in Vue
    How to Watch Deep Data Structures in Vue (Arrays and Objects)
    Page: DOMContentLoaded, load, beforeunload, unload
    linux bridge
    linux bridge
    EVE-NG网卡桥接
  • 原文地址:https://www.cnblogs.com/wangym/p/11283749.html
Copyright © 2011-2022 走看看