linux命令行工具进阶

news/2025/3/30 18:08:06/

文章目录

  • 前言
  • ssh免密登录,免密码登录,公私钥
  • 查看与修改IP地址
    • 临时修改
    • 永久修改
  • mount临时切换根文件系统
  • 永久切换根文件系统
  • loop文件
  • parted
  • initramfs
  • uboot command line


前言

本文记录了一些不经常用到,但在某个时刻需要用到的一些指令。
免密ssh登录到远程


提示:以下是本篇文章正文内容,下面案例可供参考

ssh免密登录,免密码登录,公私钥

在客户端执行 ssh-keygen -t rsa(或更安全的 ed25519 算法),默认在 ~/.ssh 目录生成 id_rsa(私钥)和 id_rsa.pub(公钥)。生成时可选择是否设置私钥密码增强安全性

使用 ssh-copy-id -i ~/.ssh/id_rsa.pub user@host 自动完成公钥追加到服务端 ~/.ssh/authorized_keys

查看与修改IP地址

ifconfig <eth0> <ip> netmask <mask>

临时修改

永久修改

mount临时切换根文件系统

  1. 挂在新的根分区
    mount /dev/dev /mnt
    
  2. 挂载必要的文件系统proc, sys, dev, run
    mount --bind /dev   /mnt/dev
    mount --bind /sys   /mnt/sys
    mount --bind /proc  /mnt/proc
    mount --bind /run   /mnt/run
    
  3. 进入chroot环境
    chroot /mnt
    
  4. 执行操作

    在chroot环境中,可以执行安装、修复等操作
  5. 退出chroot环境
    exit
    umount /mnt/{proc,sys,dev,run}
    umount /mnt
    

永久切换根文件系统

switch_root /mnt /sbin/init
只有pid==1的进程才能调用该命令,切换rootfs并执行命令

loop文件

parted

# 创建gpt分区表 
parted -s <device> mklabel gpt# 创建分区并添加label
parted -s <dev> mkpart primary 262144 1310720# 命名分区label
parted <dev> name 1 recoveryparted -s <dev> mkpart recovery ext4 2097152s 3145727s将文件挂载为loops设备
sudo losetup -fP <filename>
# 显示设备号
loop_file=$(losetup -j <filename>)yes | sudo mkfs.ext4 ${loop_file}p1
yes | sudo mkfs.ext4 ${loop_file}p2
yes | sudo mkfs.ext4 ${loop_file}p3
# 取消loop的挂载
sudo losetup -d $loop_file

mbr分区创建并格式化脚本


#!/bin/bashset -eecho -e "hello, type the device/file path"read diskif [[ ! -e $disk ]]; thenecho "磁盘设备/文件 $disk 不存在,请检查后重新输入"exit 1
fiecho "manipulate $disk, are you sure?[y/n]"
read -p "(y/n):" confirmcase "$confirm" iny) echo "continue execution...";;n) echo "undo"exit 1;;*) echo "invalid input"exit 1;;
esacecho "正在创建msdos分区表..."
parted -s $disk mklabel msdos
echo "msdos分区表创建成功"echo "正在创建boot分区"
parted -s $disk mkpart primary fat32 2048s 264191secho "正在创建分区 1 262144s-1310720s recovery, 请稍等..."
parted -s $disk mkpart primary ext4 2097152s 3145727secho "正在创建分区 2 1312768s-7604224s system, 请稍等..."
parted -s $disk mkpart primary ext4 3145728s 9437183secho "正在创建分区 3 7606272s-10480000s data, 请稍等..."
parted -s $disk mkpart  primary  ext4 9437184s 60260352secho "正在格式化分区..."
mkfs.vfat ${disk}p1  # boot
mkfs.ext4 ${disk}p2  # recovery
mkfs.ext4 ${disk}p3  # rootfs
mkfs.ext4 ${disk}p4  # datae2label ${disk}p1 "boot"
e2label ${disk}p2 "recovery"
e2label ${disk}p3 "rootfs"
e2label ${disk}p4 "data"# sudo losetup -fP $disk
# loop_file=$(losetup -j $disk)
# loop_file=$(echo $loop_file | cut -d ':' -f 1 | xargs)
# echo loop dev: [$loop_file]
# yes | sudo mkfs.ext4 ${loop_file}p1
# yes | sudo mkfs.ext4 ${loop_file}p2
# yes | sudo mkfs.ext4 ${loop_file}p3
# sudo losetup -d $loop_file
echo "格式化成功"
exit 0

initramfs

制作initramfs.cpio

https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt

