118.龙芯2k1000-pmon(17)-制作ramdisk

目前手上这个设备装系统不容易,总是需要借助虚拟机才能实现。

对生产就不太那么友好,能否不用虚拟机就能装Linux系统呢?

主要是文件系统的问题需要解决,平时我们一般是用nfs挂载后,然后对硬盘格式化,之后再把文件系统解压到硬盘中,这个过程就必须借助虚拟机,而且还要求虚拟机的nfs和网络必须正常好用。

这次我就想到了ramdisk,如果借助ramdisk,那么是否就可以脱离掉虚拟机,用几个命令是否就可以把系统装好呢?

好,那么首先得有一个ramdisk才行。

没有找到现成的,那就自己做吧。

一、制作ramdisk的最简文件系统

1.1 创建根文件系统目录

mkdir ramdisk_ls2k

cd ramdisk_ls2k

mkdir root dev etc boot tmp var sys proc lib mnt home usr

mkdir etc/init.d etc/rc.d etc/sysconfig

mkdir usr/sbin usr/bin usr/lib usr/modules

mkdir var/lib var/lock var/run var/tmp

sudo mknod -m 600 dev/console c 5 1

sudo mknod -m 600 dev/null c 1 3

可以写成一个脚本,避免每次都要一行行敲

1.2 拷贝交叉编译工具里面的库

比如我使用的交叉编译工具是mips64el-loongson-linux-gcc,

这里我一下没有找到库,所以我选择把busybox(我用的版本是1.34.1)编译为静态库的方式。

Settings --->

\*\] Build static binary (no shared libs) (/home/jc/ramdisk_ls2k) Destination path for 'make install' 设置为安装的目录 其他配置不变 makefile修改一下 CROSS_COMPILE ?=mips64el-loongson-linux- ARCH ?= mips make之后,直接make install 用编译内核的环境变量设置一下。 ### 1.3 建立etc目录下的配置文件 1.3.1、拷贝主机etc目录下的passwd、group、shadow文件到ramdisk_ls2k/etc目录下。 1.3.2、创建etc/mdev.conf内容为空。 1.3.3、etc/sysconfig目录下新建文件HOSTNAME(主机名),内容为"dazhi"。 1.3.4、编辑etc/inittab文件,内容如下: ::sysinit:/etc/init.d/rcS #rcS作为系统初始化文件 console::askfirst:-/bin/sh #在串口启动一个登录会话 ::restart:/sbin/init ::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a -r #告诉init在关机时运行umount命令卸载 所有的文件系统,如果卸载失败,试图以只读方式重新挂载。 ::shutdown:/sbin/swapoff -a 1.3.5、编辑etc/init.d/rcS文件,并chmod +x 修改文件权限 #!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin #启动环境,设置必要的环境变量 runlevel=S prevlevel=N umask 022 export PATH runlevel prevlevel echo "----------mount all----------------" mount -a #读取/etc/fstab,加载文件系统 echo /sbin/mdev\>/proc/sys/kernel/hotplug echo "\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*Hello dazhi\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*" echo "Kernel version:linux-3.10 (2024)" echo "\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*" /bin/hostname -F /etc/sysconfig/HOSTNAME #设置机器名字 mdev --s 1.3.6、编辑etc/fstab #device mount-point type option dump fsck proc /proc proc defaults 0 0 none /tmp ramfs defaults 0 0 #mdev /dev ramfs defaults 0 0 sysfs /sys sysfs defaults 0 0 1.3.7、编辑etc/profile USER="id -un" #id -un是打印输出当前的用户名,例如:root LOGNAME=$USER PS1='\[\\u@\\h $PWD\]#' #"\[用户名@主机名 目录\]#", PS1的值即进入shell后的默认 PATH=$PATH HOSTNAME='/bin/hostname' #通过/bin/hostname获取主机名 export USER LOGNAME PS1 PATH echo "-----/etc/profile-------" ### 1.4 用nfs验证一下 虚拟机中设置好/etc/exports,然后重启nfs-kernel 手动加载文件系统: > g console=ttyS0,115200 noinitrd root=/dev/nfs rw nfsroot=192.168.0.14:/home/jc/ramdisk_ls2k/,v3 ip=192.168.0.12:192.168.0.14::::eth1 能够正常启动说明文件系统制作成功了。 ![](https://file.jishuzhan.net/article/1766477702610554882/0ecaf3d750f065e1373c98be1fc423c5.webp) ## 二、内核设置ramdisk ### 2.1 需要修改一下内核选项,重新编译 ![](https://file.jishuzhan.net/article/1766477702610554882/4974fe2864df90d8e0406f8b96e07e43.webp) 框中的两条,选中并设置路径 然后重新编译内核, ![](https://file.jishuzhan.net/article/1766477702610554882/f344d3c1f2c530b51c24ae12748059b6.webp) 重名了,准备手动加载试试 cp vmlinuz /mnt/hgfs/share-win/vmlinuz-ramdisk ### 2.2 手动加载,并指定使用ramdisk > load tftp://192.168.0.10/vmlinuz-ramdisk > > g console=ttyS0,115200 root=/dev/ram0 rdinit=/linuxrc ![](https://file.jishuzhan.net/article/1766477702610554882/4fbd8cf516b63cd905d5a94f51aae649.webp) 启动成功。 ![](https://file.jishuzhan.net/article/1766477702610554882/a5f69c51bd541848f6b082ea490be4e2.webp) 制作好的ramdisk,解压之后就是文件夹。 链接: https://pan.baidu.com/s/1pWIdfShpLLspwxNV-NRHYw?pwd=jfww 提取码: jfww 欢迎大家提出宝贵意见。 下期准备用ramdisk装系统试试。再会。

相关推荐
行思理1 小时前
centos crontab 设置定时任务访问链接
linux·运维·centos
阳光明媚大男孩1 小时前
24.0.2 双系统ubuntu 安装显卡驱动黑屏,系统启动界面键盘失灵
linux·ubuntu·计算机外设
再玩一会儿看代码2 小时前
[特殊字符] 深入理解 WSL2:在 Windows 上运行 Linux 的极致方案
linux·运维·windows·经验分享·笔记·学习方法
有谁看见我的剑了?2 小时前
centos7.9 升级 gcc
linux
良许Linux2 小时前
FreeRTOS大家都是怎么学的呀?
linux
良许Linux2 小时前
类似于STM32之类的MCU,使用RTOS真的比裸机编程有那么大优势?
linux
良许Linux2 小时前
为什么越来越多的人要转行做嵌入式呢?
linux
良许Linux2 小时前
单片机中有FLASH为啥还需要EEROM?
linux
良许Linux3 小时前
嵌入式rtos中哪一个更加值得去学习?
linux
良许Linux3 小时前
为什么招聘单片机工程师的时候要求精通C/C++?
linux