119.龙芯2k1000-pmon(18)-全自动安装linux系统

经过两天的测试和完善,现在基本已经正常可用了。

(全自动是假,接近全自动吧。)

需要使用配测电脑的网络功能,windows即可,脱离linux虚拟机。(理论上讲u盘也是可以的)

测试平台:龙芯2k1000

接口:串口,网口(可用U盘取代吧)。

windows上的软件:tftpd32,ftpserver,securecrt(主要是串口)

windows有线网口连接设备,windows主机配置静态ip:192.168.0.10(必须是这个,因为脚本设置的是这个ip,否则需要修改脚本)

软件镜像:gzrom-dtb-update-linux.bin   用于自动升级

                 vmlinuz-ramdisk  linux内核,并且包含ramdisk,参考118.龙芯2k1000-pmon(17)-制作ramdisk-CSDN博客

                 rootfs_hd43.tar.bz2(1GB左右)   麒麟文件系统,自行打包自己的文件系统即可,注意文件名应该是这个名字,否则需要修改脚本

一、简单描述一下整个过程

1.1 pmon 自动下载电脑主机中的 vmlinuz-ramdisk 并且使用该内核启动,

1.2 pmon 指定启动参数,使用ramdisk文件系统启动。

        g 'console=ttyS0,115200  root=/dev/ram0 rdinit=/linuxrc'

        或者设置环境变量 set append 'console=ttyS0,115200  root=/dev/ram0 rdinit=/linuxrc'

1.3 pmon 启动该内核和ramdisk,重点就在这个ramdisk的脚本中,文件系统启动后,启动自动安装脚本,进行以下流程安装:

1.3.1 分区/dev/sda  ,我这里分两个区,第一个2g,之后的是第二个分区,默认有117g

1.3.2 格式化每个分区,第一个分区,vfat格式,第二个分区ext4格式

1.3.3 挂载两个分区到mnt目录下的mnt_sda1 和mnt_sda2

1.3.4 从windows下载vmlinuz-ramdisk和rootfs_hd43.tar.bz2 到mnt_sda1 目录下。

1.3.5 解压rootfs_hd43.tar.bz2 到mnt_sda2 目录下

1.3.6 设置pmon的启动参数append,修改文件系统为sda2分区启动

         set append "console=ttyS0,115200 noinitrd root=/dev/sda2  rootfstype=ext4 rootwait rw"

        这里实际是要修改pmon的flash区域,所以直接参考这个

1.3.7 重启,因为我这个设备没法使用reboot命令,就只能手动断电在启动了。

断电重启后,启动成功:

第一次启动的时候,app(qt)启动有点慢,后面应该就好了。

二、涉及的脚本

我这些脚本都在/home/dazhi目录下,包括修改env的程序

脚本在文末的压缩包中有,/home/dazhi目录下

2.1  设置开机自启 rc.lccal 直接启动install_linux.sh

2.2 install_linux.sh 内容

echo "hello 2024,ready to install new linux system now"
echo "hello 2024,ready to install new linux system now" > /dev/tty0n=`mount | grep mnt_sda1 | wc -l`
echo "n=" $n
if [ $n -eq 1 ] ;thencd /umount /mnt/mnt_sda1
fin=`mount | grep mnt_sda2 | wc -l`
if [ $n -eq 1 ] ;thencd /	umount /mnt/mnt_sda2
fiecho "1. format disk now !!"
echo "1. format disk now !!" > /dev/tty0
/home/dazhi/partdisk.shecho "2. format done!!"
echo "2. format done!!" > /dev/tty0echo "3. install rootfs system"
echo "3. install rootfs system" > /dev/tty0
/home/dazhi/install_rootfs.shecho "4. install rootfs system done !!!!"
echo "4. install rootfs system done !!!!" > /dev/tty0exit 0

2.3 partdisk.sh 用于分区

前面有一段是删除分区,实际没有4个,也就是执行一下,没有影响,能正常通过。

#!/bin/bashecho "part disk /dev/sda to two parts,20240311 by dazhi"PARTDISK="/dev/sda"echo '
d
1
d
2
n 
p
1+2048M 
n
p
2w' | fdisk $PARTDISK &> /dev/null
partprobe $PARTDISK
sync
sleep 2
mkfs.fat ${PARTDISK}1 &> /dev/null
mkfs.ext4 ${PARTDISK}2 &> /dev/nullecho "part disk done,enjoy!!!"fdisk -l exit 0

