构建一个U盘Linux
文章目录构建一个U盘Linux1.下载编译Linux内核Kernel1.1下载内核1.2解压内核1.3配置内核1.4编译内核2.下载安装BusyBox工具2.1下载压缩包2.2解压2.3配置BusyBox2.4编译和安装busybox3.格式化U盘3.1下载安装DiskGenius3.2格式化U盘4.构建Linux根文件系统4.1虚拟机内的操作4.2 U盘内的操作5.测试U盘Linux5.1配置虚
文章目录
构建一个U盘Linux
-
目标 :对内核进行配置与编译,具备部署新内核的能力。
内核编译、部署,目标设备是软盘(1.44MB)或U盘,系统将从软盘或U盘上启动。
-
环境:主机:Windows10
虚拟机:VMware Workstation 16 Pro+Ubuntu20(安装请参考:(2条消息) VMware虚拟机安装 Linux(Ubuntu)教程_一顿吃不饱的博客-CSDN博客)
1.下载编译Linux内核Kernel
1.1下载内核
在Ubuntu中打开官网,下载最新版本的就可以,注意保存的位置(我在桌面新建了一个文件夹存放它)
1.2解压内核
在该文件夹下打开终端,输入如下命令
xz -d linux-5.15.5.tar.xz
tar xvf linux-5.15.5.tar
1.3配置内核
(1)配置环境,安装一些可能需要的软件
apt-get update
apt-get upgrade
apt-get install build-essential
apt-get install build-essential gcc
apt-get install binutils-multiarch
apt-get install alien
apt-get install ncurses-dev
apt-get install libncurses5-dev libncursesw5-dev
apt-get install ncurses-devel
apt-get install bison -y
apt-get install flex
(2)配置内核
在解压后的linux内核文件夹里打开终端输入如下命令(出现如图所示时表示操作成功)
make x86_64_defconfig
在命令行输入
make menuconfig
会出现如下界面
然后添加一些选项
·Device Drivers -> Block devices ->loopback device support, RAMblock device support
·Device Drivers ->SCSI Support -> SCSI device support 下的SCSI disk Support、 SCSI low-level drivers —> Buslogic SCSI support
· Device Drivers ->USB Support ->Support for Host-side USB,Preliminary USB device filesystem ,USB Mass Storage support,xHCI HCD (USB 3.0) support,xHCI HCD (USB 2.0) support
File System -> ext3
配置好后保存退出
1.4编译内核
make dep // 寻找依存关系,由系统决定要编译哪些内容
make clean // 清除以前编译内核时生成的中间文件
make bzImage // 生成压缩的Linux内核文件,保存位置:你内核编译完成后 最后一行命令就是其位置
在编译的时候可能会出现一些问题,这些是我遇到的,仅供参考:编译Linux内核kernel时遇到的问题与解决方案_一顿吃不饱的博客-CSDN博客
2.下载安装BusyBox工具
2.1下载压缩包
官网:BusyBox
选择最新版本下载
2.2解压
- 解压缩,可以右击解压也可以使用命令行解压
tar -jxvf busybox-1.34.1.tar.bz2
2.3配置BusyBox
进入解压后的目录
make defconfig //使用默认配置,让busybox包含常用命令和工具
make menuconfig //在上述基础上,自己更改配置
开始配置
添加项
BusyBox Setting->Build Options->[ 选]Build Busybox as a static binary (no shared libs)
Shells->chose your default shell(ash):
BusyBox Setting->[*]Don’t use /usr(否则busybox会安装到ubuntu的/usr下,会覆盖原系统原有的命令)
删除项
Coreutils—>sync
Linux System Utilities—>nsenter
Linux System Utilities—>Support mounting NFS filesystems(网络文件系统)
Networking Utilities—>inetd(超级服务器)
busybox settings ->build options ->build with large file support
2.4编译和安装busybox
make
make install
当出现下图所示时就表明已经安装完成了
执行完成后会发现多了一个_install目录
(如果在make或make install 过程中一直出现问题且无法解决,就换一个busybox版本再尝试一下)
3.格式化U盘
3.1下载安装DiskGenius
地址:压缩包上传审核未通过,需要请私信
解压后点击.exe文件就可以运行了
3.2格式化U盘
需要清空U盘所有信息,请做好备份
将U盘转化为MBR格式
分区->删除当前分区(清空磁盘)
分区->建立新分区->主磁盘分区->选择文件系统类型 ext3
成功后如图所示
4.构建Linux根文件系统
4.1虚拟机内的操作
在虚拟机中构建一个根文件系统的镜像压缩,之后复制到U盘中。如果直接在U盘中构建,之后有什么错误需要格式化U盘。
(1)在文章开头时新建的文件夹下新建rootfs文件,把_install目录中的内容复制进去,现在rootfs下已经有了bin、sbin目录
(2)一个完整linux系统还需要添加其他必要文件夹,进入/rootfs,输入:
`mkdir usr proc mnt var tmp dev sys etc`
(3)同时在rootfs下还必须要有一个init文件,这个init文件可以是一个可执行的二进制文件,也可以是一个shell脚本,或者是指向前面两者的链接。init文件会在linux内核初始化就绪后被执行。方便起见,我们就把init做成一个指向bin/sh的软连接,在rootfs下输入:
ln -s bin/sh init
(4)dev目录下还必须有几个必要的设备console,null,ram,tty,tty1,tty2,tty3,tty4这些tty就是和用户交互的终端:cd 进入/rootfs/dev,建立必须的设备节点文件,并授权,输入:
mknod tty c 5 0
mknod console c 5 1
mknod null c 1 3
mknod ram b 1 0
mknod tty1 c 4 1
mknod tty2 c 4 2
mknod tty3 c 4 3
mknod tty4 c 4 4
chmod 666 tty console null
chmod 666 tty1 tty2 tty3 tty4
chmod 600 ram
(5)制作压缩镜像,输入:
cd .. // 回到rootfs目录下
find . | cpio -H newc -o > ../rootfs.img // 返回 块数目:5157 块
cd .. //回到用户目录
gzip rootfs.img -f //压缩镜像
4.2 U盘内的操作
(1)将U盘连接到虚拟机
若U盘连接不到虚拟机,请参考:U盘连接不到虚拟机的问题解决方法_一顿吃不饱的博客-CSDN博客
(2)检查是否分区成功和连接成功,输入:
sudo fdisk -l
(3)挂载U盘
mkdir /mnt/usb2 //新建一个usb2文件夹
mount /dev/sdb1 /mnt/usb2 //然后把sdb1挂到usb2文件夹
(4)安装grub,显示最后一句话说明安装成功。
输入:
sudo grub-install --root-directory=/mnt/usb2 /dev/sdb
这条命令会把grub安装到/dev/sdb中,即把grub的第一阶段(短于512字节的部分)放入/dev/sdb的第一扇区,并且把第二阶段要用到的各种文件放到当前目录(即/dev/sdb1分区承载的ext3文件系统)(更准确的说,是放在了/dev/sdb1/boot/grub下)
(5)把过去做好的bzImage和rootfs.img.gz复制到U盘的boot目录下
cp linux-5.15.5/arch/x86/boot/bzImage /mnt/usb2/boot/
cp rootfs.img.gz /mnt/usb2/boot/
(6)配置grub.cfg
在/mnt/usb2/boot/grub文件夹新建一个文件grub.cfg并在文件夹内编写以下内容,保存后退出
(7)卸载U盘,目的是避免损坏或丢失数据,之后拔出U盘,即制作完成
5.测试U盘Linux
5.1配置虚拟机
此时以管理员的方式运行VM,并将U盘连接到主机
(1)在VMware内新建一个虚拟机,不要安装操作系统
选择Ubuntu64位
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gsWNnUoT-1638275082031)(C:\Users\MayBeBa\AppData\Roaming\Typora\typora-user-images\image-20211130200221486.png)]
选择磁盘类型
选择物理磁盘
选择设备,drive0是主机的物理盘,不要选,一般都是drive1或drive2
完成虚拟机的创建
(2)配置虚拟机,使得开机就进入BIOS系统
5.2开启虚拟机,进行测试
(1)设置虚拟机bios 的引导顺序,将U盘放在第一位(shift+"+/-")
保存退出
(2)成功启动,大功告成
Enter ->等待系统启动
(3)测试U盘Linux系统
成功运行,至此我们的U盘Linux就成功部署完成了
更多推荐
所有评论(0)