使用龙芯派2代烧写自己制作的内核及文件系统(失败2次,最终成功)

简介: 使用龙芯派2代烧写自己制作的内核及文件系统(失败2次,最终成功)

使用龙芯派2代烧写自己制作的内核及文件系统

前期准备:

  • 已经制作好的具有init RAmdisk 选项的linux内核。
  • 使用buildroot工具制作好的文件系统。
  • 将这两部分拷贝到longxnix系统下的/boot路径下,修改/boot/boot.cfg文件中的内容,添加新建的两个选项。
  • 烧写启动流程:先启动ramdisk的内核到系统下,将文件系统解压到硬盘中,再启动到pmon下设置环境变量,
set al1 /dev/fs/ext2@wd0/boot/vmlinuz
set append "console=ttyS0,115200 init=/linuxrc rw root=/dev/sda1 rootfstype=ext2"


实践过程

方法1

  • 启动ramdisk系统,进入暂时存在内存下的文件系统中,在根目录下包含着该文件系统的cpio压缩包:
mount /dev/sda1 /mnt/rootfs
cd /mnt/rootfs
mkdir rootfs
cd rootfs
cp /yxkj_rootfs_test.cpio .
#解压文件系统
cpio -idmv < yxkj_rootfs_test.cpio


  • 到此,文件系统已经解压到了硬盘/dev/sda1下的rootfs目录下,尝试设置启动参数进行试验。
  • 设置参数:
set al /dev/fs/ext2@wd0/boot/vmlinuz
set append "console=ttyS0,115200 init=/linuxrc rw root=/dev/sda1 rootfstype=ext2"


  • 启动失败,机器卡死,

尝试解决:

  • 考虑可能是内核路径设置不对的原因,进行修改。
  • 修改后,内核能够正常启动,文件系统不行,提示
  • Kernel panic - not syncing : VFS : Ubable to mount root fs on unknown-block(0,0)
  • 该错误考虑是需要将硬盘进行分区,所以接下来进行龙芯loongnix重新安装并进行存储分区。

龙芯loongnix系统重新安装

  • 使用龙芯官方提供的系统镜像:

20191106142427520.png

在Ubuntu虚拟机下执行指令:

# 代表安装盘 iso 镜像文件路径, Y 代表待写入 U 盘设备符
 dd if=loongnix-20190331.iso of=/dev/sdb
• 1
• 2

20191106142925769.png

完成后显示如下:

20191106143531883.png

  • 插上U盘后,重启龙芯派,并没有显示u盘安装选项,重新安装龙芯loongnix系统失败。

硬盘分区后将文件系统写入新分区进行启动尝试

进行硬盘分区:

  • 观察到当前/dev/sda 硬盘设备有16G大小,但是当前只分区了10G作为/dev/sda1,所以开始考虑新建分区/dev/sda2,并在上面保存文件系统进行启动尝试。
fdisk /dev/sda
n(新建盘指令)
p(新建主分区)
2(序号2)
以下默认即可
w(保存退出)
#查看当前磁盘
fdisk -l


设置新分区的文件系统类型

mkfs.ext2 /dev/sda2
#查看修改后的文件系统类型
parted  #显示文件系统命令
print list #输入打印信息命令


在新建分区中写入文件系统

#挂载分区
mount /dev/sda2 /mnt
cd /mnt
#拷贝文件系统压缩包到当前目录下
cp /boot/rootfs.cpio.gz .
gunzip rootfs.cpio.gz
#解压
cpio -idmv < rootfs.cpio
#修改启动参数,重启尝试
cd /boot
vi boot.cfg
titel "YXKJ_TEST"
  kernel (wd0,0)/boot/vmlinuz_yxkj_1104_02
  args console=tty0,ttyS0,115200 init=/linuxrc rw root=/dev/sda2 rootfstype=ext2
#重启
reboot



使用镜像系统启动

titel "YXKJ_TEST"
  kernel (wd0,0)/boot/vmlinuz_yxkj_1104_02
  initrd (wd0,0)/boot/rootfs.cpio.gz
  args console=ttyS0,115200 console=tty0