2.4 install_rootfs.sh 

主要就是解压该文件系统到sda2了。解压的时间有点长。需要耐心等一下。

#!/bin/bashecho "3.1.start to install rootfs to sda2"
echo "3.1.start to install rootfs to sda2" > /dev/tty0n=`mount | grep mnt_sda1 | wc -l`
echo "n=" $n
if [ $n -eq 1 ] ;thencd /umount /mnt/mnt_sda1
fin=`mount | grep mnt_sda2 | wc -l`
if [ $n -eq 1 ] ;thencd /	umount /mnt/mnt_sda2
fii=1
while [ $i -le 10 ] 
domount /dev/sda1 /mnt/mnt_sda1if [ $? -eq 0 ] ; thenbreakfisleep 1let i++echo "= $?" echo "Retry: mount /dev/sda1 /mnt/mnt_sda1"
done
if [ $i -ge 10 ];thenecho "ERROR: mount /dev/sda1 /mnt/mnt_sda1"echo "ERROR: mount /dev/sda1 /mnt/mnt_sda1" > /dev/tty0exit 1
fii=1
while [ $i -le 10 ] 
domount -t ext4 /dev/sda2 /mnt/mnt_sda2if [ $? -eq 0 ] ; thenbreakfisleep 1let i++echo "Retry: mount /dev/sda2 /mnt/mnt_sda2"
done
if [ $i -ge 10 ];thenecho "ERROR: mount /dev/sda2 /mnt/mnt_sda2"echo "ERROR: mount /dev/sda2 /mnt/mnt_sda2" > /dev/tty0exit 1
fiecho "3.2.download vmlinuz-ramdisk from tftp (serverip 192.168.0.10) now !!!"
echo "3.2.download vmlinuz-ramdisk from tftp (serverip 192.168.0.10) now !!!" > /dev/tty0
#cd /mnt/mnt_sda1
#tftp -g -r  vmlinuz-ramdisk 192.168.0.10
#cd -
sleep 2
echo "3.3ftpget vmlinuz-ramdisk now !!!"
echo "3.3ftpget vmlinuz-ramdisk now !!!" > /dev/tty0
ftpget -u ftp -p ftp 192.168.0.10 /mnt/mnt_sda1/vmlinuz-ramdisk vmlinuz-ramdisk
if [ $? -ne 0 ];thenecho "ERROR: ftpget vmlinuz-ramdisk"echo "ERROR: ftpget vmlinuz-ramdisk" > /dev/tty0exit 1
fisleep 2
if [ ! -f /mnt/mnt_sda1/rootfs_hd43.tar.bz2 ] ; thenecho "The file  /mnt/mnt/sda1/rootfs_hd43.tar.bz2 doesn't exist"echo "need to download from tftp (serverip 192.168.0.10) now !!!"#cd /mnt/mnt_sda1#tftp -g -r  rootfs_hd43.tar.bz2 192.168.0.10#cd -echo "ftpget rootfs_hd43.tar.bz2 now !!!"echo "ftpget rootfs_hd43.tar.bz2 now !!!" > /dev/tty0ftpget -u ftp -p ftp 192.168.0.10 /mnt/mnt_sda1/rootfs_hd43.tar.bz2 rootfs_hd43.tar.bz2
elseecho "The file  /mnt/mnt/sda1/rootfs_hd43.tar.bz2 is exist"echo "go on to next step"
fiecho "3.4.ready to extract tar.bz2,wait for some times please!!!"
echo "3.4.ready to extract tar.bz2,wait for some times please!!!" > /dev/tty0
syncsleep 2
tar xvf /mnt/mnt_sda1/rootfs_hd43.tar.bz2 -C /mnt/mnt_sda2/ --numeric-owner  --strip-components 1 sync
echo "3.5.extract tar.bz2 done !!!"
echo "3.5.extract tar.bz2 done !!!" > /dev/tty0
sleep 5i=1
while [ $i -le 10 ] 
doumount /mnt/mnt_sda1if [ $? -eq 0 ] ; thenbreakfisleep 1let i++
done
if [ $i -ge 10 ];thenecho "ERROR: umount /mnt/mnt_sda1"echo "ERROR: umount /mnt/mnt_sda1" > /dev/tty0exit 1
fiecho "3.6.install rootfs done" 
echo "3.6.install rootfs done" > /dev/tty0ls /mnt/mnt_sda2/i=1
while [ $i -le 10 ] 
doumount /mnt/mnt_sda2if [ $? -eq 0 ] ; thenbreakfisleep 1let i++
done
if [ $i -ge 10 ];thenecho "ERROR: umount /mnt/mnt_sda2"echo "ERROR: umount /mnt/mnt_sda2" > /dev/tty0exit 1
fiecho "3.7. set start evn"
echo "3.7. set start evn" > /dev/tty0
/home/dazhi/program_pmon_ls2k1000 -e /home/dazhi/normal_env.binecho "3.8.need reboot now in manual !!!"
echo "3.8.need reboot now in manual !!!" > /dev/tty0
exit 0

