前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简易Ramdisk 镜像制作(基于Centos7+)

简易Ramdisk 镜像制作(基于Centos7+)

作者头像
PedroQin
发布2020-08-06 09:50:25
1.3K0
发布2020-08-06 09:50:25
举报
文章被收录于专栏:WriteSimpleDemoWriteSimpleDemo

镜像完成后可用于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设置

代码语言:javascript
复制
systemctl set-default multi-user.target
timedatectl set-timezone Asia/Shanghai #Modify TIME zone
systemctl disable firewalld 
systemctl disable NetworkManager
sed -i "/^SELINUX=/c\SELINUX=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/c\UseDNS no" /etc/ssh/sshd_config #SSH setting
sed -i "/^#IgnoreUserKnownHosts no/c\IgnoreUserKnownHosts yes" /etc/ssh/sshd_config #SSH setting
sed -i "/StrictHostKeyChecking/c\StrictHostKeyChecking no" /etc/ssh/ssh_config #SSH client setting
echo -e "set -g mode-keys vi\nset -g prefix C-a\nunbind C-b\nbind C-a send-prefix" > /root/.tmux.conf #tmux setting

打包系统

代码语言:javascript
复制
[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 "\033[32m$@\033[0m"
    echo
}

# show message in red
function red_message()
{
    tput bold
    echo -ne "\033[31m$@\033[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"
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WriteSimpleDemo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装系统
  • 安装必要软体
  • 一些OS设置
  • 打包系统
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档