system:initrd和nash

Linux Swap 子系统:架构、内存管理与虚拟化 Swap Linux Swap机制通过将不活跃内存页移至磁盘或压缩内存,扩展系统有效内存容量,缓解内存压力。传统架构中,逻辑Swap槽与物理存储绑定,导致资源浪费,尤其在使用Zswap等压缩技术时。为此,Vswap与Xswap提出虚拟化方案:前者以XArray实现灵活映射,支持多后端迁移;后者采用稀疏映射,简化管理但容量固定。二者在架构设计、资源记账与动态扩展上各有权衡,反映了内核开发中对性能、可维护性与灵活性的深层考量。 阅读详情

1、什么是initrd

  • initrd 的英文含义是 boot loader initialized RAM disk,即由引导程序初始化的RAM磁盘。initrd是在实际根文件系统可用之前挂载到系统中的一个初始根文件系统。initrd与内核绑定在一起, 并作为内核引导过程的一部分进行加载。内核然后会将这个initrd文件作为其阶段引导过程的一部分来加载模块,这样才能在以后的引导过程中使用真正的文 件系统,并挂载实际的根文件系统。根文件系统可以存储在包括IDE、SCSI、USB在内的多种介质上,如果将这些设备的驱动都编译进内核,可以想象内核 会多么庞大、臃肿。所以可以把initrd看做是在启动过程中连接内核与根文件系统的一个桥梁。

initrd 中包含了实现这个目标所需要的目录和可执行程序的最小集合,例如将内核模块加载到内核中所使用的 insmod工具。以及一些mount、mknod等命令,这些会在后面的nash部分讲到。Initrd 的用途主要有以下四种:*

1. linux 发行版的必备部件 linux 发行版必须适应各种不同的硬件架构,将所有的驱动编译进内核是不现实的,initrd 技术是解决该问题的关键技术。Linux 发行版在内核中只编译了基本的硬件驱动,在安装过程中通过检测系统硬件,生成包含安装系统硬件驱动的 initrd,无非是一种即可行又灵活的解决方案。

2. livecd 的必备部件 同 linux 发行版相比,livecd 可能会面对更加复杂的硬件环境,所以也必须使用 initrd。

3. 制作 Linux usb 启动盘必须使用 initrd usb 设备是启动比较慢的设备,从驱动加载到设备真正可用大概需要几秒钟时间。如果将 usb 驱动编译进内核,内核通常不能成功访问 usb 设备中的文件系统。因为在内核访问 usb 设备时, usb 设备通常没有初始化完毕。所以常规的做法是,在 initrd 中加载 usb 驱动,然后休眠几秒中,等待 usb设备初始化完毕后再挂载 usb 设备中的文件系统。

4. 嵌入式开发中常用做永久根文件系统。

5. 在 linuxrc 脚本中可以很方便地启用个性化 bootsplash。

2、剖析initrd

在linux2.4内核initrd的文件格式是文件系统镜像文件,即使用loop设备来构建的。loop设备是一个设备驱动程序,利用它可以将文件作为 一个块设备挂载到系统中,然后就可以查看这个文件系统中的内容了。到了linux2.6 内核的 initrd 的文件格式即支持原来的文件系统镜像文件,也支持 cpio 格式,而cpio就是用来取代原来的文件系统镜像文件格式。通过如下步骤可以查看到initrd文件里面的内容:

# mv initrd-2.6.18-8.2.img initrd-2.6.18-8.2.img.gz
# gunzip initrd-2.6.18-8.2.img.gz
# cpio -id < initrd-2.6.18-8.2.img
# ls -l
drwx------ 2 root root 4096 08-31 11:13 bin
drwx------ 3 root root 4096 08-31 11:13 dev
drwx------ 2 root root 4096 08-31 11:13 etc
-rwx------ 1 root root 1833 08-31 11:13 init
drwx------ 2 root root 4096 08-31 11:13 lib
drwx------ 2 root root 4096 08-31 11:13 proc
lrwxrwxrwx 1 root root 3 08-31 11:13 sbin -> bin
drwx------ 2 root root 4096 08-31 11:13 sys
drwx------ 2 root root 4096 08-31 11:13 sysroot