三、pmon的部分

它主要还是设置环境变量:

3.1 al1 设置为tftp下载vmlinuz-ramdisk

3.2 append  'console=ttyS0,115200  root=/dev/ram0 rdinit=/linuxrc' 表示使用ramdisk启动。

这个部分全部在gzrom-dtb-update-linux.bin 中设置好了。

3.3 最后,文件系统解压完成之后,还要修改append的部分

由它完成: /home/dazhi/program_pmon_ls2k1000 -e /home/dazhi/normal_env.bin

就是把append再次还原

append "console=ttyS0,115200 noinitrd root=/dev/sda2  rootfstype=ext4 rootwait rw"

再次启动,就会引导硬盘中的文件系统了。

四、ramdisk文件系统的压缩包:

链接: https://pan.baidu.com/s/1PEsAFco7anIuoAIV1Ll9vA?pwd=febk 提取码: febk 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/739215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

客户案例|100M 768 维向量数据,Zilliz Cloud 稳定支持 Shulex VOC 业

日前,国际化 VOC SaaS 公司数里行间(Shulex)将上亿数据量的核心业务从开源向量数据库 Milvus 迁移至全托管的向量数据库云服务 Zilliz Cloud。 相比于 Milvus,Zilliz Cloud 实现了 Shulex VOC 评论分析洞察报告生成速度 30% 的提升…

AI 驱动的医疗变革:迈向未来医疗新生态

直面呼啸而来的人工智能,医疗行业将首当其冲,发生翻天覆地的变化。美国心脏病学家兼基因学教授埃里克托普在《未来医疗》中预测,未来人类将拥有“健康小助手”——个人医疗数据和处理能力,还能轻松预防疾病。诸多评论家也持类似观…

南京观海微电子---快速上手DDR读写例程——DDR接口专栏(三)

1. 前言 本文将向大家介绍如何使用DDR IP核的Native接口来对DDR进行读写操作。 2. DDR IP核接口介绍 要想把DDR3 IP核使用起来,必先需要了解下该IP核有哪些接口。DDR3 IP核接口图如下所示。注:图中展示的为DDR IP的Native接口,除了Native接…

javaEE8(数据库编程课后习题1,2)

一&#xff1a; 二&#xff1a; 数据库内信息&#xff1a; 登录&#xff1a; 注册&#xff1a; Register.jsp <% page pageEncoding"UTF-8" import"java.sql.*"%> <!DOCTYPE html> <html lang"en"> <head> <…

未知生,焉知死!小动物S了,如何处理?一个人一生该坚持的几件事——早读(逆天打工人爬取热门微信文章解读)

天地不仁&#xff0c;以万物为刍狗 引言Python 代码第一篇 人民日报 【夜读】一个人一生该坚持的几件事第二篇 人民日报 来了&#xff01;新闻早班车要闻社会政策 结尾 “未知生&#xff0c;焉知死” 曾经视为定数的冰冷生命 在热烈的内心烛照下 应当焕发出滚烫的热情 唯有热爱…

注意力、自注意力和多头注意力的区别

本文作者&#xff1a; slience_me 注意力、自注意力和多头注意力的区别 理解注意力&#xff08;Attention&#xff09;、自注意力&#xff08;Self-Attention&#xff09;和多头注意力&#xff08;Multi-Head Attention&#xff09;之间的区别非常重要&#xff0c;因为它们是自…

[HackMyVm] Quick

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Un…

nginx禁止国外ip访问

1.安装geoip2扩展依赖 yum install libmaxminddb-devel -y 2.下载ngx_http_geoip2_module模块 https://github.com/leev/ngx_http_geoip2_module.git 3.编译安装 ./configure --add-module/datasdb/ngx_http_geoip2_module-3.4 4.下载最新数据库文件 模块安装成功后,还要…

