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

能够正常启动说明文件系统制作成功了。

二、内核设置ramdisk

2.1 需要修改一下内核选项,重新编译

框中的两条,选中并设置路径

然后重新编译内核,

重名了,准备手动加载试试

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

启动成功。

制作好的ramdisk,解压之后就是文件夹。

链接: https://pan.baidu.com/s/1pWIdfShpLLspwxNV-NRHYw?pwd=jfww 提取码: jfww

欢迎大家提出宝贵意见。

下期准备用ramdisk装系统试试。再会。

相关推荐
A小辣椒14 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒18 小时前
TShark:基础知识
linux
AlfredZhao20 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩2 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言