一,在windows上安装WSL2
1,WSL2介绍
WSL2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是提高文件系统性能,以及添加完全的系统调用兼容性。
2,安装
通过命令行(管理员身份)执行:
# 适用于 Linux 的 Windows 子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
3,更新内核
4,设置 wsl 默认版本
通过命令行(管理员身份)执行:
wsl --set-default-version 2
让未来的 Linux 都默认以 WSL2 形式安装。
5,安装 Linux 系统
当前有两种方式可选,通过微软商城一键安装或者通过wsl命令手动安装。
微软商城安装
打开 Microsoft Store,搜索 wsl 即可获取可用 Linux 发行版。
现在支持的发行版有:
-
Ubuntu 16.04 LTS
-
Ubuntu 18.04 LTS
-
Ubuntu 20.04 LTS
-
openSUSE Leap 15.1
-
SUSE Linux Enterprise Server 12 SP5
-
SUSE Linux Enterprise Server 15 SP1
-
Kali Linux
-
Debian GNU/Linux
-
Fedora Remix for WSL
-
Pengwin
-
Pengwin Enterprise
-
Alpine WSL
下载完成后,点击图标进入,首次使用会需要几分钟执行安装。
完成安装后,设置 Ubuntu 用户名(非 root)及密码,正式开启 Ubuntu 系统。
二,u-boot源码下载及编译
1,使用的硬件
IMX6ULL开发板:百问网嵌入式专家-韦东山嵌入式专注于嵌入式课程及硬件研发
CPU:ARM Cortex-A
内存:512MB DDR3L
Flash: 4GB eMMC Flash
2,u-boot源码下载和编译
源码下载:u-boot的版本 2017.03
git config --global user.email "xxxx"
git config --global user.name "xxx"
git clone https://e.coding.net/codebug8/repo.git
repo/repo init -u https://gitee.com/weidongshan/manifests.git -b linux-sdk -m imx6ull/100ask_imx6ull_linux4.9.88_release.xml --no-repo-verify
repo/repo sync -j4
临时设置编译的环境变量:
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/zhuwg1/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
编译:
make distclean
make mx6ull_14x14_evk_defconfig
make -j4
编译生成的u-boot-dtb.imx是我们需要文件。
三,烧写u-boot到硬件板子的Flash
芯片厂商一般都会提供烧写工具,除了可以烧写整个系统镜像还可以单独更新单个分区的镜像,比如IMX6ULL芯片可以使用MGTool工具单刷u-boot、kernel、rootfs等,将u-boot-dtb.imx传到windows系统,按照操作文档通过USB将u-boot烧写到EMMC。
四,u-boot简介
Linux系统要启动就必须需要一个bootloader程序,也就是说芯片上电后先运行一段bootloader程序,这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND/NOR FLASH/SD/MMC等)拷贝到DDR中,最后启动Linux内核
bootloader和Linux内核的关系跟PC上的BIOS和Windows的关系一样,bootloader就相当于BIOS。目前有很多现成的bootloader软件可用,比如U-Boot、vivi、RedBoot等,其中以U-Boot使用最为广泛。
boot(Universal Boot Loader),是一个遵循GPL协议的开源软件,是一个裸机代码,可以看作是一个裸机综合例程。
u-boot的核心功能就是启动内核:
-
读Flash,把内核读入内存
-
启动内核
1,uboot官网代码
uboot官网上下载的是最原始的uboot源码。uboot官网下载地址如下:The U-Boot Documentation — Das U-Boot unknown version documentation
2,半导体厂商uboot代码
移植uboot时一般不会直接用 uboot 官方的源码的,官方的源码是给半导体厂商准备的,半导体厂商会根据自家的芯片,维护自己芯片对应的uboot。NXP维护的的uboot地址:GitHub - Freescale/u-boot-fslc: U-Boot tree to host pending fixes and improvements
3,开发板厂商uboot代码
开发板厂商做的开发板需要修改芯片厂商官方的uboot,使其支持开发板厂商生产的评估板。本文使用的100ask开发板的uboot下载地址:CODING | 一站式软件研发管理平台
五,u-boot的目录结构
在u-boot目录下执行"tree . -d > 1.txt",可以得到目录的结构,精简如下:
.
├── Licenses //许可证文件
├── api //与硬件无关的API函数
├── arch //与架构体系有关的代码
│ ├── arm
│ │ ├── cpu
│ │ │ ├── armv7
│ │ │ │ ├── mx6
│ │ ├── dts
│ │ │ └── include
│ │ │ └── dt-bindings -> ../../../../include/dt-bindings
│ │ ├── include
│ │ │ ├── asm
│ │ │ │ ├── arch-imx
│ │ │ │ ├── arch-imx8
│ │ │ │ ├── arch-imx8m
│ │ │ │ ├── imx-common
│ │ │ └── debug
│ │ ├── lib
│ │ ├── mach-rockchip
│ │ │ ├── rk3036
│ │ │ ├── rk3288
│ │ │ └── rk3399
│ │ └── lib
├── board //不同板子的定制代码
│ ├── freescale
│ │ ├── common
│ │ │ └── p_corenet
│ │ ├── corenet_ds
│ │ ├── mx6ul_14x14_ddr3_arm2
│ │ ├── mx6ul_14x14_evk
│ │ ├── mx6ul_14x14_lpddr2_arm2
│ │ ├── mx6ul_nxpu_iopb
│ │ ├── mx6ul_spriot
│ │ ├── mx6ull_ddr3_arm2
│ │ ├── mx6ullevk
├── cmd //命令相关代码
│ ├── fastboot
│ └── mvebu
├── common //通用代码
│ ├── eeprom
│ ├── init
│ └── spl
├── configs //配置文件
├── disk //磁盘分区相关代码
├── doc //文档
├── drivers //驱动代码
├── dts //设备树
├── examples //示例程序
│ ├── api
│ └── standalone
├── fs //文件系统
│ ├── cbfs
│ ├── cramfs
│ ├── ext4
│ ├── fat
│ ├── jffs2
│ ├── reiserfs
│ ├── sandbox
│ ├── ubifs
│ ├── yaffs2
│ └── zfs
├── include //头文件
├── lib //库文件
├── net //网络相关代码
├── post //上电自检程序
├── scripts //脚本文件
├── test //测试代码
└── tools //工具文件夹
六,u-boot文档说明
后续总结的文档中很多引用了<100ask.net>中的内容,侵删。