从上面的结果可以看出,initrd里面是一个很小的根文件系统,在 /bin 目录中有一组很少但却非常必要的应用程序,包括 nash、insmod等。init则是其引导的核心文件,在cpio格式的initrd里,该文件的名称只能是init。而在原来镜像文件格式的 initrd其核心文件可以是init和linuxrc。init通常是一个脚本文件,负责加载内核访问根文件系统必须的驱动,以及加载根文件系统。关于 nash的解释是,nash (not a shell)它不是一个SHELL,是一个设计的尽可能小的简单命令解释器。主要用于初始化RAM DISK时候解释里面的linuxrc或者init这些简单的脚本。nash目前常用的构建命令如下:

echo 

将字符串输出到标准输出,只是功能上没有系统里面echo那么多。

find

显示指定路径下所匹配名称的文件,即只支持linux系统里find命令中的-name参数。

losetup  

将文件帮定到回环设备/dev/loopdev上

mkdevices

指定创建的块设备文件存放路径,如:mkdevices /dev

mknod 

创建设备文件

mkrootdev 

创建根文件系统的设备节点,根据内核传递参数当中的“root=”来创建对应该设备的节点,节点的名称是/dev/root,它不仅能够根据root= /dev/xxx来生成对应的设备节点,还能够在碰到root=LABEL=/的情况下探测所有的硬盘分区,以便找到对应着卷标为/的分区。

pivot_root  

转换根文件系统,以及挂载临时根文件系统。

raidautorun 

自动检测所有的raid设备

showlabels 

显示设备的LABEL以及UUID sw

itchroot  

与pivot_root功能类似,用于转换根文件系统。但只能用于2.6或以后的核心。

3、手工创建initrd

对于传统的 Linux 系统来说,initrd 映像是在 Linux 构建过程中创建的。有很多工具,例如 mkinitrd,都可以用来使用必要的库和模块自动构建 initrd,从而用作与真实的根文件系统之间的桥梁。mkinitrd 工具实际上就是一个 shell 脚本,有兴趣的可以研究一下。下面将以GTES11为基础制作U盘上的操作系统为例来描述initrd的创建过程:

1、将grub写到U盘上

# mount /dev/sdb1 /mnt
# grub-install --root-directory=/mnt hd1
Installation finished. No error reported.
This is the contents of the device map /mnt/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb

2、创建grub.conf文件

default=0
timeout=5
title Flashdisk-System (2.6.18-8.2)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-8.2 root=/dev/sda1
initrd /boot/initrd.img

3、复制系统核心到/boot

# cp /boot/vmlinuz-2.6.18-8.2 /mnt/boot

4、制作initrd 这也是制作U盘上操作系统最为关键的一步,稍有出错就会看到“kernel panic”错误提示,制作initrd时可以参照系统的initrd来修改,按照前面的方法解开 initrd-2.6.18-8.2.img ,并修改其中init文件为如下:

#!/bin/nash
#创建必备的设备文件
mount -t proc /proc /proc
setquiet
echo Mounting proc filesystem
echo Mounting sysfs filesystem
mount -t sysfs /sys /sys
echo Creating /dev
mount -o mode=0755 -t tmpfs /dev /dev
mkdir /dev/pts
mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
mkdir /dev/shm
mkdir /dev/mapper
echo Creating initial device nodes
mknod /dev/null c 1 3
mknod /dev/zero c 1 5
mknod /dev/systty c 4 0
mknod /dev/tty c 5 0
mknod /dev/console c 5 1
mknod /dev/ptmx c 5 2
mknod /dev/rtc c 10 135
mknod /dev/tty0 c 4 0
mknod /dev/tty1 c 4 1
mknod /dev/tty2 c 4 2
mknod /dev/tty3 c 4 3
mknod /dev/tty4 c 4 4
mknod /dev/tty5 c 4 5
mknod /dev/tty6 c 4 6
mknod /dev/tty7 c 4 7

#加载U盘驱动
echo "Loading scsi_mod.ko module"
insmod /lib/scsi_mod.ko
echo "Loading sd_mod.ko module"
insmod /lib/sd_mod.ko
insmod /lib/sg.ko
echo "Loading usb-storage.ko module"
insmod /lib/usb-storage.ko
echo "Loading uhci-hcd.ko module"
insmod /lib/uhci-hcd.ko
echo "Loading ohci-hcd.ko module"
insmod /lib/ohci-hcd.ko
echo "Loading ehci-hcd.ko module"
insmod /lib/ehci-hcd.ko
echo "initialization flash disk"
sleep 10

#挂载和转换根文件系统
echo Creating root device.
mkrootdev -t ext2 -o defaults sda1
mknod /dev/sda b 8 0
mknod /dev/sda1 b 8 1
mknod /dev/root b 8 1
echo Mounting root filesystem.
mount /sysroot
echo Setting up other filesystems.
Setuproot
echo Switching to new root and running init.
switchroot

