首页 > 系统相关 >006-使用buildroot构建一个完整的Linux操作系统

006-使用buildroot构建一个完整的Linux操作系统

时间:2024-06-15 11:57:05浏览次数:14  
标签:buildroot x86 img 64 006 https Linux disk

原文:https://www.bilibili.com/read/cv31634226/

实验介绍
 之前的实验中介绍了如何使用 buildroot 构建一个易于使用的完整文件系统,但是 buildroot 的功能不止于此。

 本实验准备使用 buildroot 构建一个完整的 Linux 操作系统。

 本实验还会将编译好的固件烧录到 U盘中,然后在物理机中运行自己编译好的 Linux 系统。

 

开始构建


下载 buildroot 源码包
 可以从buildroot官网(http://buildroot.uclibc.org/download.html)获取buildroot源码包,buildroot基本上三个月更新一次,这里我们实际下载的源码包是 buildroot-2023.02.9.tar.gz。

wget https://buildroot.org/downloads/buildroot-2023.02.9.tar.gz
tar xf buildroot-2023.02.9.tar.gz
cd buildroot-2023.02.9/
cd configs/
ls *x86_64*
pc_x86_64_bios_defconfig pc_x86_64_efi_defconfig qemu_x86_64_defconfig

cd ..
# 这里使用 pc_x86_64_bios_defconfig
make ARCH=x86_64 pc_x86_64_bios_defconfig
 这里就直接使用 pc_x86_64_bios_defconfig 这个默认的配置。

 注意这里使用的是 bios 启动的方式。

安装编译依赖


sudo apt install libncurses-dev
sudo apt install g++
编译下载依赖包修改国内源
修改 .config 文件。

BR2_BACKUP_SITE="http://sources.buildroot.net"
BR2_KERNEL_MIRROR="https://mirrors.aliyun.com/linux-kernel"
BR2_GNU_MIRROR="https://mirrors.aliyun.com/gnu"
BR2_LUAROCKS_MIRROR="https://luarocks.cn"
BR2_CPAN_MIRROR="https://mirrors.aliyun.com/CPAN"
http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v4.x/

如果下载不到 linux-4.19.204 ,可以自己从别的软件源下载,例如:

https://mirrors.tuna.tsinghua.edu.cn/kernel/v4.x/linux-4.19.204.tar.xz

cd dl/linux/
wget https://mirrors.tuna.tsinghua.edu.cn/kernel/v4.x/linux-4.19.204.tar.xz
编译
make -j8 all
编译完成
 编译完成之后,将会在 output/images/ 目录下生成一个 disk.img 文件,该文件就是最终生成的固件。

 

$ ls output/images/disk.img
output/images/disk.img
分析 disk.img


 这里对生成的 disk.img 文件进行简单的分析,了解其组成结构。

 使用 fdisk 查看 disk.img 的分区。

$ fdisk disk.img

Welcome to fdisk (util-linux 2.38.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk disk.img: 120.15 MiB, 125985792 bytes, 246066 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device Boot Start End Sectors Size Id Type
disk.img1 306 246065 245760 120M 83 Linux

Command (m for help): q
验证测试


qemu 验证测试


qemu-system-x86_64 -hda disk.img
# 使用 kvm 模式
qemu-system-x86_64 -enable-kvm -hda disk.img
真实物理机验证测试
 准备一个大小不小于4GB的U盘,使用 dd 将output/images/disk.img 文件烧录到 U盘中。

 将U盘插入笔记本的USB接口,使用lsblk查看U盘对应的设备名称。

 

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdc 8:32 1 29.3G 0 disk
└─sdc1 8:33 1 120M 0 part
 注意,这里的 /dev/sdc对应的是U盘这个设备。

 

sudo dd if=output/images/disk.img of=/dev/sdc


作者:飘雪冰封 https://www.bilibili.com/read/cv31634226/ 出处:bilibili

标签:buildroot,x86,img,64,006,https,Linux,disk
From: https://www.cnblogs.com/bruce1992/p/18249125

相关文章

  • linux中DNS域名解析服务
    DNS系统在网络中的作用就是维护一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析。正向解析:根据域名查IP地址,即将指定的域名解析为相对应的IP地址。域名的正向解析是DNS服务器的最基本的功能,也是最常......
  • linux中DNS域名解析服务(后续补充)
    分离解析简介:分离解析的域名服务器实际也是主域名服务器,这里主要是指根据不同的客户端提供不同的域名解析记录。比如来自内网和外网的不同网段地址的客户机请求解析同一域名时,为其提供不同的解析结果。        实验要求:防火墙要么关闭掉,要么添加允许通过条目。以及......
  • 嵌入式Linux中的LED驱动控制(基于misc)
    在开发驱动程序的时候,有时希望快速地实现其业务功能,以把精力放在文件接口功能的测试上来。这样,对于常见的一些繁琐而又不能省略的步骤(如设备号的申请、字符设备的注册、设备节点文件的创建等),就希望能尽量地简化。这时,就可以使用Linux内核提供的misc(杂项)来实现。这里仍然使用“嵌......
  • (056)FPGA时钟--->(006)时钟不确定性
     (006)时钟不确定性1目录(a)FPGA简介(b)Verilog简介(c)时钟简介(d)时钟不确定性(e)结束1FPGA简介(a)FPGA(FieldProgrammableGateArray)是在PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既......
  • 【安装笔记-20240613-Linux-在 OpenWrt 的 LuCI界面支持命令行调试】
    安装笔记-系列文章目录安装笔记-20240613-Linux-在OpenWrt的LuCI界面支持命令行调试文章目录安装笔记-系列文章目录安装笔记-20240613-Linux-在OpenWrt的LuCI界面支持命令行调试前言一、软件介绍名称:ttyd主页官方介绍特点二、安装步骤测试版本:openwrt-23.05.3......
  • Linux openSSH 只能够使用SFTP 不能使用ssh登陆
    实施目标:1. 用户只能通过sftp访问,不能登录SSH2.用户要被锁定在特定的目录下,没有读写其它目录的权限 下面开始:首先修改sshd的配置文件:#vim/etc/ssh/sshd_config将该文件的末尾修改如下:#Subsystem sftp /usr/lib/openssh/sftp-server#该行(上面这行)注释掉Subsystem sftp......
  • 使用shell脚本在Linux中管理Java应用程序
    目录前言一、目录结构二、脚本实现1.脚本内容2.使用说明2.1配置脚本2.2脚本部署2.3操作你的Java应用总结前言在日常开发和运维工作中,管理基于Java的应用程序是一项基础且频繁的任务。本文将通过一个示例脚本,展示如何利用Shell脚本简化这一流程,实现Java应用的一键式启动、......
  • fs.1.10 ON rockeylinux8 dockerfile模式
     概述freeswitch是一款简单好用的VOIP开源软交换平台。rockeylinux8docker上编译安装fs.1.10的流程记录,本文使用dockerfile模式。环境dockerengine:Version24.0.6rockylinuxdocker:8freeswitch:v1.10.7dockerfile创建空目录,创建dockerfile文件。github访问经常失败,先......
  • Linux 并发与竞争
    Linux并发与竞争并发与竞争Linux系统是个多任务操作系统,会存在多个任务同时访问同一片内存区域,这些任务可能会相互覆盖这段内存中的数据,造成内存数据混乱。针对这个问题必须要做处理,严重的话可能会导致系统崩溃。现在的Linux系统并发产生的原因很复杂,总结一下有下面几个主要......
  • Linux下的python的部署
    一、python的验证一般情况下liunx系统都会自带python输入python--version便可以查看当前安装的python版本二、Linux系统下安装anaconda步骤大纲:下载anaconda文件→更改文件的权限→开始安装→完成交互问题(更改安装位置)→配置环境变量→更改文件目录权限2.1、下载anacon......