龙芯2K1000内核及文件系统烧写流程(恢复Boot内核引导配置及分区)

简介: 龙芯2K1000内核及文件系统烧写流程(恢复Boot内核引导配置及分区)

龙芯2K1000内核及文件系统烧写流

恢复龙芯2K1000板子上的/boot/文件内容及配置

网络挂载内核及文件系统镜像启动

tftp方式下载内核及文件系统镜像配置/boot配置启动目录

解压文件系统镜像并保存在硬盘第一分区中。

清空磁盘空间再次创建分区及初始化boot.cfg

使用loongnix重新烧写板子(为了重新分区)

烧写loongnix系统镜像完成。


恢复龙芯2K1000板子上的/boot/文件内容及配置

  • 由于之前操作失误,将板子上/dev/sda1硬盘分区上的内容格式化了,但是龙芯板子启动pmon引导的默认参数使用的是硬盘第一分区中的/boot/bott.cfg中的配置内容。具体内容参考如下:
titel "YXKJ_TEST"
  kernel (wd0,0)/boot/vmlinuz_yxkj_1104_02
  initrd (wd0,0)/boot/rootfs.cpio.gz
  args console=ttyS0,115200 console=tty0
  • pmon引导会首先读取其中的内容,将该配置目录下的内核和文件系统引导去内存中进行启动。
  • 由于之前操作失误,所以现在首先需要进行板子的恢复工作。流程如下 :
首先,使用网络方式读取内核和文件系统镜像启动。
正常进入文件系统中,在硬盘第一分区中创建/boot目录并按照之前的配置格式准备好boot.cfg文件。
重新启动,进入之前写好的文件系统中,将硬盘第一分区挂载到当前可执行目录下,将准备好的文件系统烧写到硬盘第一分区中,确保下次启动能够引导启动第一分区中的文件系统。

网络挂载内核及文件系统镜像启动

  • 启动龙芯板子,进入pmon执行命令
PMON> ifaddr syn0 192.168.10.139
PMON> load tftp://192.168.10.94/vmlinuz_usenfs
PMON> initrd tftp://192.168.10.94/rootfs.cpio.gz
PMON> g console=tty console=ttyS0,115200
  • 20191216113545107.png动正常:
  • 20191216113800921.png

tftp方式下载内核及文件系统镜像配置/boot配置启动目录

  • 使用tftp方式从tftp服务器下载内核及文件系统镜像到板子上:
# tftp 192.168.10.94 -g -r vmlinuz_usenfs
vmlinuz_usenfs       100% |********************************| 11.8M  0:00:00 ETA
# ls
cantest.sh      dumpdesc        ls2k-igb.sh
dpdk.sh         ls2k-gmac.sh    vmlinuz_usenfs
# tftp 192.168.10.94 -g -r rootfs.cpio.gz
rootfs.cpio.gz       100% |********************************| 57.4M  0:00:00 ETA

20191216140122953.png

  • 挂载硬盘第一分区,并创建/boot配置目录
mount /dev/sda1 /mnt/dev1
//此时挂载失败,原因是/dev/sda1分区并没有进行文件类型格式化。
mkfs.ext2 /dev/sda1 //进行文件类型格式化

20191216140511477.png

  • 看挂载情况并创建目录及配置文件
df -h
cd /mnt/dev1
rm -rf lost+found
mkdir boot
cd boot
cp /root/vmlinuz_usenfs .
cp /root/rootfs.cpio.gz .
vi boot.cfg

20191216140838397.png

建boot.cfg配置文件(该配置启动时文件系统还是启动在内存中,并没有运行在硬盘存储中,所以在文件系统中的修改都不会保存。)


timeout 5                        
default 0                                       
showmenu 1                                
titel "YXKJ_TEST"                             
        kernel (wd0,0)/boot/vmlinuz_usenfs    
        initrd (wd0,0)/boot/rootfs.cpio.gz    
        args console=ttyS0,115200 console=tty0


