根文件系统

根文件系统

  • 1 介绍
    • 1.1 根文件系统介绍
    • 1.2 根文件系统目录
    • 1.3 常见的根文件系统
  • 2 Buildroot 根文件系统的构建
    • 2.1 介绍
    • 2.2 依赖文件
    • 2.3 交叉编译工具
    • 2.4 构建
      • 2.4.1 配置 Target options
      • 2.4.2 配置 Toolchain
      • 2.4.3 配置 System configuration
      • 2.4.4 配置 Filesystem images
      • 2.4.5 关闭 kernel 和 uboot 的编译
      • 2.4.6 编译 Buildroot
    • 2.5 搭建 NFS 网络系统
    • 2.6 设置 u-boot 环境参数
  • 3 busybox 根文件系统的构建
    • 3.1 busybox 简介
    • 3.2 下载源码
    • 3.3 安装依赖
    • 3.4 构建 busybox
    • 3.5 配置 busybox
      • 3.5.1 修改 Makefie
      • 3.5.2 配置 menuconfig
      • 3.5.3 编译
  • 4 Ubuntu Base 构建根文件系统
    • 4.1 什么是 Ubuntu Base
    • 4.2 下载Ubuntu Base
    • 4.3 安装一些依赖文件
    • 4.4 配置根文件系统
    • 4.4 启动开发板
  • 5 Debian 根文件系统的构建
    • 5.1 安装依赖
    • 5.2 配置config_file
    • 5.3 下载与构建
    • 5.4 调试与烧写
  • 参考

1 介绍

1.1 根文件系统介绍

根文件系统首先是内核启动时所 mount 的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。相当于 windows 下的 C 盘,保存了系统启动后的应用程序和系统配置。

1.2 根文件系统目录

目录描述
/根目录,所有其他目录和文件的起点
/bin存放系统命令的二进制文件,如lscpcatchgrpchmodcplsshkillmountumountmkdir
/sbin存放系统管理命令的二进制文件,通常由root使用,系统命令还可以存放在/usr/sbin/usr/local/sbin 目录下,/sbin 目录中存放的是基本的系统命令,它们用于启动系统和修复系统等,与 /bin 目录相似,在挂接其他文件系统之前就可以使用 /sbin,所以/sbin 目录必须和根文件系统在同一个分区中。/sbin 目录下常用的命令有:shutdown、reboot、fdisk、fsck、init 等,本地用户自己安装的系统命令放在 /usr/local/sbin 目录下。
/etc系统配置文件存放的目录,例如人员的账号密码文件、各种服务的其实文件等。
/dev包含设备文件,例如硬盘、打印机等
/lib存放系统库文件,包括动态链接库、内核模块等
/proc虚拟文件系统,包含进程和内核信息,它没有实际的存储设备,里面的目录,文件都是由内核临时生成的,用来表示系统的运行状态,也可以操作其中的文件控制系统。
/var存放经常变化的文件,如日志文件
/tmp存放临时文件的目录
/usr用户相关的应用程序和文件,/usr 目录的内容可以存在另一个分区中,在系统启动后再挂接到根文件系统中的 /usr 目录下。里面存放的是共享、只读的程序和数据,这表明 /usr 目录下的内容可以在多个主机间共享,这些主要也符合 FHS 标准的。/usr 中的文件应该是只读的,其他主机相关的,可变的文件应该保存在其他目录下,比如 /var
/usr/bin用户使用的系统命令的二进制文件
/usr/sbin用户使用的系统管理命令的二进制文件
/usr/local存放本地安装的软件和文件
/home用户的个人目录,存放用户文件
/opt存放可选包的目录
/mnt临时挂载文件系统的挂载点,用来临时挂载光盘、移动存储设备等。
/boot存放启动加载程序和内核文件
/rootroot用户的主目录
/sys另一个虚拟文件系统,包含系统设备信息
/srv存放服务相关数据的目录
/lost+found文件系统损坏时,存放恢复文件的目录

对于嵌入式 Linux 系统的根文件系统来说,一般可能没有上面所列出的那么复杂,比如嵌入式系统通常都不是针对多用户的,所以 /home 这个目录在一般嵌入式 Linux 中可能就很少用到,而 /boot 这个目录则取决于你所使用的 BootLoader 是否能够重新获得内核映象从你的根文件系统在内核启动之前。一般说来,只有 /bin,/dev,/etc,/lib,/proc,/var,/usr 这些需要的,而其他都是可选的。

1.3 常见的根文件系统

