简易Ramdisk 镜像制作(基于Centos7+)
时间:2022-07-22
本文章向大家介绍简易Ramdisk 镜像制作(基于Centos7+),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
镜像完成后可用于PXE环境或U盘randisk等
安装系统
考虑到实际应用中Ramdisk需要保持小而精,故在安装系统时选择最小化安装,然后再安装所需要的包。
安装必要软体
tool |
描述 |
---|---|
vim |
|
ifconfig |
net-tools |
lspci |
pciutils |
numactl |
|
nfs |
|
tmux |
|
ftp |
|
bc |
|
smartctl |
smartmontools |
mailx |
|
mktemp |
|
mcelog |
|
ipmi |
ipmitool和OpenIPMI |
编译环境 |
gcc make kernel-headers gcc-c++ kernel-devel |
dos2unix |
|
ethtool |
|
lsusb |
usbutils |
zlib |
|
zip |
|
unzip |
|
killall |
psmisc |
sg3_utils |
|
numactl |
|
locate |
mlocate |
rngd.service |
rng-tools |
strace |
strace |
expect |
expect和tcl |
openssh |
|
openssh-server |
|
nvme |
|
mcelog |
|
smartd |
|
issdcm |
一些OS设置
systemctl set-default multi-user.target
timedatectl set-timezone Asia/Shanghai #Modify TIME zone
systemctl disable firewalld
systemctl disable NetworkManager
sed -i "/^SELINUX=/cSELINUX=disabled" /etc/selinux/config #disable SELINUX
setenforce 0 #shutdown SELINUX
sed -i "s/^ExecStart=-/sbin/agetty --noclear %I $TERM/& --autologin root/g" /usr/lib/systemd/system/getty@.service #root autologin
sed -i "s/^ExecStart=-/sbin/agetty --keep-baud 115200,38400,9600 %I $TERM/& --autologin root/g" /usr/lib/systemd/system/serial-getty@.service #root Serial autologin
sed -i "/^#UseDNS/cUseDNS no" /etc/ssh/sshd_config #SSH setting
sed -i "/^#IgnoreUserKnownHosts no/cIgnoreUserKnownHosts yes" /etc/ssh/sshd_config #SSH setting
sed -i "/StrictHostKeyChecking/cStrictHostKeyChecking no" /etc/ssh/ssh_config #SSH client setting
echo -e "set -g mode-keys vinset -g prefix C-anunbind C-bnbind C-a send-prefix" > /root/.tmux.conf #tmux setting
打包系统
[root@localhost ~]# cat make_img.sh
#!/bin/bash
###############################################
# Filename : make_img.sh
# Author : PedroQin
# Date : 2020-01-17 15:54:12
# Description :
# Version : 1.0.0
###############################################
target_folder="/temp/create_os"
os_folder="$target_folder/os"
# show message in green
function green_message()
{
tput bold
echo -ne " 33[32m$@ 33[0m"
echo
}
# show message in red
function red_message()
{
tput bold
echo -ne " 33[31m$@ 33[0m"
echo
}
# print description and then run it
function print_run()
{
if [ $# -eq 1 ];then
green_message "$1"
eval "$1"
elif [ $# -ge 2 ];then
green_message "$1"
shift
eval "$@"
else
return -1
fi
}
whereami=`cd $(dirname $0);pwd`
change_log="$whereami/Changelog"
version=`awk '/Version/ {print $2}' $change_log | sed -n '1p'`
[ -z "$version" ] && red_message "please check $change_log" && exit 1
DATE=`date +"%Y%m%d%H%M%S"`
os_image="initrd_${version}_${DATE}.img"
green_message "Image Name : $os_image , press any key to package ..."
read -n 1
green_message "Copy Data..."
print_run "mkdir -p $os_folder"
print_run "cp -d /{bin,lib,lib64,sbin} $os_folder"
print_run "cp -arf /{boot,etc,opt,root,run,srv,usr,var} $os_folder"
print_run "mkdir $os_folder/{dev,home,media,mnt,proc,sys,log,tmp}"
green_message "Initialize Data..."
print_run "delete fstab" "rm -f $os_folder/etc/fstab 2>/dev/null"
print_run "delete network config file" "rm -rf $os_folder/etc/sysconfig/network-scripts/ifcfg-e* 2>/dev/null"
print_run "delete log" "rm $os_folder/var/log/messages* ; rm $os_folder/var/log/dmesg* ; rm $os_folder/var/log/mail* ; rm $os_folder/var/log/mcelog* ;rm $os_folder/var/log/boot.log* ;rm $os_folder/var/log/cron* ;rm $os_folder/var/log/secure* ;rm $os_folder/var/log/spooler* ;rm $os_folder/var/log/yum.log* ;rm $os_folder/var/log/btmp* ;touch $os_folder/var/log/mcelog "
print_run "clean log" "echo > $os_folder/root/.ssh/known_hosts ; echo > $os_folder/root/.bash_history ; echo > $os_folder/var/log/wtmp ; echo > $os_folder/var/log/btmp ; echo > $os_folder/root/.viminfo"
print_run "create init" "cp $os_folder/usr/sbin/init $os_folder"
green_message "Package image..."
print_run "cd $os_folder; find .|cpio -c -o|xz --format=lzma --best > ../$os_image"
echo
green_message "OS image: $target_folder/$os_image"
- 剑指OFFER之顺时针打印矩阵(九度OJ1391)
- 用Qt写软件系列五:一个安全防护软件的制作(2)
- 2018年值得关注的200场机器学习会议
- Linux开机启动(bootstrap)
- 剑指OFFER之树的子结构(九度OJ1520)
- 万物智联慧结成网:信息技术驱动物流产业转型升级
- 用Qt写软件系列五:一个安全防护软件的制作(1)
- Linux文件管理
- 为什么区块链会成为消除数字化营销障碍的解决方案
- TinyOS和Deluge的安装模拟(二)
- Kubernetes的服务网格(第4部分):通过流量切换持续部署
- QTableView表格视图的列宽设置
- OpenProcess打开进程返回错误的问题
- Python标准库01 正则表达式 (re包)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 我的Vue不小心跨域了o(╥﹏╥)o 干它
- 金九银十准备季——Java后端多线程&并发面试题及答案(二)
- TypeScript 设计模式之观察者模式
- pytest文档46-关于https请求警告问题
- pytest文档45-allure添加环境配置(environment)
- Pytest fixture参数化params
- Python 批量合并 Excel
- 用 Python 了解一下最炫国漫《雾山五行》
- Python 基础(六):列表与元组
- Word 批量转 PDF
- Python 数据分析(一):NumPy 基础知识
- 每日一题 | 环形排列问题
- 每日一题 | QQ群撩妹问题
- 每日一题 | 老板出的下棋问题
- Qt音视频开发12-mpv解码播放