然后拷贝U盘必须的驱动文件到该lib目录下,如下:

# cp /lib/modules/2.6.18-8.2/kernel/drivers/usb/host/ehci-hcd.ko ./lib
# cp /lib/modules/2.6.18-8.2/kernel/drivers/usb/host/ohci-hcd.ko ./lib
# cp /lib/modules/2.6.18-8.2/kernel/drivers/scsi/scsi_mod.ko ./lib
# cp /lib/modules/2.6.18-8.2/kernel/drivers/scsi/sd_mod.ko ./lib
# cp /lib/modules/2.6.18-8.2/kernel/drivers/scsi/sg.ko ./lib
# cp /lib/modules/2.6.18-8.2/kernel/drivers/usb/host/uhci-hcd.ko ./lib
# cp /lib/modules/2.6.18-8.2/kernel/drivers/usb/storage/usb-storage.ko ./lib

接下就需要将修改后的initrd做成一个cpio的包并压缩,并将生成的initrd.img文件复制到U盘的boot目录下,如下:

# find . |cpio -H newc -o | gzip -i > ../initrd.img
# cp ../initrd.img /mnt/boot

其中的newc表示使用新型(SVR4)跨平台格式,SVR4是UNIX操作系统的一种新的内核标准。

5、建立U盘上文件 创建完引导initrd后,下面就需要在U盘上制作系统一些必须的程序,如shell,常用的命令等等。当然这些可以从系统里复制这些必须的文件,但是考 虑到U盘的大小,所以在这里采用busybox,关于busybox的使用请参照知识库的另外一篇文章:http://www.turbolinux.com.cn/turbo/wiki/doku.php?id=system:busybox,将建立好的busybox文件以及busybox所依赖的库文件一起拷贝到U盘的根目录下。

# ls -l /mnt
drwxr-xr-x 2 root root 3072 2007-08-26 11:24 bin
drwxr-xr-x 3 root root 1024 2007-08-31 16:35 boot
drwxr-xr-x 2 root root 1024 2007-08-23 16:52 lib
drwxr-xr-x 2 root root 1024 2007-08-26 11:24 sbin
drwxr-xr-x 4 root root 1024 2007-08-26 11:24 usr

# ls -l /mnt/lib
-rwxr-xr-x 1 root root 121804 2007-08-23 16:52 ld-2.5.so
lrwxrwxrwx 1 root root 9 2007-08-31 15:59 ld-linux.so.2 -> ld-2.5.so
-rwxr-xr-x 1 root root 1580376 2007-08-23 16:52 libc-2.5.so
-rwxr-xr-x 1 root root 27976 2007-08-23 16:52 libcrypt-2.5.so
lrwxrwxrwx 1 root root 15 2007-08-31 15:59 libcrypt.so.1 -> libcrypt-2.5.so
lrwxrwxrwx 1 root root 11 2007-08-31 15:59 libc.so.6 -> libc-2.5.so
-rwxr-xr-x 1 root root 209316 2007-08-23 16:52 libm-2.5.so
lrwxrwxrwx 1 root root 11 2007-08-31 15:59 libm.so.6 -> libm-2.5.so

6、建立etc目录 etc目录下,需要创建文件有inittab、fstab以及init.d/rcS,当initrd把引导权交给busybox的时候,busybox会自动去执行这些文件的内容。文件的内容分别如下:

etc/inittab:

#!/bin/ash
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/ash
tty2::respawn:/bin/ash
tty3::respawn:/bin/ash

ash是bash的克隆,所以在这里我们采用ash做为系统的shell。

etc/fstab:

/dev/sda1 /         ext2    defaults       1 1
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0

etc/init.d/rcS:

#!/bin/ash
mount -a

7、建立dev目录 使用cp -a命令拷贝常用的设备文件,包括console、tty1、tty2、tty3、sda、sda1等设备文件。总共需要设备文件的有如下:

# ls /mnt/dev
console ram sda systty tty0 tty2 tty4 tty6 tty8 ttyS0
null root sda1 tty tty1 tty3 tty5 tty7 tty9