解压文件系统镜像并保存在硬盘第一分区中。

  • 解压文件系统镜像
cd /mnt/dev1/boot/
cp rootfs.cpio.gz ../
cd ..
gunzip rootfs.cpio.gz
cpio -idmv < rootfs.cpio
rm rootfs.cpio
//修改网络配置
cd etc/network/
vi interface
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
pre-up ifconfig eth0:0 192.168.10.139
up ifconfig eth0:0 192.168.10.139

20191216142429152.png

次修改启动配置内容,添加硬盘存储的文件系统启动:


timeout 5
default 0
showmenu 1
titel "YXKJ_TEST"
        kernel (wd0,0)/boot/vmlinuz_usenfs
        args console=ttyS0,115200 console=tty0 init=/linuxrc rw root=/dev/sda1 rootfstype=ext2
titel "YXKJ_TEST_img"
        kernel (wd0,0)/boot/vmlinuz_usenfs
        initrd (wd0,0)/boot/rootfs.cpio.gz
        args console=ttyS0,115200 console=tty0
titel "YXKJ_TEST_dev2"
        kernel (wd0,0)/boot/vmlinuz_usenfs
        args console=ttyS0,115200 console=tty0 init=/linuxrc rw root=/dev/sda2 rootfstype=ext2
  • 板子重启查看:结果报错:

20191216172411397.png

更新pmon设备树:

load -r -f 0xbfc00000 tftp://192.168.10.94/gzrom-dtb.bin
• 1

结果还是不行,需要重新格式化磁盘再创建

20191217101103225.png

清空磁盘空间再次创建分区及初始化boot.cfg

  • 清空磁盘再次创建分区并格式化
fdisk /dev/sda
# fdisk /dev/sda 
Welcome to fdisk (util-linux 2.32.1).
Changes will rem[ 1156.828000]  sda:
ain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): d
No partition is defined yet!
Could not delete partition 1
//创建新的分区/dev/sda1
# fdisk /dev/sda 
Welcome to fdisk (util-linux 2.32.1).
Changes will remain[ 1298.301000]  sda:
 in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-31277231, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-31277231, default 31277231): 
Created a new partition 1 of type 'Linux' and of size 14.9 GiB.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partiti[ 1304.819000]  sda: sda1
on table.
Syncing disks.
//挂载分区
# mount /dev/sda1 /mnt/
[ 1339.785000] EXT4-fs (sda1): mounting ext2 file system using the ext4 subsystem
[ 1339.806000] EXT4-fs (sda1): mounted filesystem without journal. Opts: (null)
# ls
cantest.sh    dpdk.sh       dumpdesc      ls2k-gmac.sh  ls2k-igb.sh
# cd /mnt/
# df -h
Filesystem                Size      Used Available Use% Mounted on
n                       662.7M         0    662.7M   0% /dev
tmpfs                   691.7M         0    691.7M   0% /dev/shm
tmpfs                   691.7M      1.6M    690.1M   0% /run
tmpfs                   691.7M         0    691.7M   0% /sys/fs/cgroup
tmpfs                   691.7M         0    691.7M   0% /tmp
/dev/sda1                14.7G     20.0K     13.9G   0% /mnt
//创建新的boot目录及boot.cfg
cd /mnt/
mkdir boot
cd boot/
vi boot.cfg
timeout 5                                                                        
default 0                                                                        
showmenu 1                                                                       
titel "YXKJ_TEST"
        kernel (wd0,0)/boot/vmlinuz_usenfs
        args console=ttyS0,115200 console=tty0 init=/linuxrc rw root=/dev/sda1 ro
titel "YXKJ_TEST_img"
        kernel (wd0,0)/boot/vmlinuz_usenfs
        initrd (wd0,0)/boot/rootfs.cpio.gz
        args console=ttyS0,115200 console=tty0
