Try ubuntu core (by quqi99)

news2024/11/13 17:57:35

作者:张华 发表于:2024-07-20
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明(http://blog.csdn.net/quqi99)

try ubuntu core on qemu

#ovmf is to ensure compatibility with the required UEFI features in ubuntu core
sudo apt install qemu-kvm ovmf
kvm-ok
#swtpm is to provide a TPM emulator
sudo snap install --edge test-snapd-swtpm
#Download ubuntu core - https://ubuntu.com/core/docs/supported-platforms
wget https://cdimage.ubuntu.com/ubuntu-core/24/stable/current/ubuntu-core-24-amd64.img.xz
xz -d ubuntu-core-24-amd64.img.xz
#With TPM emulation and full disk encryption
sudo qemu-system-x86_64 -enable-kvm -smp 1 -m 2048 -machine q35 -cpu host -global ICH9-LPC.disable_s3=1 \
 -net nic,model=virtio -net user,hostfwd=tcp::8022-:22,hostfwd=tcp::8090-:80  \
 -drive file=/usr/share/OVMF/OVMF_CODE.secboot.fd,if=pflash,format=raw,unit=0,readonly=on \
 -drive file=/usr/share/OVMF/OVMF_VARS.ms.fd,if=pflash,format=raw,unit=1 \
 -drive "file=/images/kvm/ubuntu-core-24-amd64.img",if=none,format=raw,id=disk1 \
 -device virtio-blk-pci,drive=disk1,bootindex=1 -serial mon:stdio
#https://login.ubuntu.com  and https://login.ubuntu.com/ssh-keys
ssh <your-name>@localhost -p 8022

try ubuntu core on raspberry pi

#download image from https://ubuntu.com/core/docs/supported-platforms , eg: ubuntu-core-24-arm64+raspi.img.xz
xz -d ubuntu-core-24-arm64+raspi.img.xz
sudo dd if=ubuntu-core-24-arm64+raspi.img of=/dev/sdb status=progress; sync

try ubuntu core on x64 computer

#dd to usb or disk
sudo dd if=/images/kvm/ubuntu-core-24-amd64.img of=/dev/sdb status=progress; sync

树霉派上的linux启动流程理论分析

注意:下面的过程只是我从网上做的一个理论分析,并没有做实验,只是想让自己大致心里清楚有些大致的步骤。

树莓派4b启动流程:romboot–>uboot–>kernel–>rootfs
1, 第一阶段bootloader, 上电后,加载bootrom(固化在芯片内部,4b之前通过EEPROM加载SD上的bootcode.bin)到GPU中运行来初始化PLL, DDR等
2, 第二阶段bootloader, 从SD/网络/USB等加载start4.elf, 接着读取config.txt去进行uboot的启动流程
3, 启动kernel

通过JTAG将uboot引导安装到开发板Nor Flash/BIOS中,有两类,一类是并口,一类是USB代替并口(/dev/ttyUSB0)
通过uboot将OS(如tftp)引导安装到开发板NAND Flash中
打开Raspberry Pi Imager烧录镜(romboot)像到SD中, 默认串口没有输出,需修改config.txt在末尾添加enable_uart=1
在这里插入图片描述
1, 交叉编译工具的安装与uboot的编译

wget https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz -C /bak/soft/arm
alias crosscompiler='export KERNEL=kernel8;export ARCH=arm64;export CROSS_COMPILE=/bak/soft/arm/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-'
git clone https://github.com/u-boot/u-boot.git
cp ./u-boot <your-sd>
git checkout v2020.04-rc3
sudo apt install u-boot-tools bison bc make flex libssl-dev ncurses-* -y
crosscompiler
make rpi_4_defconfig
make -j $(nproc)
cat << EOF |tee ./config.txt
ls u-boot.bin
arm_control=0x200  #64 bits
kernel=u-boot.bin
dtoverlay=disable-bt #If serial debugging is enabled, Bluetooth cannot be used
EOF

下面是一个客户使用的config.txt, 本来无法进入ubuntu core内核,但改为dtoverlay=vc4-kms-v3d就修复了
[cm4]
otg_mode=1
[pi4]
kernel=uboot_rpi_4.bin
dtoverlay=vc4-fkms-v3d,cma-128
dtoverlay=dwc2,dr_mode=host
[pi3]
kernel=uboot_rpi_3.bin
dtoverlay=vc4-fkms-v3d,cma-128
max_framebuffers=2
[all]
arm_64bit=1
enable_uart=1

2, 编译树莓派Linux源代码, 并通过tftp加载kernel

git clone --branch rpi-5.6.y https://github.com/raspberrypi/linux
mkdir rpi_hw
make O=rpi_hw bcm2711_defconfig
make O=rpi_hw menuconfig
make O=rpi_hw -j $(nproc)
ls rpi_hw/arch/arm64/boot
sudo cp rpi_hw/arch/arm64/boot/Image /bak/tftp/

进入u-boot命令窗口(就像进入bios一样的, 可能需要在出现“Hit any key to stop autoboot: 3”时,按下空格键)后运行

sudo minicom -D /dev/ttyUSB0 -b 115200  #press power key
setenv ipaddr 10.1.1.100 #设置开发板的静态地址(自定义)
setenv serverip 10.1.1.160 #设置根文件系统的nfs服务器地址
setenv netmask 255.255.255.0
saveenv
reset
setenv kernel_addr_r 0x8000
setenv kernel Image
setenv netboot 'tftp ${kernel_addr_r} ${kernel} && booti ${kernel_addr_r} - ${fdtcontroladdr}'
setenv bootcmd 'run netboot'
setenv bootargs 'console=ttyAMA0'
saveenv
reset

设置cmdline, 可以用下列的u-boot命令设置,也可以在/run/mnt/ubuntu-seed/cmdline.txt中设置

setenv nfsroot /opt/nfs/
setenv bootargs "console=ttyAMA0,115200 root=/dev/nfs rw nfsroot=${serverip}:${nfsroot},v3,tcp ip=$ipaddr:$serverip::$netmask::eth0:off"
saveenv

搭建tftp服务器的步骤:

#windows client is Tftp64
sudo apt install tftpd-hpa tftp-hpa -y  
cat << EOF |tee /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/bak/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure --create"
EOF
sudo chown tftp:tftp /bak/tftp
sudo systemctl restart tftpd-hpa
echo 'test' |sudo tee /bak/tftp/test.txt
tftp 127.0.0.1 -c get test.txt

3, 从nfs文件系统中挂载根文件系统

sd里有两个分区,一个rootfs一个boot, 将boot分区的所有文件拷到file路径下
sudo cp <rootfs_in_sd> /opt/nfs/ -R
sudo mkdir -p /opt/nfs/file
sudo cp <all-files-in-boot> /opt/nfs/file/
sudo vim etc/fstab
 10.1.1.160:/opt/nfs/file /boot nfs defaults,vers=4.1,proto=tcp 0 0

Reference

[1] https://ubuntu.com/core/docs/testing-with-qemu
[2] https://blog.csdn.net/quqi99/article/details/80425722
[3] https://cloud.tencent.com/developer/article/1806436

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1943532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电机线电流与转差率曲线理论推导

1.推导基础&#xff1a; #已知正转正拉电流近似为&#xff1a; curr_in_upward (im im*(rm(lml2)*2*np.pi*freq_in*1j)/(r2 l2*2*np.pi*freq_in*1j (1-s)/s*r2))#同工况同负载&#xff0c;正转反拉电流近似为&#xff1a; curr_in_downward (im im*(rm(lml2)*2*np.pi*f…

代码随想录第六十二天 | 739. 每日温度 , 496.下一个更大元素 I ,503.下一个更大元素II

先复习一下栈与队列。栈是先进后出&#xff0c;队列是先进先出。二者都属于STL容器&#xff08;版本是SGI STL&#xff09;中的容器适配器。底层容器完成其所有的工作&#xff0c;对外提供统一的接口&#xff0c;底层容器是可插拔的。如果没有指定底层实现的话&#xff0c;默认…

22-联合体与枚举

22-联合体与枚举 文章目录 22-联合体与枚举一、 联合体1.1 定义和特点1.2 语法1.3 示例1.4 联合体的使用1.5 联合体的使用&#xff1a;检查系统的字节序 二、 枚举2.1 定义和特点2.2 语法2.3 枚举常量的值可以手动修改 一、 联合体 1.1 定义和特点 联合体&#xff08;Union&a…

扩展PyTorch视觉模型

扩展PyTorch视觉模型 目录 扩展PyTorch视觉模型 一、概述 二、扩展基本视觉模型的原因 1. 性能提升 2. 功能扩展 3. 资源管理 三、扩展PyTorch视觉模型的方法 1.修改现有架构 2.应用模型集成技术 3.量化和压缩模型 四、高级技巧与实践 1.自定义训练循环 2.深度模型…

【SpringBoot】 jasypt配置文件密码加解密

目前我们对yml配置文件中的密码都是明文显示&#xff0c;显然这不安全&#xff0c;有的程序员离职了以后可能会做一些非法骚操作&#xff0c;所以我们最好要做一个加密&#xff0c;只能让领导架构师或者技术经理知道这个密码。所以这节课就需要来实现一下。 我们可以使用jasypt…

Gitops-万字保姆级教程-小白也可以轻松学会! (Part 2)

系列文章目录 本文章分为2个部分&#xff1a; Part 1主要涉及Gitlab、Gitlab-Runner、Git-Ci、Sonar-qube-CI阶段 Part 2主要涉及ArgoCD阶段 Gitops-万字保姆级教程-小白也可以轻松学会! (Part 1)-CSDN博客 Gitops-万字保姆级教程-小白也可以轻松学会! (Part 2) 文章目录 目…

【测试能力提升----fastapi框架项目】需求分析

1. FastAPI框架架构 2. 场景分析 2.1 系统分类 单一用户权限系统&#xff08;实用于CMS模型&#xff09;多用户多权限系统&#xff08;实用于多租商户类型&#xff09; 2.2 功能模块 用户登录模块用户管理模块角色权限管理模块基本设置模块日志模块 2.3 需求分析 用户登录…

[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-25 ADC模块FEP-DAQ9248采集显示波形方案

软件版本&#xff1a;Anlogic -TD5.9.1-DR1_ES1.1 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用安路(Anlogic)FPGA 实验平台&#xff1a;米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 ht…

24年广东“双百社工”招聘报名流程详细步骤

还在蹲公告的宝子们注意啦&#xff01;&#x1f525;24年广东双百社工公告陆续出啦&#xff01;⚠️中山双百社工招聘57人&#xff0c;佛山双百社工招聘135人&#xff0c;其他地区也快了&#xff01;⏰留给我们备考的时间只有一个月左右&#xff0c;想一次上岸的宝子抓紧备考&a…

《专题》numpy科学计算基础库——精细化讲解 <1>

一、什么是numpy库 Numpy(Numerical Python) 是科学计算基础库&#xff0c;提供大量科学计算 相关功能&#xff0c;比如数据统计&#xff0c;随机数生成等。其提供最核心类型为多维数组类型&#xff08;ndarray&#xff09;&#xff0c;支持大量的维度数组与矩阵运算&#xff0…

Java面试题(每日更新)

每日五道&#xff01;学会就去面试&#xff01; 本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单&#xff0c;下面一起进入主题吧。 目录 1.概述 2.Java 基础 2.1 JDK 和 JRE 有什么区别&#xff1f; 2.2 和 equals 的区别是什么&#xff1f; 2.3 两个对象的…

Linux ls命令详解

学习 Linux &#xff0c;本质上是学习在命令行下熟悉使用 Linux 的各类命令&#xff1b; 1. Linux 命令通用格式 命令格式&#xff1a;命令 【-选项】【参数】(个别命令不遵循该格式) 短线&#xff08;-&#xff09;是区分选项和参数的标志&#xff0c;选项用来调整命令的功能…

redis的学习(一):下载安装启动连接

简介 redis的下载&#xff0c;安装&#xff0c;启动&#xff0c;连接使用 nosql nosql&#xff0c;即非关系型数据库&#xff0c;和传统的关系型数据库的对比&#xff1a; sqlnosql数据结构结构化非结构化数据关联关联的非关联的查询方式sql查询非sql查询事务特性acidbase存…

前端系列-6 使用Vue3搭建前端工程与setup语法糖介绍

背景 本文介绍如何使用vue3脚手快速搭建一个前端项目&#xff0c;并对生成的项目结构进行简单介绍&#xff0c;然后介绍setup语法糖。前端入门的同学可基于本文内容快速搭建属于自己的项目。 vue官网资料显示, vue3开发的项目相对vue2, 具有打包后体积变小&#xff0c;极速启动…

【网络】socket和udp协议

socket 一、六个背景知识1、Q1&#xff1a;在进行网络通信时&#xff0c;是不是两台机器在进行通信&#xff1f;2、端口号3、端口号vs进程PID4、目的端口怎么跟客户端绑定的呢&#xff1f;也就是怎么通过目的端口去找到对应的进程的呢&#xff1f;5、我们的客户端&#xff0c;怎…

textblob文本处理、词性分析与情感分析

1 前言 textBlob 是一個简单易用的 NLP库&#xff0c;基于 NLTK 和 pattern库&#xff0c; 提供了文本处理和情感分析等功能。 安装 textblob0.18.0 nltk3.8.1测试环境&#xff1a;Python3.10.9 使用前&#xff0c;先运行下面代码先下载些文件 import nltk nltk.download…

机器学习 | 阿里云安全恶意程序检测

目录 一、数据探索1.1 数据说明1.2 训练集数据探索1.2.1 数据特征类型1.2.2 数据分布1.2.3 缺失值1.2.4 异常值1.2.5 标签分布探索 1.3 测试集探索1.3.1 数据信息1.3.2 缺失值1.3.3 数据分布1.3.4 异常值 1.4 数据集联合分析1.4.1 file_id 分析1.4.2 API 分析 二、特征工程与基…

「YD-221WA无线多合一变送器」让高效监测触手可及!

前言 近年来&#xff0c;伴随着“中国制造2025”、“互联网”在我国的全面推进&#xff0c;智能无线仪表设备在工业控制领域大规模应用。“设备上云”成为众多企业实现数字化转型升级的重要策略&#xff0c;为提升仪表设备管理软件的网络化、智能化、易维护性等方面提供了强有…

问题记录-SpringBoot 2.7.2 整合 Swagger 报错

详细报错如下 报错背景&#xff0c;我将springboot从2.3.3升级到了2.7.2&#xff0c;报了下面的错误&#xff1a; org.springframework.context.ApplicationContextException: Failed to start bean documentationPluginsBootstrapper; nested exception is java.lang.NullPo…

1.3、校验码

校验码 简介奇偶校验编码方法分类注意练习题 CRC循环冗余校验模2除法异或运算模2除法计算过程 循环冗余校验CRC过程练习题选择题 海明校验步骤练习题 简介 计算机在接收相应信息的时候&#xff0c;能够识别的都是一些电信号或者转化后的0 1二进制。那包括我们在网络上传递信息…