最后再建立proc、sys、sysroot这几个空目录即可完成。制作完成后,设置BIOS从U盘引导,就可以看到U盘启动后初始化内核的打印信息了,如果看到“按下enter键激活控制台”这样的提示表明制作成功!

 
nash:Nash代表Nash shell 目录 纳什 Nash是受plan9 rc启发的系统外壳程序,它可以轻松地以惯用的方式利用操作系统名称空间(在linux和plan9上)来创建可靠且安全的脚本。 有用的东西 nashfmt:格式化nash代码(如gofmt),但尚未定义代码样式(请参阅“安装”部分)。 :在nash脚本中完成的自动完成。 :Nash配置文件自定义(例如:提示,别名等) :与nashfmt集成的Emacs主模式。 为什么Nash脚本可靠? Nash在命令的第一个不成功状态中止; Nash在第一个未绑定变量处中止; 可以检查管道中每个组件的结果状态。 没有评估; 字符串是纯字符串(不评估变量) 立即下载

相关推荐

Backblaze 2025全年硬盘故障率报告解读

作为长期追踪存储行业动态的科技博主,每年/季度Backblaze的Drive Stats报告都是我重点关注的核心内容——不同于厂商发布的实验室数据,Backblaze以近13年、数十万片企业级硬盘的真实运行数据为基础,其年化故障率(AFR)、寿命趋势等结论,直接反映了硬盘在严苛数据中心环境下的真实表现,无论是企业存储选型还是个人高端存储参考,都具备极高的实用价值。2025年末,Backblaze发布了第13年的年度收官报告,涵盖2025年Q4、全年及终身硬盘可靠性数据。

存储随笔 4014

速成shell脚本教程,一起来看!!!

什么是shell? shell是一个命令解释器,在Linux系统中shell是用户和内核的接口,通常被称为壳。 什么是shell脚本? shell脚本就是一个包含一系列命令的文件,shell读取这个文件,按照文件中的顺序执行文件中的命令,就像在命令行输入命令一样。 shell脚本的好处 系统批量管理 实现自动化,提高运维效率 对系统做监控 shell脚本的编程语言 Linux中的shell有很多种各有优缺点 Bourne-Again Shell(bash)是Linux中最常用的shell类型,是Bo

m0_51141557的博客 1567

手机拍照也能玩高光谱?教你用TensorFlow Lite在Android上实现实时RGB转高光谱

本文介绍了如何利用TensorFlow Lite在Android设备上实现实时RGB到高光谱的图像重构技术。通过深度学习模型优化和移动端部署策略,使智能手机具备专业级光谱分析能力,适用于农业检测、化妆品分析等多个领域。

weixin_29091105的博客 245

BASH 的基本语法

BASH 的基本语法最简单的例子 —— Hello World! 关于输入、输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1     最简单的例子 —— Hello World!几乎所有的讲解编程的书给读者的第一个例子都是 Hello World 程序,那么

与日俱增 2964

独立站如何采集商品?外贸独立站采集教程

从这里Robert了解到还有国内有很多仿牌卖家、微商,都有类似的情况,他们出海的阻碍主要在于支付、物流、推广。8.插件“抓取任务”列表手动点同步,将商品同步到主商城后台商品管理列表(商品默认同步到下架列表中) 后台商品管理下架列表显示已同步商品。5.店铺信息修改完成后,可以开始采集商品,采集时弹窗中会自动识别当前平台及商品链接,分类和相册名称可以自定义 编辑修改。4. 打开采集目标站商品页面,点开谷歌浏览器扩展程序列表,找到Shopyy采集平台,打开配置页。打开弹窗中的“店铺管理”,添加店铺信息。

Jernnifer_mao的博客 1378

信道估计准则演进:从LS、MMSE到LMMSE的工程权衡

本文深入探讨了信道估计准则的演进历程,从LS、MMSE到LMMSE的工程权衡。通过对比分析三大经典算法的数学本质、工程实现及适用场景,揭示了在计算复杂度、实时性和性能之间的关键取舍。文章结合4G/5G基站项目实战经验,提供了算法选型的三维决策模型和前沿发展建议,为无线通信系统设计提供实用指导。

weixin_29327525的博客 282

Bash Shell 介绍

引入 1.什么是系统命令 Shell解释器对系统接口的封装 命令控制的方法流程示例: ⛅应用程序-->系统命令/shell命令--->Shell解释器--->系统接口--->内核--->硬件 ⛅系统命令/Shell命令--->Shell解释器--->系统接口--->内核--->硬件 ⛅应用程序--->系统命令/Shell命令--->系统接口--->内核--->硬件 2.为何要用系统命令 为了使用计算机 一.Bash

Shawn派大星 3076