搞定

结论:


  • 目前正常启动自己制作的文件系统,就是使用新建分区并且初始化文件系统类型,然后在/boot/boot.cfg文件中添加参数即可。


相关文章
|
6月前
|
存储 缓存 固态存储
Linux设备全览:从字符到块,揭秘每种设备的秘密
在Linux的世界里,设备是构成系统的基础,它们使得计算机能够与外界互动。Linux设备可以大致分为几种类型,每种类型都有其独特的特性和用途。🌌让我们一起探索这些设备类型及其特性。
|
存储 Java 关系型数据库
操作系统中文件系统的实现和分配方式探析(下)
本文介绍了非连续空间存放方式中的两种常见形式:链式分配和索引分配。链式分配通过链表的方式实现了文件的非连续分配,其中包括了隐式链接和显式链接两种方式。隐式链接通过遍历链表来获取下一个节点的指针,适合于文件的扩展,但查找效率较低。显式链接则将指针存储在文件分配表中,提高了检索速度,但不适用于大磁盘空间。索引分配通过为每个文件创建索引数据块,实现了文件的非连续分配和直接访问。多级索引和链式索引块是处理大文件存储的组合方式,提高了文件系统的性能和可靠性。通过深入了解这两种分配方式,可以更好地理解和应用非连续空间存放技术,从而有效提高文件系统的管理效率和性能。
169 1
操作系统中文件系统的实现和分配方式探析(下)
|
存储 缓存 Java
操作系统中文件系统的实现和分配方式探析(上)
本文主要讨论了操作系统中文件系统的实现和分配方式。首先介绍了虚拟文件系统(VFS)作为中间层,统一了不同文件系统的接口。然后介绍了文件的物理结构,包括文件块和逻辑块之间的映射关系。接着详细讨论了连续分配方式的特点和优缺点,包括顺序访问和随机访问的效率,以及磁盘空间碎片和文件长度扩展不方便的问题。最后提到了非连续分配方式来解决连续分配方式的问题,并留下了下次讨论的悬念。文件系统的实现和分配方式对于操作系统的性能和可靠性都有重要影响,因此深入理解和研究文件系统的原理和机制是非常有价值的。
148 0
操作系统中文件系统的实现和分配方式探析(上)
|
存储 C语言
3D打印Marlin2.0固件源代码分析之参数存储方式实现
3D打印Marlin2.0固件源代码分析之参数存储方式实现
832 0
|
存储 内存技术
从简单的文件偏移、读写进一步研究MCU程序的下载和软件升级(上)
从简单的文件偏移、读写进一步研究MCU程序的下载和软件升级(上)
60 0
|
Linux
韦东山Linux驱动入门实验班(3)hello驱动---申请指定数量的次设备号
韦东山Linux驱动入门实验班(3)hello驱动---申请指定数量的次设备号
135 0
|
NoSQL Linux 编译器
操作系统课程设计:新增Linux驱动程序(重制版)(一)
操作系统课程设计:新增Linux驱动程序(重制版)
205 1
操作系统课程设计:新增Linux驱动程序(重制版)(一)
|
开发工具 内存技术
zynq程序固化补充篇: 不切换启动模式强制烧写
使用SDK2018.2第一次进行烧写 Flash,在qspi模式下会报错,只有切换至jtag模式下才可以进行烧录,后续的再次烧录不会出现类似问题。但是调试的时候必须切回jtag模式(将BOOT MODE 5拉低才可以调试)
2140 1
zynq程序固化补充篇: 不切换启动模式强制烧写
|
安全 Unix Linux
关于嵌入式Linux系统flash分区设计及文件系统格式选择的一些浅见
嵌入式系统应用程序升级是比较频繁的,对于flash的合理划分与文件系统选型就显得尤为关键。
363 0
|
存储
龙芯2K1000内核及文件系统烧写流程(恢复Boot内核引导配置及分区)
龙芯2K1000内核及文件系统烧写流程(恢复Boot内核引导配置及分区)
545 0
龙芯2K1000内核及文件系统烧写流程(恢复Boot内核引导配置及分区)