首页 > 系统相关 >linux启动

linux启动

时间:2024-05-18 10:10:03浏览次数:26  
标签:启动 q123 boot 192.168 nfs linux home tftp

我们在下面会在u-boot下面所有tftp服务从服务器下载linux内核和根文件,并且使用NFS挂载内核的根文件系统,所有下面需要做以下准备:

准备阶段

linux根文件编译

buildroot编译根文件流程:https://www.cnblogs.com/Hlc-/p/17647373.html

u-boot编译

u-boot编译和启动流程:https://www.cnblogs.com/Hlc-/p/17697588.html#5261724

u-boot网络移植流程:https://www.cnblogs.com/Hlc-/p/18192177

u-boot LCD移植流程(这个步骤不是必要的):https://www.cnblogs.com/Hlc-/p/18192242

linux编译构建

linux内核构建流程:https://www.cnblogs.com/Hlc-/p/18192576

nfs文件服务搭建

nfs服务器搭建流程:https://www.cnblogs.com/Hlc-/p/18190402

tftp服务器搭建

tftp服务器构建流程:https://www.cnblogs.com/Hlc-/p/18190380

准备启动菜单

linux的启动就和煮菜一样,上面的准备工作是准备工具,下面我们将准备启动的调料。

复制根文件到上面nfs服务器的目录下面

buildroot编译的根文件系统位于buildroot目录下面的output/images
根文件系统位于的位置

我的上面的nfs的目录为/home/q123/nfs/rootfs目录(具体看上面的nfs搭建相关的流程)

把root.tar复制到/home/q123/nfs/rootfs目录

cp root.tar /home/q123/nfs/rootfs
#进入/home/q123/nfs/rootfs目录
cd /home/q123/nfs/rootfs
#解压.tar文件
tar -xvf root.tar

复制linux内核和设备树到tftp服务的目录下面

我的TFTP服务的目录位于 /home/q123/tftp (具体看上面的TFTP服务搭建)
在编译的内核arch/arm/boot目录下面有以下文件
boot目录

zImage:Linux内核文件
dts:这个目录下面有我们需要的设备树文件

arch/arm/boot/dts目录下面有很多设备树文件,.dts后缀结尾的是我们编写的设备树描述代码,.dtb结尾的编译器用.dts编译生成的二进制代码,所以我们需要的是.dtb文件,我们选择选择的是imx6ull-14x14-evk.dtb
dts目录

把zImage和imx6ull-14x14-evk.dtb文件复制到tftp服务的目录下面

cp arch/arm/boot/zImage /home/q123/tftp/
cp arch/arm/boot/dts/imx6ull-14x14-evk.dtb /home/q123/tftp/

开始启动linux

在开始启动Linux之前我已经默认你已经准备好了u-boot,已经做好了u-boot的网络修改,并且已经能在板子上面启动u-boot。

获取服务器IP