【ACP】2025-最新-疑难题解析- 练习一汇总

他们对您的方案比较满意,作为一个特别看重用户体验的创业公司,他们有一个比较担心的问题:在后端云服务器 ECS 实例相对空闲时,可能会触发减少 ECS 实例的伸缩活动,这时候运行在即将移出伸缩组的 ECS 实例上的应用会被终止,那么发起这些应用的用户的体验会变差。:在使用阿里云的负载均衡 SLB 实例时,做了如下健康检查的配置:响应超时时间为 5 秒,健康检查间隔为 2 秒,不健康阈值为 3,健康阈值为 3,即对于确认一个后端服务器 ECS 实例是健康的,需要连续三次得到正常响应。以下说法哪一项是正确的?

jundao1997的专栏 326

理解 Linux 动态库加载:LD_LIBRARY_PATH

flyfish

二分掌柜的 334

保姆级教程:ABAP 通过 HTTP POST 调用 OData 服务创建业务数据的具体例子

笔者之前的文章发布之后,有朋友在评论区留言,询问 ABAP 除了 Web Service 之外,是否也支持 HTTP 呢?ABAP 这么强大的语言,支持 HTTP 当然不在话下。网上有很多在 ABAP 系统基于 CL_HTTP_CLIENT 工具类,通过 HTTP 协议和第三方系统交互的代码例子。本文介绍笔者项目中一个实际例子,实现的是在 ABAP 系统 A 通过 HTTP 调用 OData 服务,在 ABAP 系统 B 创建业务数据的需求。下面我们按照这个套路来一步步实现。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 697

YOLOv11【第二章:核心模块进阶篇·第3节】LDConv线性可变形卷积改进YOLOv11!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 7439

Linux-iostat命令详解

Linux命令学习记录

m0xin的博客 102

普通用户也能免费使用 SAP Joule!

点击 SAP Joule 给出的按钮之后,SAP Business Application Studio 左侧显示的界面,就从 SAP Joule 替换成了 SAP Fiori tools 的 Project Accelerator 工具。接下来就是在后者中标准的操作流程了。笔者之前的文章,有朋友提问,既然 ChatGPT,DeepSeek,Grok 这些主流 AI 工具,回答 SAP 相关问题时都经常翻车,那 SAP 自家的 Joule 表现又如何呢?还有朋友评论:如何才能使用 SAP Joule?

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1016

【Linux】APT 本地 deb 安装与 `-f` 参数总结笔记

apt install ./xx.deb 可自动解析并安装依赖,无需 -f;-f 仅用于修复已损坏的依赖状态,非首次安装时必需。apt install -f 可单独运行,修复 broken dependencies。两者职责不同:前者是安装与依赖解决,后者是故障修复。完全离线时需提前准备依赖包或本地源。

hknaruto的专栏 210

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位

iptables 四表五链模型、firewalld zone 信任级别、云安全组与主机防火墙的关系与优先级,避坑改了防火墙把自己挡在服务器外面的翻车事故。

2502_91473995的博客 297

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Linux rm 误删文件恢复实操教程

Linux使用rm删除文件时,并不会直接抹除磁盘上的数据,只是移除文件索引,让系统不再识别这块空间。只要没有写入新数据,原有扇区内容就会保留。新文件写入才有可能覆盖这些区域,一旦覆盖就很难找回。恢复的本质就是扫描磁盘,找到这些还存在、但索引丢失的数据条目,再把它们导出保存到其他分区。越早停止写入,恢复成功的概率越高。

海天数据恢复-winhex数据恢复教程 227

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Windows/Linux下强实时运动控制内核(二):基于Qt的Delta机械手的开发应用

强实时运动控制内核MotionRT750下Qt开发Delta机械手的完整开发流程。

weixin_57350300的博客 241

Linux sudo