根文件系统本质都是一些文件和配置信息组成,之间的界限没有很明确的界定,以下大致列出一些根文件系统的特点。
在这里插入图片描述

2 Buildroot 根文件系统的构建

2.1 介绍

Buildroot 是 Linux 平台上一个开源的嵌入式 Linux 系统自动构建框架。整个 Buildroot 是由 Makefile 脚本和 Kconfig 配置文件构成的。你可以和编译 Linux 内核一样,通过 buildroot 配置,menuconfig 修改,编译出一个完整的可以直接烧写到机器上运行的 Linux 系统软件。

2.2 依赖文件

sudo apt-get install zlib1g-dev unzip gcc g++ aptitude lib32stdc++6-4.8-dbg make build-essential libncurses5 libncurses5-dev u-boot-tools traceroute

2.3 交叉编译工具

可以到官网下载 https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/
arm-linux-gnueabihf/ 也可以使用我们提供的工具包 交叉编译器下载找一个自己熟悉的位置放置,
我放在 /home/lhf 文件夹下解压 tar -vxf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar

进入工具链文件夹 gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf 获取路径 pwd 我的路径为 /home/lhf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf 该路径需要记录一下,等会设置工具链的时候需要使用。

cd gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf
pwd
/home/lhf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf

2.4 构建

我们可以到官网地址下:https://buildroot.org/ 打开后如图
选择 DOWNLOAD
在这里插入图片描述

我们选择长期支持版本 (LTS),两个压缩格式,选择其中一个即。

也可使用我们提供的源码包 Buildroot 下载构建根文件系统

tar -vxf buildroot-2021.02.3.tar.gz
cd buildroot-2021.02.3
make menuconfig

2.4.1 配置 Target options

Target options-> Target Architecture = ARM (little endian)-> Target Binary Format = ELF-> Target Architecture Variant = cortex-A7-> Target ABI = EABIhf-> Floating point strategy = NEON/VFPv4-> ARM instruction set = ARM

2.4.2 配置 Toolchain

Toolchain-> Toolchain type = External toolchain-> Toolchain = Custom toolchain //选择用户的交叉编译器-> Toolchain origin = Pre-installed toolchain-> Toolchain path =/home/lhf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf //这里填入我们上面获得的交叉编译器路径-> Toolchain prefix = arm-linux-gnueabihf //前缀-> External toolchain gcc version = 7.x-> External toolchain kernel headers series = 4.10.x-> External toolchain C library = glibc/eglibc-> [*] Toolchain has SSP support? (NEW) //选中-> [*] Toolchain has RPC support? (NEW) //选中-> [*] Toolchain has C++ support? //选中-> [*] Enable MMU support (NEW) //选中

2.4.3 配置 System configuration

System configuration-> System hostname = Embedfire_imx6ull //平台名字-> System banner = Welcome to embedfire i.mx6ull //欢迎语-> Init system = BusyBox //使用 busybox-> /dev management = Dynamic using devtmpfs + mdev //使用 mdev-> [*] Enable root login with password (NEW) //使能登录密码-> Root password = root //登录密码为 root

2.4.4 配置 Filesystem images

这个选项是配置将编译生成什么格式的根文件系统,可以做如下配置

-> Filesystem images-> [*] ext2/3/4 root filesystem //如果是 EMMC 或 SD 卡的话就用 ext3/ext4-> ext2/3/4 variant = ext4 //选择 ext4 格式
-> [*] ubi image containing an ubifs root filesystem //如果使用 NAND 的话就用 ubifs

对于本教程,我们需要配置也可以。我们是使用 nfs 挂载网络根文件系统

2.4.5 关闭 kernel 和 uboot 的编译

Buildroot 不仅能构建根文件系统,还可以编译 kernel 和 uboot,但是这些源码是从官网下载的,很可能是没包含各芯片厂商的驱动文件。所以我们关闭 kernel 和 uboot 编译即可,kernel 和 uboot 的教程可参考。

-> Kernel
-> [ ] Linux Kernel //取消 Linux Kernel 选项!
-> Bootloaders
-> [ ] U-Boot //取消 U-Boot 选项!

2.4.6 编译 Buildroot

sudo make

需要注意的是 buildroot 下载的源码网速会比较慢,我们可以自己手动下载再放到 buildroot 源码
目录下的 dl 文件夹中编译完成后文件在 ./output/images 文件夹中 rootfs.tar 为本教程需要的文件。

2.5 搭建 NFS 网络系统

