小白自制Linux开发板三.Linux内核与文件系统移植

Linux内核移植和文件系统构建过程对于F1C100S/F1C200S,官方Linux源代码支持licheepinano。
您可以使用licheepino配置文件完成内核移植。
首先,访问您的Linux系统的官方网站,下载最新的长期支持版本(推荐5.10.69)或根据您的个人需求选择其他版本。
在新页面上,选择概述并单击要下载的标签下的[...]。
下载完成后,将代码复制到您的Ubuntu虚拟机并解压缩。
接下来我们设置编译过程。
在VS中打开Linux内核代码,找到Makefile文件,并进行如下配置:指定架构为Arm并使用已安装的编译工具。
修改Makefile中的ARCH和CROSS_COMPILE字段或直接在make命令中添加相应的参数。
配置内核,将sunxi_defconfig替换为lichepi_nano配置文件,完成内核和设备树编译。
为了保证TF卡设备树配置正确,需要修改suniv-f1c100s.dtsi和suniv-f1c100s-lichepi-nano.dts文件。
在根节点添加代码,确保设备树正确识别硬件。
编译过程中,由于Ubuntu系统的差异,可能会出现编译错误。
可以通过复制错误消息并安装缺少的组件来解决此问题。
第一次编译可能需要一些时间。
完成后会生成一个内核文件zImage和一个设备树文件suniv-f1c100s-lichepi-nano.dtb。
配置TF卡分区,通过Gparted软件创建两个分区。
一种用于存储内核和设备树文件,另一种用于存储根文件系统。
选择fat16和ext4格式并设置相应的卷标。
分区完成后,使用文件管理器查看两个已安装的分区。
将生成的内核和设备树文件复制到TF卡的BOOT分区。
插入开发板后,系统重启后会自动进入内核启动阶段。
这时需要保证文件系统挂载正确。
接下来,进行文件系统迁移。
选择Buildroot工具创建文件系统,从官网下载并解压buildroot2018.2.11版本。
配置Targettoptions、Buildoptions、Toolchain和Systemconfiguration以确保系统兼容性。
运行文件系统构建命令并等待其完成。
将最终生成的rootfs.tar文件解压到TF卡的第二分区。
插入TF卡并输入root帐号,系统将安装root文件挂载系统成功,进入shell交互环境。
对于命令行前出现#符号的问题,请修改/etc/profile文件以获得与常规Linux相同的体验。
当开发板运行时,您必须运行命令来正常关闭系统。
否则可能会导致文件系统损坏。
移植内核和文件系统后,您可以通过LinuxGPIO系统在小型开发板上实现LED照明实验。
配置文件系统,修改相关命令,编译并重写rootfs到您的开发板。
了解GPIO编号和值是如何计算的,并通过shell命令操作LED灯。
最后,虽然目前灯光实验的实现比较基础,但算是Linux内核功能的初步应用。
未来,我们计划增强硬件设备,进行更深入的开发。
期待您的下一次探索!

WSL2Linux子系统移植(例:C盘换到D盘)

在日常使用中,我通常依赖两个Linux子系统,通常在PowerShell中启动它们。
不过,随着D盘的空间越来越紧张,我决定将其中一个Ubuntu22.04ext4.vhdx文件迁移到E盘,首先确保WSL关闭,然后再执行迁移操作。
:1.关闭正在运行的WSL子系统。
2、导出需要迁移的Ubuntu22.04子系统,为迁移到新位置做准备。
3.等待导出过程完成,但您发现D盘仍然空间不足。
4、为了避免进一步占用D盘,我决定将导出的文件直接移至E盘。
5、导出文件成功后,查看导出的文件。
6.接下来,卸载原来的Ubuntu子系统,只在E盘留下一个。
7.顺利导入导出的文件,确认新的子系统已安装。
8、登录Ubuntu22.04,发现初始用户有root权限。
为了解决这个问题,我登录wslroot用户环境,打开交换机配置文件/etc/wsl.conf。
在该文件中,我添加了自定义用户名(将用户名替换为当前用户名)以恢复为以前的用户名:进行上述编辑后,重新启动WSL以应用新设置。
重新登录Ubuntu22.04后,发现默认用户恢复为user_name,解决了权限问题。
同时,D盘的剩余空间也大幅增加,这让我很高兴。
至此,我成功将Linux子系统从D盘迁移到了E盘,同时保证了用户权限设置正确,为以后的工作提供了更大的便利。

嵌入式系统移植步骤

嵌入式系统移植关键步骤分析在系统移植的讨论中,操作系统移植占有重要地位,特别是Linux操作系统符合GPL标准并且非常流行。
本文将详细分析Linux系统迁移步骤,对系统迁移有一个全面、清晰的认识。
1、Linux系统变迁两部分Linux系统主要由内核部分和系统部分组成。
内核负责初始化和控制所有硬件设备以及内存管理、进程管理、设备读写等。
系统单元安装必要的工具并配置环境,以便用户可以使用整个系统。
内核和系统的分离使得安装过程更加清晰。
2.系统迁移所需的环境在系统迁移之前,您必须确保具备以下环境:新版本的gcc编译器、目标平台编译后的链接库以及目标平台的所有文档。
另外,如果您有开发支持/模拟环境和加载器,则可以减少迁移过程中的工作。
3、Linux系统迁移要点从内核和系统的角度描述了迁移过程的要点。
(1)内核移植Linux内核将与硬件相关的代码和与硬件无关的代码分开,解决了硬件平台安装的问题。
安装过程中,主要固定硬件相关的进程管理、内存管理、设备管理组件。
移植任务庞大,涉及底层操作和硬件平台的细节,需要对目标平台有深入的了解。
(2)操作系统内核移植完成后,操作系统的运行进入联调阶段。
最小系统必须重新构建,包括init、libc库、驱动模块、应用程序和系统配置脚本。
这个过程相对容易,但是需要考虑一些看不见的开发工作,例如特殊设备驱动程序和远程调试。
4、安装过程中常见问题及解决方法在安装过程中,您可能会遇到测试时锁死或误动作的问题。
相对查找系统部分的错误很简单,内核类就比较难了。
一个好的开发/仿真平台、添加调试代码、完整的硬件文档和专业的支持是解决问题的关键。
同时,基于GPL的Linux特性的使用鼓励了许多爱好者参与移植。