|
本帖最后由 杜比 于 2024-6-21 11:15 编辑
思路大致上是,给u盘分多个分区,用pmon支持的boot.cfg菜单,引导指定分区的系统
一、分区建议和操作:
- 要有个fat32分区,方便数据拷贝,也可以未来当efi分区用,所以是第一个分区
- 分区表格式,可以选择传统的win95格式,能有4个主分区,也可以选择uefi分区,分区个数限制很少
- 考虑到后续的文件系统解压安装等操作,推荐准备个linux环境,虚拟机实体机都好
- 建一个linux.swap分区,容量任意,当虚拟内存使用
二、分区可以用的软件:
- 命令行工具:fdisk,cfdisk,parted
- 图形界面工具:GParted,partitionmanager(kde分区工具)
- windows环境下,分区大师 DiskGenius
推荐使用图形界面工具,下图是kde的partitionmanager
三、自定义引导菜单
- timeout 3
- default 0 //显示默契启动下面那个选项,如果改成1就默认启动1选项
- showmenu 1
- title 'LoongOS (USB sda2)' //菜单0
- kernel (usb0,0)/vmlinuz-wifi
- args console=tty console=ttyS0,115200 root=/dev/sda2 rootdelay=5 loglevel=8
- title 'Loongnix (USB sda3)' //菜单1
- kernel (usb0,0)/vmlinuz-wifi
- args console=tty console=ttyS0,115200 root=/dev/sda3 rootdelay=5 loglevel=8
- title '(Linux buildroot sda4)' //菜单2
- kernel (usb0,0)/vmlinuz-xxx //定制内核
- args console=tty console=ttyS0,115200 root=/dev/sda4 rootdelay=5 loglevel=8
复制代码
自定义boot.cfg时需要注意几个技术点
- 模板便于说明加了 //注释,实际应用是要删掉
- 要区分好两个设备名,不能混淆
- pmon是个引导加载器,是个类unix小环境,有自己的驱动程序和设备名规则
- 系统引导时,菜单出现后,boot.cfg里面的 timeout 3 ,定义了等待时长(单位秒),此时按C键,可进入pmon环境命令行
- pmon设备名可以用 devls 命令查看,插入一块u盘,可以识别成usb0,tf卡如果识别的话,设备名是 tfcard0
- 指定分区,(usb0,0) 是第一个分区,(usb0,1) 是第二个分区,以此类推。
- 在boot.cfg中,kernel 和 initrd 装载启动文件,使用的都是 pmon 设备名规则
- args参数,是pmon传递给linux内核的参数,指定rootfs时,用的设备名是linux规则设备名
- 内核会把usb盘,识别为 sdx ,sda是第一块磁盘,sdb是第二块
- 内核对分区的识别是 sda1 = 第一块磁盘第一个分区,sdb2 = 第二块磁盘第二个分区,以此类推
- 明确了设备名,指定路径就很容易了。
- args参数的具体作用,可网络搜索。
四、文件系统的制作
大致上是两个步骤,一是把用制作rootfs的分区挂载,二是拷贝文件,过程如下:
把u盘插入linux环境(虚拟机或实体机),不要自动挂载,通过 ls /dev/sd* 获取u盘的设备名
如插入虚拟机环境,因为内部包含一个磁盘,所以u盘会识别成 sdb,对应的分区是 sdb1,sdb2,sdb3.......
例如要把buildroot或Linuxnix 放在第四个分区,那么进行如下操作
- // 把sdb4挂载到 /mnt目录
- sudo mount /dev/sdb4 /mnt
复制代码
一般的rootfs是 tar.gz 后缀,使用
- sudo tar xvf xxx.tar.gz -C /mnt
- sudo sync
复制代码
openwrt提供的是 .img 后缀,所以不需要上面的挂载命令,直接使用dd进行制作
- sudo dd bs=4M if=openwrt-loongarch-2k0300-rootfs-ext4.img of=/dev/sdb4 status=progress oflag=direct
- sudo sync
复制代码
最后记着,把自定义的boot.cfg拷贝到u盘第一个分区(fat32) 根目录下,让pmon能找到它
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|