sudo apt-get updat# 安装 NFS 服务器端 sudo apt-get install nfs-kernel-server
sudo apt-get install nfs-kernel-server# 创建 NFS 共享目录 mkidr ~/nfs
mkidr ~/nfs# 编辑指定目录 sudo vim /etc/exports
sudo vim /etc/exports# 添加入下代码 /home/你的用户名/nfs *(rw,sync,no_root_squash)
/home/你的用户名/nfs *(rw,sync,no_root_squash)# 给目录添加权限 sudo chmod -R 777 ~/nfs && sudo chown root:root ~/nfs/ -R
sudo chmod -R 777 ~/nfs && sudo chown root:root ~/nfs/ -R# 启动 NFS 服务 /etc/init.d/nfs-kernel-server restart
/etc/init.d/nfs-kernel-server restart# 我们把刚得到的 rootfs.tar 解压到 nfs 目录下
cp /home/lhf/buildroot-2021.02.3/output/images/rootfs.tar /home/lhf/nfs
tar -vxf /home/lhf/nfs/rootfs.tar -C /home/lhf/nfs

先看一下我们 NFS 主机的地址 ifconfig 我这里地址为 192.168.0.139

再看一下网关地址 traceroute baidu.com 第一条地址一般为网关地址, 我这里为 192.168.0.1

我们在局域网中找一个没有用到的地址,我这里为 192.168.0.142 要根据你们的网段来更
改。

2.6 设置 u-boot 环境参数

上电快速按回车进入 u-boot

setenv gatewayip '192.168.0.1'
setenv netmask '255.255.255.0'
setenv ipaddr '192.168.0.142'
setenv serverip '192.168.0.139'
setenv args_mmc_old 'setenv bootargs console=tty1 console=ttymxc0,115200,root=/dev/nfs nfsroot=192.168.0.139:/home/lhf/nfs rw ip=192.168.0.142:192.
,168.0.139:192.168.0.254:255.255.255.0::eth0:off'
saveenv

我们试一下开发板能否 ping 通到主机 ping 192.168.0.139

发现可以 ping 的通,我们试试能否自动挂载上我们的根文件系统用命令 reset 重启
在这里插入图片描述

这样就成功挂载上我们的根文件系统了。账号密码都为 root
我们发现我们的命令行在任何目录下都是 # 修改 /etc/profile 文件来让其显示具体路径

