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装系统试试。再会。

相关推荐
中国lanwp23 分钟前
使用Maven和Ant上传文件到Linux服务器
linux·服务器·maven
孙克旭_23 分钟前
day016-系统负载压力测试-磁盘管理
linux·运维·压力测试
liuyunluoxiao38 分钟前
进程间通信--共享内存【Linux操作系统】
linux
qq_454175791 小时前
gcc/g++常用参数
linux·运维·服务器
wb1892 小时前
Linux远程连接服务
linux·运维·服务器·笔记
Jerry&Louis3 小时前
【Ubuntu】Waydroid-Linux安卓模拟器安装
linux·ubuntu
yangpan0113 小时前
ubuntu 24.04安装ros1 noetic
linux·运维·ubuntu
星卯教育tony3 小时前
ubuntu 20.04 更改国内镜像源-阿里源 确保可用
linux·运维·ubuntu
卡戎-caryon3 小时前
【C++】15.并发支持库
java·linux·开发语言·c++·多线程
weixin_434255613 小时前
命令行快速上传文件到SFTP服务器(附参考示例)
linux·运维·服务器