【阿里云系列】-基于云效构建部署NodeJS项目到ACK

准备工作 01、编写Dockerfile文件可以根据不同的环境&#xff0c;新建不同的Dockerfile文件&#xff0c;比如Dockerfile-PROD # Deliver the dist folder with NginxFROM nginx:stable-alpine ENV LANGC.UTF-8 ENV TZAsia/ShanghaiCOPY dist/ /usr/share/nginx/html COPY ngi…

speexsdp消除回声

speexsdp需要几秒的滤波时间。我测试4-7秒。 GitHub - cpuimage/WebRTC_AECM: Acoustic Echo Canceller for Mobile Module Port From WebRTC 更快的消除 webrtc_aecm 效果: 这是testecho.c样例的程序。 初始化函数&#xff1a; SpeexEchoState *speex_echo_state_init(in…

uniapp开发DAPP钱包应用(一) 环境搭建 Vue+ MetaMask + ABI.json

上几节我们讲了如何通过Java后端完成链上交易、信息查询、以及如何使用web3插件实现开发自测。 这一节&#xff0c;我们来说说前端DAPP的开发实现。 1. MeteMask &#x1fa9c;Java对接&#xff08;BSC&#xff09;币安链 | BNB与BEP20的开发实践&#xff08;三&#xff09;水…

Vue3全家桶 - VueRouter - 【6】导航守卫

导航守卫 查看以下情形&#xff1a; 点击主页链接时&#xff0c;默认情况下可直接进入指定页面&#xff0c;如下图&#xff0c;但是问题是该跳转的界面是需要用户登录后方可访问的&#xff1b; 可设置导航守卫来检测用户是否登录&#xff0c;如果已登录&#xff0c;则进入后台…

华为OD机试 - 模拟数据序列化传输(Java JS Python C C++)

题目描述 模拟一套简化的序列化传输方式,请实现下面的数据编码与解码过程 编码前数据格式为 [位置,类型,值],多个数据的时候用逗号分隔,位置仅支持数字,不考虑重复等场景;类型仅支持:Integer / String / Compose(Compose的数据类型表示该存储的数据也需要编码)编码后数…

四元数(Quaternion)的一些性质

四元数(Quaternion)是用于三维旋转和定向的四部分组成的超复数&#xff0c;超复数简单理解就是比abi这样的复数更复杂的复数&#xff0c;其中abi这样的复数我们也可以叫做二元数&#xff0c;表示复平面的一点&#xff0c;对于熟悉欧拉公式的朋友就知道&#xff0c;也可以看成是…

Sui与数据平台ZettaBlock达成合作,为其公测提供数据

Sui一向以闪电般的速度、无限水平扩展著称&#xff0c;现已迅速成为DeFi活动的重要场所。近期&#xff0c;数据平台ZettaBlock宣布在其开创性的Web3数据平台发布中&#xff0c;选择Sui作为基础集成合作伙伴之一。在ZettaBlock的开放测试版发布之际&#xff0c;构建者和开发者将…

双指针算法练习

27. 移除元素 题目 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑…

JS 事件捕获、事件冒泡、事件委托

js事件机制在开发中可以说时刻使用&#xff0c;例如dom绑定事件、监听其自身事件等。js事件机制有事件捕获、事件冒泡俩种机制&#xff0c;我们分别说下这俩种机制的使用场景。 一、概念 事件捕获顺序如下&#xff1a; window > document > body > div 事件冒泡顺序…

Using WebView from more than one process

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 未经允许不得转载 目录 一、导读二、概览三、问题过程源码追踪…

【C++进阶】C++继承概念详解

C继承详解 一&#xff0c;继承的概念和定义1.1 继承的概念1.2 继承的定义1.3 继承关系和访问限定符 二&#xff0c;基类和派生类的对象赋值转移三&#xff0c;继承的作用域四&#xff0c;派生类的默认成员函数五&#xff0c;继承和友元&静态成员和继承六&#xff0c;菱形继…

vue 在线预览word

1 mammoth 先找的是mammoth这个插件yarn add mammoth,版本是1,7.0 参考网上的示例使用如下&#xff1a; import mammoth from "mammoth"; const vHtml ref("") const readExcelFromRemoteFile (url) >{var xhr new XMLHttpRequest();xhr.open("…