虚拟机的ubuntu需要设置网络适配器为桥接模式,使虚拟机与板子能在同一个网段,并且尽量设置自己的IP为静态IP(静态IP设置方法:https://www.cnblogs.com/Hlc-/p/17629806.html);

虚拟机的配置

在自己的ubuntu上面执行以下代码

ifconfig

输出的信息为:

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.227  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::250:56ff:fe3f:9efd  prefixlen 64  scopeid 0x20<link>
        ether 00:50:56:3f:9e:fd  txqueuelen 1000  (Ethernet)
        RX packets 600427  bytes 255935146 (255.9 MB)
        RX errors 34  dropped 21196  overruns 0  frame 0
        TX packets 543879  bytes 62517248 (62.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 19  base 0x2000

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 19069  bytes 15158348 (15.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 19069  bytes 15158348 (15.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

zt6ntmzn2q: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 2800
        inet 172.22.183.227  netmask 255.255.0.0  broadcast 172.22.255.255
        inet6 fe80::8b8:76ff:fe69:b41f  prefixlen 64  scopeid 0x20<link>
        ether 0a:b8:76:69:b4:1f  txqueuelen 1000  (Ethernet)
        RX packets 1408  bytes 152540 (152.5 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 382  bytes 44839 (44.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

我ubuntu服务器的IP为192.168.2.227。

设置u-boot的网络信息

setenv ipaddr 192.168.2.230
setenv ethaddr 00:04:9f:04:d2:35
setenv eth1addr 00:04:9f:04:d2:36
setenv gatewayip 192.168.2.1
setenv netmask 255.255.255.0
setenv serverip 192.168.2.227
saveenv

参数含义:
ipaddr:为板子的IP要保证没有被占用。
ethaddr和eth1addr分别是两个网口的MAC地址。
gatewayip:网关地址
netmask:遮掩码
serverip:服务器IP也就是我们上面获取的ubuntu的IP

执行结果

u-boot的网络信息

从TFTP下载内核和根文件

tftp 80800000 zImage 
tftp 83000000 imx6ull-14x14-evk.dtb

执行结果

下载内核和根文件结果

设置启动参数并且启动内核

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.2.227:/home/q123/nfs/rootfs,nfsvers=3,proto=tcp rw ip=192.168.2.230:192.168.2.227:192.168.2.1:255.255.255.0::eth1:off'
saveenv

参数含义:
console=ttymxc0,115200:使用ttymxc0串口设备输出信息,波特率为115200
root=/dev/nfs:根文件挂载nfs文件

nfsroot=192.168.2.227:/home/q123/nfs/rootfs,nfsvers=3,proto=tcp:这个是nfs文件的相关信息。

  1. 192.168.2.227:/home/q123/nfs/rootfs是根文件的服务器地址和目录
  2. nfsvers=3表示使用的NFS版本为V3
  3. proto=tcp表示接口使用TCP。

rw:表示根文件可读可写

ip=192.168.2.230:192.168.2.227:192.168.2.1:255.255.255.0::eth0:off为启动IP设置。
ip=<板子IP>:<服务器IP>:<网关地址>:<遮掩码>::<使用的网口设备(eth0是网口2)>:off

启动设备

bootz 80800000 - 83000000

80800000是上面使用tftp下载内核到的内存地址
83000000是上面使用tftp下载设备树到内存的地址

标签:启动,q123,boot,192.168,nfs,linux,home,tftp
From: https://www.cnblogs.com/Hlc-/p/18199066

相关文章

  • Dism壳 (做系统的启动盘 多系统版本install.wim合成 界面化)
    做系统优盘的时候不断的dism来dism去有些烦了做了个小工具可以代替bat了...没做异常处理开始预览镜像把素材拖进去开始制作流程点击空动作后会出现创建的动作类型其中合成就是把多个系统搓在一起用的上面的索引代表的正是双击看到的那些信息的索引输入对应索引然后空......
  • Linux系列---【cannot open directory .: Input/output error】
    1.问题执行cd/tmp,rm-rf/tmp,ll/tmp时,发现报错:cannotopendirectory.:Input/outputerror。2.分析这个一般是因为磁盘损坏导致的,我的是因为我对xfs类型的lv_tmp未卸载,就强制缩容,导致了缩容失败,从而也造成了磁盘不可用。3.解决方案注意:这个方案会丢失数据#-l选项......
  • Linux 提权-Sudo_2
    本文通过Google翻译SudoPart-2–LinuxPrivelegeEscalation-Juggernaut-Sec这篇文章所产生,本人仅是对机器翻译中部分表达不准确的字词进行了校正及个别注释补充。导航0前言1第1部分快速回顾2利用Sudo命令–滥用预期功能2.1使用Hashcat破解Shadow......
  • grafana监控Linux资源,导入8919,无数据解决办法
    这是由于grafana版本过低,和新的8919监控模板不兼容导致的。如下图所示 解决办法方法1、替换grafana为更高版本;方法2、将8919对应的.json文件下载下来,打开后将table-old替换为table,然后再导入  问题得到解决 ......
  • Linux 提权-Sudo_1
    本文通过Google翻译SudoPart-1–LinuxPrivilegeEscalation-Juggernaut-Sec这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。导航1什么是Sudo以及它是如何工作?1.1Sudo二进制、权限和组解释2手动寻找Sudo权限2.1......
  • 【Linux】《VMware17搭建Ubuntu.22.04-Rust开发环境》
    下载VMware17安装包下载链接:创建虚拟机之后都默认就可以了。进入系统设置登录账号和密码以及修改下语言,剩余都默认即可。设置中文界面设置中文输入法接下来开始设置输入法切换快捷键设置使用Ctrl+Alt+T打开终端,输入ibus-setup重启,看一下是......
  • 渗透测试快速启动指南-全-
    渗透测试快速启动指南(全)原文:QuickStartGuidetoPenetrationTesting协议:CCBY-NC-SA4.0一、NMAP简介漏洞评估和渗透测试变得越来越重要,尤其是在最近几年。组织通常拥有存储敏感数据的复杂资产网络。这些资产暴露在来自组织内部和外部的潜在威胁之下。为了全面了解组织......
  • linux 按照docker容器
    安装前提条件Docker要求CentOS系统的内核版本高于3.10,首先验证你的服务器是否支持Docker!通过uname-r命令查看当前的内核版本`[root@localhosthome]#uname-r3.10.0-1160.el7.x86_64`可以看到我的服务器是4.18.0,是支持Docker的。第一步:检查并清除系统残余项,并安......
  • ArchLinux/Manjaro升级到6.9内核后的问题解决
    1.KDEWallet系统配置---个性化---账户详细信息---kde钱包1.需要启用kde钱包子系统,否则无法正常使用记录的账号密码信息2.右下角,调用钱包管理器,修改密码,设置为空密码至此,开机需要输密码连接kdewallet的应用不需要输入即可密码连接2.更新archcn-keyring报GPG错误解决:sudopa......
  • Linux平台移植音频芯片实战记录
    本文详细记录在NXP I.MX6ULL+Linux平台下进行WM8960音频芯片移植的过程,其他平台操作方法类似,希望为大家提供帮助。1. 环境准备平台: HD6ULL-IOT开发板要求: 外接一个WM8960模块。要求能正常播放音频文件。2. 原理图及相关资料将模块飞线到底板J17上,接法如下;且模块1脚 ......