长期支持版本

    社区创新版本

      Kata initrd的生成过程

      可参考kata_integration中make initrd流程,大致分为以下几步:

      1. 创建rootfs相关目录
      2. 将kata-agent重命名为init并放在rootfs根目录下
      3. 从编译环境中拷贝kata-agent所需二进制(如mount、umount)到rootfs usr/bin目录下
      4. 从编译环境中拷贝以上二进制(包含kata-agent)所需动态链接库到rootfs lib目录下
      5. 从编译环境中拷贝内核驱动模块ko文件到rootfs中内核驱动模块目录下
      6. 进入rootfs并执行以下命令生成initrd.img
      ( find . | cpio -H newc -o | gzip -9 ) > ./kata-containers-initrd.img
      

      initrd定制参考脚本

      script_dir="$(dirname $(readlink -f $0))"
      rpmlist=${script_dir}/make-initrd-rpm.list
      
      BUILD_PATH="./build"
      IMAGE_NAME=${IMAGE_NAME:-kata-containers-initrd.img}
      AGENT_INIT=${AGENT_INIT:-yes}
      ROOTFS_DIR=${ROOTFS_DIR:-/tmp/kataAgent-rootfs}
      
      # create a temp dir to store rootfs
      rm -rf ${ROOTFS_DIR}
      mkdir -p ${ROOTFS_DIR}/lib \
      	  ${ROOTFS_DIR}/lib64 \
      	  ${ROOTFS_DIR}/lib/modules
      
      mkdir -m 0755 -p ${ROOTFS_DIR}/dev \
      	  ${ROOTFS_DIR}/sys \
      	  ${ROOTFS_DIR}/sbin \
      	  ${ROOTFS_DIR}/bin \
            ${ROOTFS_DIR}/tmp \
      	  ${ROOTFS_DIR}/proc
       
      if [ ! -f "${BUILD_PATH}/kata-agent" ];then
      	echo "kata-agent doesn't exist!"
      	exit 1
      fi
      
      # kata-agent
      cp ${BUILD_PATH}/kata-agent ${ROOTFS_DIR}/init
      
      # busybox
      cp /sbin/busybox ${ROOTFS_DIR}/sbin/
      
      # cp run request files in initrd
      cat $rpmlist | while read rpm
      do
          if [ "${rpm:0:1}" != "#" ]; then
              rpm -ql $rpm > /dev/null 2>&1
              if [ $? -ne 0 ]; then
                  continue
              fi
              array=($(rpm -ql $rpm| grep -v "share" | grep -v ".build-id"))
              for file in ${array[@]};
              do
                  source=$file
                  dts_file=${ROOTFS_DIR}$file
                  dts_folder=${dts_file%/*}
                  if [ ! -d "$dts_folder" ];then
                      mkdir -p $dts_folder
                  fi
                  cp -r -f -d $source $dts_folder
              done
          fi
      done
      
      #create symlinks to busybox
      BUSYBOX_BINARIES=(/bin/sh /bin/mount /bin/umount /bin/ls /bin/ps /bin/file /bin/ldd /bin/tar /bin/hwclock /sbin/modprobe /sbin/depmod /bin/ip /bin/modinfo /bin/insmod /bin/rmmod)
      for bin in ${BUSYBOX_BINARIES[@]}
      do
       	mkdir -p ${ROOTFS_DIR}/`dirname ${bin}`
       	ln -sf /sbin/busybox ${ROOTFS_DIR}/${bin}
      done
      
      LDD_BINARIES=(/init /sbin/busybox)
      for bin in ${LDD_BINARIES[@]}
       do
           ldd ${ROOTFS_DIR}${bin} | while read line
           do
       	    arr=(${line// / })
      
       	    for lib in ${arr[@]}
       	    do
       			echo $lib
       		    if [ "${lib:0:1}" = "/" ]; then
       			    dir=${ROOTFS_DIR}`dirname $lib`
       			    mkdir -p "${dir}"
       			    cp -f $lib $dir
       		    fi
       	    done
           done
       done
      
      (cd ${ROOTFS_DIR} && find . | cpio -H newc -o | gzip -9 ) > ${BUILD_PATH}/${IMAGE_NAME}
      

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份