zoukankan      html  css  js  c++  java
  • ramfs的两种制作方法

    制作方法1

    1  准备
    一个已经可以使用的文件系统,假设目录为/rootfs
    Linux内核需要支持ext2文件系统及ramdisk支持(fs相应的选项要勾上)
    2 在pc上制作ramdisk镜像
    (1)dd if=/dev/zero of=ramdisk.img bs=1k count=4096
       这制作的镜像有4MB,可以根据自己的需要修改
    (2)mkfs.ext2 -m0 ramdisk.img
    将ramdisk.img格式化为ext2格式
    (3)mount -o loop ramdisk.img /mnt/ramdisk/
    将ramdisk.img挂载到/mnt/ramdisk目录
    (4)cp -a /rootfs /mnt/ramdisk
    将自己的文件系统全部拷贝到/mnt/ramdisk目录去
    (5)umount /mnt/ramdisk
    卸载ramdisk挂载
    此时生成可用的ramdisk.img镜像
    (6)gzip -v9 ramdisk.img
    压缩镜像,我没试过加载压缩的镜像,应该也可以

    3 修改开发板bootargs,添加 initrd=0x31000000,4096000
       0x3100000是ramfs文件系统的加载地址,4096000是大小

    制作方法2-dracut:

    参考信息: https://mirrors.edge.kernel.org/pub/linux/utils/boot/dracut/dracut.html

          https://www.cnblogs.com/hadex/p/5830730.html

          man dracut

      Initramfs/Initrd 用于创建一个系统启动初期的小型用户空间,解决复杂启动流程问题,作为真实rootfs挂载前的过渡。Dracut完整的命令行参数,请查看dracut.cmdline(7)。

    二、使用方法


    创建一个通用的initramfs image

    # dracut [--force] [/PATH/TO/new_image_name] [kernel version]

       -- image默认位置:/boot/initramfs-<kernel version>.img;

       -- force选项用于强行覆盖已经存在的同名initramfs;可以在cmdline指名新image的路径和名称及为哪一个版本的kernel制作image

    example: 生成一个基于4.19.5-300.fc29.x86_64内核版本的initramfs, 文件存放地址:/home/my_ramfs

    sudo dracut --force /home/my_ramfs 4.19.5-300.fc29.x86_64

    如果需要生成其他版本内核的initramfs,需要事先安装好指定版本的内核包。

    安装方法:配置好仓库地址或者准备好指定版本kernel相关包,sudo dnf install  kernel-制定版本包

    查看initramfs包含的文件列表及某个文件的内容

    lsinitrd [OPTION...] [<image> [<filename> [<filename> [...] ]]]

    # sudo lsinitrd initramfs-4.19.5-300.fc29.x86_64.img | less 

    # sudo lsinitrd initramfs-4.19.5-300.fc29.x86_64.img -f /etc/ld.so.conf

    NSDL系统是通过grub2来管理启动选项,这里可通过grub.cfg修改启动参数

    配置文件位置:/boot/efi/EFI/desktop/grub.cfg, 这里主要修改了红色标注部分

    1 修改启动选项的显示超时时间为10s,便于启动时启动修改的启动入口(默认启动入口为/etc/grub.d/10_linux)

    2 拷贝启动入口/etc/grub.d/10_linux内容到/etc/grub.d/20_linux_xen,并修改红色标注部分

    note:

    如果是其他版本内核,需要修改绿色字段内容,如是上面的4.8.6内涵,须将绿色字段修改为vmlinuz-4.8.6-201.fc21.x86_64,将与指定内核保持一致。

    terminal_output console
    if [ x$feature_timeout_style = xy ] ; then
      set timeout_style=menu
      set timeout=10
    # Fallback normal timeout code in case the timeout_style feature is
    # unavailable.
    else
      set timeout=10
    fi
    ……

    ### BEGIN /etc/grub.d/10_linux ### menuentry 'NewStart Desktop Linux' --class newstart --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.19.5-300.fc29.x86_64-advanced-7836042c-e679-4314-b426-2552daa17827' { load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod ext2 set root='hd0,gpt2' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 7836042c-e679-4314-b426-2552daa17827 else search --no-floppy --fs-uuid --set=root 7836042c-e679-4314-b426-2552daa17827 fi linuxefi /boot/vmlinuz-4.19.5-300.fc29.x86_64 root=UUID=7836042c-e679-4314-b426-2552daa17827 ro amd_iommu=off rhgb quiet loglevel=0 LANG=zh_CN.UTF-8 initrdefi /boot/initramfs-4.19.5-300.fc29.x86_64.img } ### END /etc/grub.d/10_linux ### ### BEGIN /etc/grub.d/20_linux_xen ### menuentry 'NSDL-myramfs' --class newstart --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.19.5-300.fc29.x86_64-advanced-7836042c-e679-4314-b426-2552daa17827' { load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod ext2 set root='hd0,gpt2' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 7836042c-e679-4314-b426-2552daa17827 else search --no-floppy --fs-uuid --set=root 7836042c-e679-4314-b426-2552daa17827 fi linuxefi /boot/vmlinuz-4.19.5-300.fc29.x86_64 root=UUID=7836042c-e679-4314-b426-2552daa17827 ro amd_iommu=off rhgb quiet loglevel=0 LANG=zh_CN.UTF-8 initrdefi /home/my_ramfs } ### END /etc/grub.d/20_linux_xen ###

    保存重启即可测试。

  • 相关阅读:
    Opencores上利用svn下载
    dc概论之多周期路径multicycle_path续2
    vim之高效编辑verilog代码(1)
    BAT编程基础
    Linux
    远程连接服务器或云数据库上的mysql服务 赖大大
    CSS文本靠右显示换行后靠左显示;vant vancol文本靠右显示换行后靠左显示
    千分位 后面保留2位小数
    F# 天生就是就异步和并行的料
    做量化模型Matlab、R、Python、F#和C++到底选择哪一个?
  • 原文地址:https://www.cnblogs.com/noxy/p/10207808.html
Copyright © 2011-2022 走看看