当前位置: 首页 > news >正文

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

相关文章:

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

目前手上这个设备装系统不容易,总是需要借助虚拟机才能实现。 对生产就不太那么友好,能否不用虚拟机就能装Linux系统呢? 主要是文件系统的问题需要解决,平时我们一般是用nfs挂载后,然后对硬盘格式化,之后…...

IP-guard邮件管控再升级,记录屏幕画面,智能阻断泄密邮件

邮件是工作沟通以及文件传输的重要工具,却也成为了信息泄露的常见渠道。员工通过邮件对外发送了什么内容,是否含有敏感信息都无从得知,机密通过邮件渠道外泄也难以制止。想要防止企业的重要信息通过邮件方式泄露,我们不仅需要通过技术措施对外发邮件的行为进行规范,也要对…...

#LLM入门|Prompt#2.10_评估、自动化测试效果(下)——当不存在一个简单的正确答案时 Evaluation Part2

上一章我们探索了如何评估 LLM 模型在 有明确正确答案 的情况下的性能,并且我们学会了编写一个函数来验证 LLM 是否正确地进行了分类列出产品。 在使用LLM生成文本的场景下,评估其回答准确率可以是一个挑战。由于LLM是基于大规模的训练数据进行训练的&am…...

round四舍五入在python2与python3版本间区别

round()方法返回数值的小数点四舍五入到n个数字。 语法 以下是round()方法的语法: round( x ,n) 参数 x --这是一个数值,表示需要格式化的数值 n --这也是一个数值,表示小数点后保留多少位 返回值 该方法返回 数值x 的小数点四舍五入到n个数字 …...

新概念英语第二册(73)

【New words and expressions】生词和短语(9) record-holder 纪录保持者 truant n. 逃学的孩子unimaginative adj. 缺乏想像力的shame n. 惭愧,羞耻 hitchhike v. 搭便车旅行 m…...

Vue项目实战-空间论坛(2)

项目实战 实现userlist页面 获取userlist列表,可使用ajax,axios 实现 这里采用ajax实现,需要添加Jquery依赖,然后在UserListView.vue中引入 在UserListView.vue组件的入口函数中定义users变量,并引入ref 使用ajax从云端动…...

小老虎吃汉堡,认识continue和break

continue;//结束本次循环&#xff0c;执行下面的循环 break; //结束本次及以后的循环&#xff0c;执行循环下面的代码1. /*小老虎在吃汉堡&#xff0c;但是第三个汉堡上被挤了芥末&#xff0c;不能吃&#xff0c;跳过去又吃第四、五个*/ for (int i1;i<5;i){if (i3){contin…...

docker搭建zero-ui

确保你已经安装了Docker和Docker Compose。如果没有&#xff0c;请参照官方文档安装&#xff1a;Docker 和 Docker Compose。 使用 Docker CLI 获取 Zero-UI 镜像: 首先&#xff0c;你需要从Docker Hub获取Zero-UI的Docker镜像。你可以使用 docker pull 命令来下载它。 docker…...

187基于matlab的弹道目标跟踪滤波方法

基于matlab的弹道目标跟踪滤波方法&#xff0c;扩展卡尔曼滤波&#xff08;extended Kalman filter, EKF&#xff09;、转换测量卡尔曼滤波&#xff08;conversion measurement Kalman filter, CMKF&#xff09;跟踪滤波&#xff0c;得到距离、方位角、俯仰角误差结果。程序已调…...

讲给自己听的的技术---WMS

标题一 点题 为什么我会说&#xff0c;这是说给自己听的了&#xff1f;做项目有三个月了&#xff0c;外加之前三个月的自学&#xff0c;自我感觉对WMS系统有了一点了解&#xff0c;今天三月九号晚上九点二十&#xff0c;就让我自己和自己说说吧。 标题二 WMS的职责是什么…...

在Java中,请详细讲解并发、多线程、异步的区别和联系

在Java中&#xff0c;请详细讲解并发、多线程、异步的区别和联系 并发、多线程、异步是Java编程中与并行处理相关的三个重要概念&#xff0c;它们之间既有区别也有联系。 并发&#xff08;Concurrency&#xff09;&#xff1a; 并发是指在同一时间段内&#xff0c;多个任务或…...

网络安全及信息安全常识

网络安全及信息安全常识 闻知&#xff1a;西安之地&#xff0c;借软件正版化&#xff0c;诈骗违法犯罪多有。本人自2008年10月&#xff0c;以劳动合同入职软件公司后&#xff0c;知至今日&#xff0c;普通百姓&#xff0c;电脑知识匮乏。因此&#xff0c;当此时&#xff0c;有前…...

(十五)【Jmeter】取样器(Sampler)之HTTP请求

简述 操作路径如下: HTTP请求 (HTTP Sampler): 作用:模拟发送HTTP请求并获取响应。配置:设置URL、请求方法、请求参数等参数。使用场景:测试Web应用程序的HTTP接口性能。优点:支持多种HTTP方法和请求参数,适用于大多数Web应用程序测试。缺点:功能较为基础,对于复杂…...

YOLOv8.1.0安装

【YOLO】YOLOv8训练环境配置 python 3.8.18 cuda 11.3.1 cudnn 8.2.1 pytorch 1.12.1-gpu版 - 知乎 (zhihu.com) 一、Anaconda 默认装好了可用的Anaconda&#xff0c;安装教程见Win10系统anaconda安装 - 知乎 (zhihu.com) 二、在虚拟环境下用conda安装 1.创建虚拟环境 …...

Linux下使用MD5SUM命令详解

在Linux操作系统中&#xff0c;md5sum是一个非常实用的工具&#xff0c;用于生成和校验文件的MD5散列值。MD5是一种广泛使用的密码散列函数&#xff0c;可以产生一个128位&#xff08;16字节&#xff09;的散列值&#xff0c;常用来确保数据的完整性和一致性。 一、MD5SUM命令…...

蓝桥杯python常用内置函数

一、 abs() #返回数字的绝对值 例&#xff1a; 二、 all() #判断给定的可迭代参数中的所有元素是否都为True&#xff0c;若是则返回True&#xff0c;反之返回False 例&#xff1a; 三、 any() #判断给定的可迭代参数是否都为False&#xff0c;全为False则返回False&am…...

设计模式 工厂模式

工厂模式&#xff0c;最重要的是反射。 反射&#xff1a;Class类 java的注释是这样写的&#xff1a; Class没有公共构造函数。相反&#xff0c;Class对象是在类加载时由Java虚拟机自动构造的&#xff0c;并通过调用类加载器中的defineClass方法来实现。...

【C++进阶】哈希的应用 --- 布隆过滤器

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…...

Linux——自写一个简易的shell

目录 前言 一、打印提示信息 二、分割字符串 三、替换程序 前言 之前学习了很多进程相关的知识&#xff0c;包括环境变量、进程的创建与退出、进程等待、进程替换。现在可以用所学的作一个小总结&#xff0c;手撕一个shell解释器&#xff0c;大致的思路是先通过环境变量获…...

【操作系统学习笔记】处理器管理1.3

【操作系统学习笔记】处理器管理1.3 参考书籍: 王道考研 视频地址: Bilibili 进程控制 进程控制的主要功能是对系统中的所有进程实施有效的管理&#xff0c;它具有创建新进程、撤销已有进程、实现进程状态转换的功能。简而言之&#xff0c;进程控制就是要实现进程的状态转换…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...