vi /etc/profile# 导出PATH环境变量,包含基本的系统命令路径
export PATH="/bin:/sbin:/usr/bin:/usr/sbin"PS1='\u@\h:\w$:'
export PS1# 设置默认的文本编辑器为vi
export EDITOR='/bin/vi'# 注释掉的行,不会执行
# Source configuration files from /etc/profile.d# 以下是一个for循环,用于加载/etc/profile.d目录下的所有.sh脚本文件
for i in /etc/profile.d/*.sh ; doif [ -r "$i" ]; then. "$i"fi
done# 取消设置的变量
unset i

然后重启即可, reboot

3 busybox 根文件系统的构建

3.1 busybox 简介

BusyBox 是一个集成了三百多个最常用 Linux 命令和工具的软件。BusyBox 包含了一些简单的工具,例如 ls、cat 和 echo 等等,还包含了一些更大、更复杂的工具,例 grep、find、mount 以及 telnet。

有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说 BusyBox 就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Linux 系统的自带的 shell。

3.2 下载源码

https://busybox.net/ 可以到官网下载

下载当前最新版本 busybox-1.33.1.tar.bz2 也可以使用我们提供的文件
busybox-1.33.1.tar.bz2

3.3 安装依赖

sudo apt-get install zlib1g-dev unzip gcc g++ aptitude lib32stdc++6-4.8-dbg make build-essential libncurses5 libncurses5-dev u-boot-tools traceroute sudo gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf -y

3.4 构建 busybox

将 busybox-1.33.1.tar.bz2 放置到一个你熟悉的目录,我这里选择为 /home/lhf 解压 busybox1.33.1.tar.bz2

tar -vxf busybox-1.33.1.tar.bz2
cd busybox-1.33.1
make menuconfig

3.5 配置 busybox

3.5.1 修改 Makefie

在第 164 行,将 CROSS_COMPILE ?= 修改为 CROSS_COMPILE :=arm-linux-gnueabihf- 注意:arm-linux-gnueabihf- 为你交叉编译器前缀,若编译其他 soc 请使用官方提供的交叉编译工具

#CROSS_COMPILE ?=
CROSS_COMPILE :=arm-linux-gnueabihf

3.5.2 配置 menuconfig

执行 make menuconfig

make menuconfig
Settings-> Build static binary (no shared libs) //选中静态编译,便于调用的文件不会因为库文件的更改和报错
Linux System Utilities->mdev //支持 mdev

3.5.3 编译

make
make install

默认生成在 busybox 目录下的 _install 文件夹中我们进入到 _install 目录进行一些修改

cd _install
mkdir dev etc lib var proc tmp home root mnt sys
cd ./dev
sudo mknod console c 5 1
sudo mknod null c 1 3
cd ../etc
vi inittab在 inittab 中添加一句console::askfirst:-/bin/sh:wq 保存退出

将 _install 目录下的文件拷贝到我们的 nfs 中进行测试注意: ./目录是 _install 目录 /home/lhf/nfs 是你的 nfs 网络文件系统根目录,若未搭建 nfs 网络文件系统,请参考 6.5 小节 搭建 NFS 网络系统

cd ../ # 从 etc 目录回到_install 目录
cp -rf ./* /home/lhf/nfs

重启开发板等开发板启动成功后我们进入了我们编译好的 busybox 根文件系统我们看看根文件系统整体大小为 du -sh

仅占 1.5M,虽然占用空间是小了,但是功能也非常少,若要安装某项功能还需自行交叉编译到文件系统。仅适合对存储比较敏感且只需完成某一项功能的系统使用。如果想使用较全的功能对存储不敏感的用户可以使用 debain 根文件系统。

4 Ubuntu Base 构建根文件系统

4.1 什么是 Ubuntu Base

Ubuntu 针对不同的 CPU 架构提供相应的 ubuntu base 根文件系统,目前提供的架构有 amd64、arm64、armhf、i386、s390x、ppc64.

4.2 下载Ubuntu Base

我们可到官网下载自己需要的版本 http://cdimage.ubuntu.com/ubuntu-base/releases/ 目前最新版本到 21.04。

也可以使用我们提供的 20.04 版本 ubuntu-base-20.04.1-base-armhf.tar.gz
不使用最新版本是因为国内对于 ubuntu-arm 的镜像站比较少,目前阿里云所支持的最新版本ubuntu 镜像为 20.04,等支持 21.04 版本后大家可以构建 ubuntu 21.04,我这里就以 20.04 版本举例说明构建方法。

4.3 安装一些依赖文件

sudo apt-get install tar qemu-user-static vim -y

4.4 配置根文件系统

我们创建一个文件夹 ubuntu_rootfs 存放我们的根文件系统

mkdir ubuntu_rootfs && cd ubuntu_rootfs
tar -vxf ubuntu-base-20.04.1-base-armhf.tar.gz
sudo cp /usr/bin/qemu-arm-static ./usr/bin/
sudo cp ./etc/apt/sources.list ./etc/apt/sources.list.back
sudo echo "nameserver 8.8.8.8" > ./etc/resolv.conf
sudo vim ./etc/apt/sources.list

阿里云镜像站 我们需要注意的是,这个站点默认提供的是 amd64 的 ubuntu 镜像,所以我们需要在 ubuntu 后面加上-ports, 如下所示如果是 ubuntu 20.04 版本则可以将如下链接填入 ./etc/apt/sources.list 中

deb http://mirrors.aliyun.com/ubuntu-ports/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu-ports/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu-ports/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu-ports/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu-ports/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu-ports/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu-ports/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu-ports/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu-ports/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu-ports/ focal-backports main restricted universe multiverse

保存退出

sudo chroot ./
apt install vim sudo kmod net-tools ethtool ifupdown language-pack-en-base rsyslog htop iputils-ping -y //添加一些需要的应用
passwd root //设置 root 的密码
exit

现在我们可以把该目录放置到我们的 NFS 中试试能否启动,/home/lhf/nfs 是你的 nfs 网络文件系统根目录,若未搭建 nfs 网络文件系统,请参考参考 6.5 小节 搭建 NFS 网络系统

sudo cp -rf ./* /home/lhf/nfs

4.4 启动开发板

su root

成功启动了我们的 ubuntu 根文件系统,往后可以通过 apt 进行应用的安装。

5 Debian 根文件系统的构建

我们这里使用目前 Debian 社区较为推荐的 Multistrap 构建 Debian 根文件系统,与传统的 debootstrap 不同,multistrap 在包的选择上更具灵活性 Multistrap 的详细信息可以看 https://manpages.debian.org/bullseye/multistrap/multistrap.1.en.html

5.1 安装依赖

sudo apt-get install tar qemu-user-static vim multistrap -y

5.2 配置config_file

我们创建一个文件 config_file 存放我们需要安装的包信息

touch ./config_file
mkdir ./rootfsvim ./config_file填入如下内容[General]#directory=target-rootfscleanup=truenoauth=trueunpack=truedebootstrap=Debian Net Utils Ebfaptsources=Debiannoauth=true # GPG error[Debian]packages=apt kmod lsof#source=https://mirrors.sjtug.sjtu.edu.cn/debian/source=https://mirrors.tuna.tsinghua.edu.cn/debian/keyring=debian-archive-keyringsuite=bustercomponents=main contrib non-free[Net]# Basic packages to enable the networkingpackages=netbase net-tools ethtool udev iproute2 iputils-ping ifupdown isc-dhcp-client ssh#source=https://mirrors.sjtug.sjtu.edu.cn/debian/source=https://mirrors.tuna.tsinghua.edu.cn/debian/[Utils]# General purpose utilitiespackages=locales vim adduser less wget dialog usbutils#source=https://mirrors.sjtug.sjtu.edu.cn/debian/source=https://mirrors.tuna.tsinghua.edu.cn/debian/[Lhf]packages=python3 mate-desktop-environmentsource=http://mirrors.bfsu.edu.cn/debiansuite=bustercomponents=main contrib non-free[Ebf]packages= ifupdown rsyslog htop iputils-pingsource=http://mirrors.bfsu.edu.cn/debiansuite=bustercomponents=main

其中之需要将需要的安装包添加到 [Ebf] 中的 packages 即可

5.3 下载与构建

然后执行 multistrap -a armhf -d ./rootfs/ -f ./config_file

multistrap -a armhf -d ./rootfs/ -f ./config_file

等待配置完成后执行如下代码配置密码

cd ./rootfs
sudo cp /usr/bin/qemu-arm-static ./usr/bin/
sudo echo "nameserver 8.8.8.8"  > ./etc/resolv.conf
sudo chroot ./
passwd root //设置root的密码
exit

5.4 调试与烧写

现在我们可以把该目录放置到我们的NFS中试试能否启动,/home/lhf/nfs是你的nfs网络文件系统根目录,若未搭建nfs网络文件系统,请参考 Buildroot根文件系统的构建章节的第5小节 搭建NFS网络系统

如果要烧写到开发板中,参考 根文件系统的几种烧写方法

参考

1、野火–构建系统

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

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

相关文章

超详细的Stable Diffusion WebUI 安装!

前言 安装方式: 使用发行包在带有 NVidia-GPU 的 Windows 10/11 上安装 sd.webui.zip从v1.0.0-pre下载并解压其内容。 跑步update.bat。 跑步run.bat。 Windows 上自动安装 安装Python 3.10.6(较新版本的Python不支持torch)&#xff0…

go 学习 之 HTTP微服务示例

1. 背景 学习ing 2. 创建文件:server.go go package mainimport ("github.com/gogf/gf/contrib/registry/file/v2""github.com/gogf/gf/v2/frame/g""github.com/gogf/gf/v2/net/ghttp""github.com/gogf/gf/v2/net/gsvc"&…

2.4G无线通信芯片数据手册解读:Ci24R1南京中科微

今天,我非常荣幸地向您介绍这款引领行业潮流的2.4G射频芯片:Ci24R1。这款芯片,不仅是我们技术的结晶,更是未来无线通信的璀璨明星。 首先,让我们来谈谈Ci24R1的“速度”。2.4G射频芯片,凭借其卓越的数据传输…

“论云上自动化运维及其应用”写作框架,软考高级,系统架构设计师

论文真题 云上自动化运维是传统IT运维和DevOps的延伸,通过云原生架构实现运维的再进化。云上自动化运维可以有效帮助企业降低IT运维成本,提升系统的灵活度,以及系统的交付速度,增强系统的可靠性,构建更加安全、可信、…

虹科技术丨Linux环境再升级:PLIN驱动程序正式发布

来源:虹科技术丨Linux环境再升级:PLIN驱动程序正式发布 原文链接:https://mp.weixin.qq.com/s/N4zmkYXTPr7xm-h2s7QiLw 欢迎关注虹科,为您提供最新资讯! #PLIN #LIN #LIN接口 导读 Linux驱动程序领域再添新成员&am…

湖北大学2024年成人高考函授报名专升本汉语言文学专业介绍

湖北大学,这所历史底蕴深厚的学府,自创办以来,始终致力于为社会各界人士提供高质量的成人高等继续教育。而今,为了满足广大成年人对于知识更新的渴求,学校特别开放了专升本汉语言文学专业的报名通道,为那些…

SCI二区复现|体育场观众优化算法(SSO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年,M Nemati受到体育场观众的行为对比赛中球员行为的影响启发,提出了体育场观众优化算法(Stadium Spectators Optimizer, SSO)。 2.算法…

unity使用XR插件开发SteamVR项目,异常问题解决方法

一、unity使用XR插件开发SteamVR项目,运行后相机高度异常问题解决方法如下操作 (一)、开发环境 1、Unity 2021.3.15f 2、XR Interaction Toolkit Version 2.5.2 (com.unity.xr.interaction.toolkit) 3、OpenXR Pl…

Nature子刊 | 基于遥感和U-Net绘制6亿棵树木,并发现过去十年印度农田树木严重减少

题目:Severe decline in large farmland trees in India over the past decade 期刊:Nature Sustainability 论文:https://www.nature.com/articles/s41893-024-01356-0 结果数据: https://rs-cph.projects.earthengine.app/view/tree https://zenodo.org/records/10978…

Arduino - Keypad 键盘

Arduino - Keypad Arduino - Keypad The keypad is widely used in many devices such as door lock, ATM, calculator… 键盘广泛应用于门锁、ATM、计算器等多种设备中。 In this tutorial, we will learn: 在本教程中,我们将学习: How to use key…

VUE大屏的开发过程(纯前端)

写在前面,博主是个在北京打拼的码农,工作多年做过各类项目,最近心血来潮在这儿写点东西,欢迎大家多多指教。 对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论和学习的问题可联系我:1…

tauri使用github action实现跨平台编译并解决编译错误等问题

正常编译为跨平台结果就像上面的,有mac/windows/linux的安装程序,直接下载就可以安装使用,我的这个livebox桌面端仓库地址:GitHub - Sjj1024/LiveBox: livebox,里面有编译文件可以参考。今天主要讲一下遇到的问题。 官…

一投就中,收稿范围大,1个月内录用,国人发文最多,无风险预警

别人费心费力投个一年都不一定有结果,您直接坐上”直升飞机”,1个月录用。下面老毕分享1本超快录用EI期刊,工程电气方向的学者抓紧投稿。 抢占版面,下方【扫一扫】直接安排,1个月内录用🌈 Journal of Elect…

快递大件多少算超重物品?

在快递大件物品时,我们经常听到“超重”这个词,但究竟多重才算超重呢?今天,就让我们来探讨一下快递大件的超重标准,以及如何更经济地快递这些超重物品。 1. 祺祺寄快递: “祺祺寄快递”是一个便捷的快递服…

在开发板上抓包的方法

1.tcpdump tcpdump -i lo -s0 -w /user/lo.pcap tcpdump: 启动 tcpdump 工具,用于捕获网络数据包。-i lo: 指定监听的网络接口为 lo,这里的 lo 是本地回环接口(loopback interface),用于本机内部通信。-s0: 设置抓取…

绿盟又行了,漏管市场占有率第一

漏洞管理平台 吉祥学安全知识星球🔗除了包含技术干货:Java代码审计、web安全、应急响应等,还包含了安全中常见的售前护网案例、售前方案、ppt等,同时也有面向学生的网络安全面试、护网面试等。 今天看到不少朋友圈在转发&#xff…

使用Python实现深度学习模型通常涉及以下几个步骤

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…

亚马逊测评干货分享:跨境卖家店铺测评技巧

测评在亚马逊、etsy、temu、速卖通、vinted、ebay、allegro、Jumia、Fruugo、敦煌、shopee、ozon、阿里国际站、沃尔玛、newegg等跨境平台中扮起着重要的方式,卖家们了解到测评可以快速增加产品的销量、评论数量,提升排名,从而打造爆款产品。…

Python基于逻辑回归分类模型、决策树分类模型、随机森林分类模型和XGBoost分类模型实现乳腺癌分类预测项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 在当今医疗健康领域,乳腺癌作为威胁女性健康的主要恶性肿瘤之一,其早期诊断与精…

Ollama qwen2:7b

简介 一个简明易用的本地大模型运行框架,Ollama官网:Ollama ollama命令 ollama有类似docker的命令。下面是一些模型(large language models)的操作命令: ollama list:显示模型列表ollama show:显示模型的信息ollama pull&#…