#!/bin/sh# Copyright 2006 Rob Landley <rob@landley.net> and TimeSys Corporation.
# Licensed under GPL version 2if [ $# -ne 2 ]
thenecho "usage: mkinitramfs directory imagename.cpio.gz"exit 1
fiif [ -d "$1" ]
thenecho "creating $2 from $1"(cd "$1"; find . | cpio -o -H newc ) > "$2"
elseecho "First argument must be a directory"exit 1
fi

uboot command line

load mmc <设备> <内存地址,一般大于0x80000000> ${位置}/文件名,如vmlinux等printenv # 打印环境变量setenv bootdelay 5  # 设置启动倒计时为5s
setenv bootargs 'console=ttyS0,115200 root/dev/mmcblk0p2 rw'  # 设置内核参数
saveenv  # 将当前环境变量保存到非易失性存储(如Flash或eMMC)bootz 启动Linux的zImage内核镜像,支持设备树(DTB)和initrd
bootz [内核地址] [initrd地址:大小]/[-] [设备树地址]bootm 启动uImage格式的内核镜像,常用于旧版U-Boot

当内核镜像和initramfs文件编译在一起时,内核启动自动就会进入initramfs中

当内核镜像和initramfs文件分开时可以由下面两种方法使用initramfs

  • 修改设备树根节点
\ {chosen {stdout-path = "serial2:115200n8";linux,initrd-start = <0xb0000000>;  # initramfs 起始内存地址linux,initrd-end = <0xc6539600>;    # initramfs起始内存地址 + 文件大小};  
}
  • 或者,通过bootargs向内核传递参数setenv bootargs "console=ttyS0,115200 initrd=${ramdisk_addr_r},${filesize}"


http://www.ppmy.cn/news/1583486.html

相关文章

单表、多表查询练习

课堂练习代码&#xff1a; 一、单表查询 1、显示所有职工的基本信息。 mysql> select * from worker; --------------------------------------------------------------------------------- | 部门号 | 职工号 | 工作时间 | 工资 | 政治面貌 | 姓名 | …

Python+Pytorch掌纹训练识别

程序示例精选 PythonPytorch掌纹训练识别 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonPytorch掌纹训练识别》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学…

数据结构——顺序栈seq_stack

前言&#xff1a;大家好&#x1f60d;&#xff0c;本文主要介绍了数据结构——顺序栈 目录 一、概念 1.1 顺序栈的基本概念 1.2 顺序栈的存储结构 二、基本操作 2.1 结构体定义 2.2 初始化 2.3 判空 2.4 判满 2.5 扩容 2.6 插入 入栈 2.7 删除 出栈 2.8 获取栈顶元…

算法 | 小龙虾优化算法原理,引言,公式,算法改进综述,应用场景及matlab完整代码

小龙虾优化算法(Crayfish Optimization Algorithm, COA)详解 一、引言 背景与意义 小* 龙虾优化算法(COA)是一种受小龙虾自然行为启发的元启发式算法,模拟其温度适应、洞穴选择、觅食竞争等机制,用于解决复杂优化问题。相比传统算法(如遗传算法、粒子群优化),COA通过…

Rust从入门到精通之进阶篇:14.并发编程

并发编程 并发编程允许程序同时执行多个独立的任务&#xff0c;充分利用现代多核处理器的性能。Rust 提供了强大的并发原语&#xff0c;同时通过类型系统和所有权规则在编译时防止数据竞争和其他常见的并发错误。在本章中&#xff0c;我们将探索 Rust 的并发编程模型。 线程基…

计算机期刊推荐 | 计算机-人工智能、信息系统、理论和算法、软件工程、网络系统、图形学和多媒体, 工程技术-制造, 数学-数学跨学科应用

Computers, Materials & Continua 学科领域&#xff1a; 计算机-人工智能、信息系统、理论和算法、软件工程、网络系统、图形学和多媒体, 工程技术-制造, 数学-数学跨学科应用 期刊类型&#xff1a; SCI/SSCI/AHCI 收录数据库&#xff1a; SCI(SCIE),EI,Scopus,知网(CNK…

解析重塑世界

还是旧事重提&#xff0c;今天有事回家早&#xff0c;正好有个孩子上周末做错的一道简单的几何题比较有趣&#xff0c;拿出来啰嗦几句&#xff0c;写篇短文。 简单看一道题以及解法 1(常规的&#xff0c;学校里教的解法)&#xff1a; 从解法 1 中还可以引申出很多&#xff1…

3.26[a]paracompute homework

5555 负载不平衡指多个线程的计算量差异显著&#xff0c;导致部分线程空转或等待&#xff0c;降低并行效率。其核心矛盾在于任务划分的静态性与计算动态性不匹配&#xff0c;尤其在处理不规则数据或动态任务时尤为突出。以稀疏矩阵的向量乘法为例&#xff0c;假设其非零元素分…