titel "YXKJ_TEST_dev2"
        kernel (wd0,0)/boot/vmlinuz_usenfs
        args console=ttyS0,115200 console=tty0 init=/linuxrc rw root=/dev/sda2 ro
//tftp下载文件到boot目录下
# ifconfig 
docker0   Link encap:Ethernet  HWaddr 02:42:61:99:AC:05  
          inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
eth0      Link encap:Ethernet  HWaddr 96:BD:CB:5C:0E:F4  
          inet addr:192.168.10.182  Bcast:192.168.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1024 errors:0 dropped:0 overruns:0 frame:0
          TX packets:65 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:63286 (61.8 KiB)  TX bytes:5811 (5.6 KiB)
          Interrupt:20 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:160 errors:0 dropped:0 overruns:0 frame:0
          TX packets:160 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:12160 (11.8 KiB)  TX bytes:12160 (11.8 KiB)
# tftp 192.168.10.94 -g -r vmlinuz_usenfs
vmlinuz_usenfs       100% |********************************| 11.8M  0:00:00 ETA
# tftp 192.168.10.94 -g -r rootfs.cpio.gz
rootfs.cpio.gz       100% |********************************| 57.4M  0:00:00 ETA
//卸载磁盘
cd /
umount /mnt
reboot

使用loongnix重新烧写板子(为了重新分区)

之前操作还是不能使/dev/sda1成为引导启动分区,并且还是找不到boot.cfg启动配置文件,所以决定使用U盘烧写loongnix系统进行磁盘分区并设置引导启动分区。

root@ubuntu:# dd if=loongnix-20190331.iso of=/dev/sdb


烧写loongnix系统镜像完成。

  • 重新分配boot分区并设置boot.cfg引导配置目录。
  • 进入系统中已root身份登录,修改boot.cfg。

相关文章
|
安全 Linux
Linux常见维护报错,修复MBR引导/修复grub2菜单/内核文件丢失
Linux常见维护报错,修复MBR引导/修复grub2菜单/内核文件丢失
135 0
Linux常见维护报错,修复MBR引导/修复grub2菜单/内核文件丢失
|
存储 缓存 数据管理
深入理解Linux内核I/O机制:探索文件系统与设备驱动(上)
深入理解Linux内核I/O机制:探索文件系统与设备驱动
|
算法 Linux 网络性能优化
深入理解Linux内核I/O机制:探索文件系统与设备驱动(下)
深入理解Linux内核I/O机制:探索文件系统与设备驱动
|
存储 机器学习/深度学习 监控
了解Linux磁盘及分区的过程
了解Linux磁盘及分区的过程
157 0
|
Linux 计算机视觉
【Linux】(超详细步骤)构建软RAID磁盘阵列
【Linux】(超详细步骤)构建软RAID磁盘阵列
1189 1
|
存储 IDE Linux
Linux 磁盘分区方案简析
Linux 磁盘分区方案简析
153 0
|
存储 内存技术
zynq操作系统: jffs2文件系统的错误异常
JFFS2的全名为JournallingFlashFileSystemVersion2(闪存日志型文件系统第2版),其功能就是管理在MTD设备上实现的日志型文件系统。与其他的存储设备存储方案相比,JFFS2并不准备提供让传统文件系统也可以使用此类设备的转换层。它只会直接在MTD设备上实现日志结构的文件系统。JFFS2会在安装的时候,扫描MTD设备的日志内容,并在RAM中重新建立文件系统结构本身。
690 0
|
Linux
linux 文件系统损坏修复方式
最近,在使用树莓派时,由于异常掉电,导致树莓派的文件系统遭到破坏,系统启动时提示下面的信息:
793 0
|
Linux Shell Go
一个设想,在统一bios/uefi firmware,及内存中的firmware中为pebuilder.sh建立不死booter
本文关键字:firmware in RAM' replacements for UEFI firmware,虚拟efi,编译类colinux的linuxboot
252 0
一个设想,在统一bios/uefi firmware,及内存中的firmware中为pebuilder.sh建立不死booter