编译更新 WSL2 内核至4.19.57,增加 Squashfs 支持
编译更新 WSL2 内核至4.19.57,增加 Squashfs 支持
前言
WSL是WIN10中内置的Linux子系统,WSL2是WSL技术的第二版。今天在WSL2环境中测试Singularity时遇到问题,无法启动sif格式镜像。经分析,原因是内核中没有squashfs文件系统所致。
当前内核版本:
root@DESKTOP-ASI6ES4:~# uname -r
4.19.43-microsoft-standard
错误表现:
root@DESKTOP-ASI6ES4:/opt/singularity# singularity shell busybox_latest.sif
FATAL: container creation failed: mount /proc/self/fd/3/usr/local/var/singularity/mnt/session/rootfs error: can’t mount image /proc/self/fd/3: failed to mount squashfs filesystem: no such device
准备编译环境
微软商店获取 Ubuntu(我使用的是16.04), 并运行
wsl.exe --list -v
NAME STATE VERSION
Ubuntu-16.04 Running 2
获取WSL2 Kernel最新代码
微软已经在GITHUB上开源了内核代码,GITHUB
安装依赖
sudo install build-essential flex bison libssl-dev libelf-dev
编译内核
查看 modules.builtin 文件,发现最新代码中已经增加了squashfs支持
kernel/fs/squashfs/squashfs.ko
查看git log,发现是6月14日增加的支持
commit 051a2e8171ec05d9d42035f79b1b207e1fe00e6c
Author: Sasha Levin alexander.levin@microsoft.com
Date: Fri Jun 14 23:07:02 2019 +0000
Update WSL config
Enable squashfs, NF conntrack, etc
TAG_MSFT: wsl
Signed-off-by: Sasha Levin alexander.levin@microsoft.com
所以直接编译
make KCONFIG_CONFIG=Microsoft/config-wsl
编译成功后,项目根目录会产生 vmlinux,把该文件复制到 windows 文件系统中,例如 c:\tmp
cp ./vmlinux /mnt/c/tmp/
替换内核
WIN10中以管理员身份运行 PowerShell
- 停止所有 WSL 实例
wsl.exe --shutdown
- 备份原内核
cd C:\Windows\System32\lxss\tools
move kernel kernel.back - 复制编译好的内核
cp c:\tmp\vmlinux .\kernel
重新启动 WSL2, 验证singularity
最新内核版本:
root@DESKTOP-ASI6ES4:/opt/singularity# uname -r
4.19.57-microsoft-standard+
重启ubuntu16.04
wsd.exe -d Ubuntu-16.04
再次运行singularity
root@DESKTOP-ASI6ES4:/opt/singularity# singularity shell busybox_latest.sif
Singularity>
工作正常
延伸阅读
WSL2 Announcing: https://devblogs.microsoft.com/commandline/announcing-wsl-2/
WSL2 使用入门: https://www.geek-share.com/detail/2711221107.html
Singularity3.3手册: https://sylabs.io/guides/3.3/user-guide/
- 配置并编译内核[更新到linux-2.6.34][增加自动精简](转)
- 嵌入式开发实战4——内核的编译之三增加对NAND支持编译
- Android,ijkplayer增加https协议支持,编译运行ijkplayer
- 日记 [2008年03月23日]不编译内核给iptables增加模块
- 不编译内核支持NTFS分区
- cocos2d-x编译到android平台后,增加返回键和菜单键的支持
- Linux下WiFi工具网络转发iptables交叉编译,及其支持iptables使用的内核配置
- 快速支持NTFS文件系统+编译内核(转)
- 在内核中增加对yaffs文件系统的支持
- 在内核中增加对yaffs文件系统的支持
- Mobile Services更新:增加了新的 HTML5/JS SDK 并对 Windows Phone 7.5 进行支持
- 解决编译内核模块helloworld.c:1: 错误:代码模式‘kernel’在 32 位模式下不受支持问题,未编译对64位的支持
- Ubuntu 8.04 Linux系统下面编译更新内核版本
- 内核编译之支持NTFS
- linux如何编译安装新内核支持NTFS文件系统(以redhat7.2x64为例)
- nginx增加ssl支持 - 编译时参数详情列表
- 编译backports(compat wierless),增加支持AR9271无线芯片
- linux内核里增加源代码编译
- LKU:一套在 Ubuntu/LinuxMint 上编译、安装和更新最新内核的 Shell 脚本
- U-Boot移植(4)增加对S3C2440的支持 (修改编译错误)