如果输出 → 无 sudo 权限 如果输出 → 拥有全部 sudo 权限 辅助验证命令 ⚠️ 注意:在 wheel 组 ≠ 一定能 sudo,必须 开启 Ubuntu/Debian: ✅ 重要:修改组之后,用户要重新登录才生效! 或者执行 临时生效 看到这行(没有 #注释)才生效: 方式 2:visudo 直接单独给用户授权(精细化权限) 找到 ,下面添加一行: 自带语法校验,写错会告警,不要直接 vim 改 ,写错直接 sudo 炸掉! 想免密 su

fengliyang_的博客 178

Linux epoll 一篇讲透:从 select/poll 到红黑树、LT/ET,再到完整 TCP 服务器

一万个客户端已经连上服务器,眼下只有十个客户端发来了数据。服务器怎样把时间花在这十个连接上?理解这个问题,就抓住了 epoll 的主线。接下来,我们沿着“为什么需要它 → 接口怎么用 → 内核如何实现 → LT/ET 怎么写 → 完整服务器怎么运行”的顺序,把知识连起来。**阅读基础:**了解socketbindlistenaccept的基本用途即可。本文示例面向 Linux,服务器使用 C++17,实验脚本使用 Python 3。

2601_94861874的博客 138

Linux 网络基础详解:IP、子网、路由与 ip、ss 命令实战

建库建表、增删改查、连接查询(内连左连右连)、聚合函数、权限控制 GRANT/REVOKE,每条命令配可运行示例,零基础也能跟着敲会 SQL 基础。

2502_91473995的博客 611

Linux、Shell、MySQL 测试卷逐题细讲(下篇:MySQL)

本文为Linux、Shell、MySQL测试卷下半段MySQL部分逐题讲解,包含填空、选择与SQL分析三类题型。填空题覆盖COUNT、HAVING、DISTINCT、事务、约束、索引等核心语法;选择题辨析存储过程、索引类型、ACID、存储引擎、用户管理等考点。SQL大题围绕员工、部门、职位、地点四张关联表,考察多表连接、分组聚合、自连接、相关子查询、NULL处理等高频写法,标注LEFT JOIN统计计数、NULL判断、子查询别名等易错坑点,同时梳理试卷OCR识别带来的干扰问题,重点提示SQL实操中的常见失误

dongziwen1的博客 181

深入浅出聊聊 Linux 的 PageCache 与系统极致性能

本文深入浅出解析了 Linux PageCache 的核心机制,揭示其如何通过“延迟写、预读读”提升系统性能。以监控告警为切入点,阐明 free -h 中 buff/cache 并非真正占用,真正可用内存由 available 决定。结合 Kafka、Elasticsearch、MySQL 等实战场景,说明中间件如何依赖 PageCache 实现极致性能。强调不可手动清理缓存,并建议合理调优脏页参数,避免卡顿。最终指出:内存满≠危机,而是系统高效运行的体现。

小小默:进无止境 340

Linux 下 OpenCode 接入自定义大模型 API 教程:以 DeepSeek-V4.1-Flash-1017 为例

本文介绍在Linux下通过Python脚本配置OpenCode接入自定义大模型API(以DeepSeek-V4.1-Flash-1017为例),实现永久化、非侵入式配置。通过修改~/.config/opencode/opencode.json文件,添加OpenAI兼容服务商BLSC,注册模型并设置APIKey。支持命令行测试、默认模型设定及安全权限控制,操作简单且不影响原有配置。适用于各类支持OpenAI接口的自定义模型服务,提升开发灵活性与安全性。

qq_15060477的博客 122

【Linux 命令实战(06):Linux 文件权限管理,掌握 chmod、chown、chgrp】

chmod:修改文件和目录权限。chown:修改文件所有者,也可以修改所属用户组。chgrp:修改文件所属用户组。r:读取。w:写入。x:执行,对于目录则表示进入和访问能力。ugo:分别代表所有者、所属组和其他用户。我认为,权限管理最重要的不是记住755644这些数字,而是先弄清楚谁需要访问文件、需要执行什么操作,再给出恰当的权限。尤其是在测试服务器和生产服务器上,不要为了图方便直接使用chmod 777。权限开放得越大,并不代表问题解决得越好。

一些微不足道的见解、希望能帮助各位 306

【Linux 命令实战(02):文件与目录操作,掌握 pwd、ls、cd 三个核心命令】

命令作用cd /进入根目录cd ~进入当前用户家目录cd返回当前用户家目录cd …返回上一级目录cd …/…返回上两级目录cd -返回上一次所在目录进入指定目录命令核心用途常用参数pwd查看当前目录-L、-Pls查看文件和目录cd切换目录…、~、-Linux 文件系统的基本结构。绝对路径与相对路径的区别。Tab 自动补全。Shell 通配符。使用&&组合命令。这篇文章主要解决的是如何在 Linux 文件系统中快速定位目录。

一些微不足道的见解、希望能帮助各位 195
上一篇: Fedora Linux 的启动分析(转)
下一篇: 解决Fedora linux 下 Rhythmbox中文显示乱码的问题
forlinux
博客等级 码龄21年 53粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值