linux系统怎么制作

发布时间:2016-12-02 12:44

Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。那么你知道linux系统怎么制作吗?小编带来了linux系统制作的具体操作过程,下面大家跟着小编一起来学习一下吧。

linux系统制作方法

1. CentOS定制

1.1 光盘结构介绍

*isolinux 目录存放光盘启动时的安装界面信息

*images 目录包括了必要的启动映像文件

*CentOS 目录存放安装软件包及信息

*.discinfo 文件是安装价质的识别信息

*lemp.tar.gz 文件存放系统初始化及其相关程序安装脚本.

环境说明:

CentOS-5.5-i386-bin-DVD.iso.

VMware

1.2 在VM安装linux系统

安装anaconda repodata createrepo mkisofs ,关联太多采用yum安装//定制过程需要产生comps.xml文件以及生成iso

yum -y install anaconda repodata createrepo mkisofs#安装制作发行版所需的基本软件包

yum -y install anaconda-runtime createrepo yum-utils anacondaanaconda-help busybox-anaconda mkisofs

1.3 生成packages.list

生成packages.list 所安装的RPM包文件清单(由于install.log文件在root目录,所以该操作在root目录进行)

cat install.log | grep Installing | sed 's/Installing //g' > /root/packages.list #生成后,需要仔细看该文件,一般会在某些文件开始部分如“1:”这样的字符,需要删除这些字符,否在后面执行copy动作会报错,注意引项为英文版Shell

cat install.log | grep 安装 | sed 's/安装 //g' > /root/packages.list #同上,中文版Shell

删除1:的命令:

sed 's/[0-9]{1,}://g' packages.list > packagesnew.list

1.4 建立定制Centos的源目录

mkdir /disk #定制时要复制RPM包的目录

mkdir /mnt/cdrom #加载光驱目录

mount -o loop /dev/cdrom /mnt/cdrom #将光盘内容加载到/mnt/cdrom中

cd /mnt/cdrom/ #复制光盘内容到disk文件下,或者

tar -cf - . | ( cd /disk ; tar -xvpf - )

不能使用普通的复制,因为普通的复制不能复制隐藏文件

rm -rf /disk/CentOS/ #先删除所有RPM包

mkdir /disk/CentOS/ #创建RPM包存放目录

1.5 通过脚本复制系统安装的包;

#!/bin/bash

DEBUG=0

DVD_CD=/disk/CentOS

ALL_RPMS_DIR=/mnt/cdrom/CentOS/

DVD_RPMS_DIR=$DVD_CD

packages_list=/root/packages.list

number_of_packages=`cat $packages_list | wc -l`

i=1

while [ $i -le $number_of_packages ] ; do

line=`head -n $i $packages_list | tail -n -1`

name=`echo $line | awk '{print $1}'`

version=`echo $line | awk '{print $3}' | cut -f 2 -d :`

if [ $DEBUG -eq "1" ] ; then

echo $i: $line

echo $name

echo $version

fi

if [ $DEBUG -eq "1" ] ; then

ls $ALL_RPMS_DIR/$name-$version*

if [ $? -ne 0 ] ; then

echo "cp $ALL_RPMS_DIR/$name$version* "

fi

else

echo "cp $ALL_RPMS_DIR/$name-$version* $DVD_RPMS_DIR/"

cp $ALL_RPMS_DIR/$name$version* $DVD_RPMS_DIR/

# in case the copy failed

if [ $? -ne 0 ] ; then

echo "cp $ALL_RPMS_DIR/$name$version* "

cp $ALL_RPMS_DIR/$name* $DVD_RPMS_DIR/

fi

fi

i=`expr $i + 1`

done

将以上内容保存为copyrpms.sh

chmod 775 copyrpms.sh

./copyrpms.sh

经过一系列的复制就完成了你要定制的RPM包(在/disk/CentOS/目录下);

1.6 检查包的依赖性

# mkdir /tmp/testdb

# rpm --initdb --dbpath /tmp/testdb

# rpm --test --dbpath /tmp/testdb -Uvh *.rpm

1.7 定制安装控制文件ks.cfg

一般方便可以直接由root下面的anaconda-ks.cfg修改

cp anaconda-ks.cfg /disk/ks.cfg

样例内容如:

# Kickstart file automatically generated by anaconda.

install

cdrom

lang en_US.UTF-8

keyboard us

network --device eth0 --bootproto dhcp

firewall --disabled

authconfig --enableshadow --enablemd5

selinux --disabled

timezone --utc Asia/Shanghai

bootloader --location=mbr --driveorder=sda

# The following is the partition information you requested

# Note that any partitions you deleted are not expressed

# here so unless you clear all partitions first, this is

# not guaranteed to work

#clearpart --linux --drives=sda

#part /boot --fstype ext3 --size=100 --ondisk=sda

#part pv.6 --size=0 --grow --ondisk=sda

#volgroup VolGroup00 --pesize=32768 pv.6

#logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow

#logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1000 --grow --maxsize=4032

%packages

@mysql

@core

@base

@network-server

@web-server

%post

echo "HOSTNAME=icesoul.local" >> /etc/sysconfig/network

echo "# Do not remove the following line, or various programs" > /etc/hosts

echo "# that require network functionality will fail." >> /etc/hosts

echo "127.0.0.1 localhost" >> /etc/hosts

echo "127.0.0.1 icesoul.local" >> /etc/hosts

eject

reboot

1.8 修改isolinux.cfg文件

修改isolinux.cfg文件// 将/disk/isolinux/目录下的isolinux.cfg文件第一行default linux修改成default linux ks=cdrom:/ks.cfg

原文:

default linux ks=cdrom:/ks.cfg

prompt 1

timeout 60

display boot.msg

F1 boot.msg

F2 options.msg

F3 general.msg

F4 param.msg

F5 rescue.msg

label linux

kernel vmlinuz

append initrd=initrd.img

label text

kernel vmlinuz

append initrd=initrd.img text

label ks

kernel vmlinuz

append ks initrd=initrd.img

label local

localboot 1

label memtest86

kernel memtest

append –

简化后:(默认字符模式启动)

default text ks=cdrom:/ks.cfg

label text

kernel vmlinuz

append initrd=initrd.img text

1.9 生成comps.xml

cd /disk/

createrepo -g repodata/comps.xml /disk/

到此以上定制任务已经完成。

1.10 制作IOS文件

cd /disk/

mkisofs -o MyCentOS.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T /disk/

mkisofs -o /mnt/hgfs/mycentos/MyCentOS.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T /disk/

/disk/ 目录下产生的MyCentOS.iso 生成的ISO文件。

自动硬盘分区

自动硬盘分区,分区策略是:30G根目录、1Gswap分区、其余为raid分区。

clearpart --linux

part / --fstype ext3 --size=30720

part swap --size=1024

part raid.3 --size=100 --grow

1.11 Rpm包安装

光盘rpm包的安装需要三个步骤:

u 1)拷贝rpm包到Centos目录下

u 2)重新生成comps.xml文件

u 3)配置ks.cfg文件的%packages字段

系统之外的rpm包,如mysql要放在%packages字段下,这个字段下可以填写包名字(这个报名字指的是comps.xml文件中规定的包),也可以填写rpm包。如:

%packages

@core

antlr

ccid

cdk

cdk-devel

cpp

drbd

e2fsprogs-devel

fipscheck-devel

fonts-ISO8859-2-75dpi

gcc

gcc-c++

giflib

gjdoc

glib2-devel

glibc-devel

glibc-headers

heartbeat

heartbeat-pils

heartbeat-stonith

java

java

jpackage-utils

kernel-headers

keyutils-libs-devel

kmod-drbd

krb5-devel

libgcj

libgomp

libselinux-devel

libsepol-devel

libstdc++-devel

libXmu

libXt

libXtst

lm_sensors

lua

lua-devel

make

mx

mysql

MySQL-python

mysql-server

nc

ncurses-devel

net-snmp

net-snmp-libs

ntp

openssl-devel

pcsc-lite

pcsc-lite-libs

perl-Compress-Zlib

perl-DBD-MySQL

perl-DBI

perl-HTML-Parser

perl-HTML-Tagset

perl-libwww-perl

perl-URI

perl-XML-Parser

pkgconfig

PyXML

rdesktop

rsyslog

telnet

telnet-server

vnc-server

vsftpd

xinetd

xorg-x11-fonts-base

xorg-x11-xauth

zip

zlib-devel

1.12 在光盘中执行脚本

在光盘中执行脚本,是通过将脚本放在%post字段中来执行的。具体如下:

%post --nochroot

#!/bin/sh

# Mount CDROM

mkdir -p /mnt/cdrom

mkdir /mnt/sysimage/tempdir

mount -t iso9660 /tmp/cdrom /mnt/cdrom

cp -r /mnt/cdrom/cmd.sh /mnt/sysimage/tempdir

# Unmount CDROM

umount /mnt/cdrom

%post --log=/root/my.log

sh cmd.sh

u %post字段详解

参数%post代表光盘安装后所要做的工作。

这里有几个关键点要注意。%post分两个阶段,这两个阶段的目录结构是不一样的

1) 两个阶段

具体使用参数—nochroot来区分。我们规定,使用—nochroot阶段为“阶段一”,不使用的阶段为“阶段二”

2) 光盘路径

在阶段一,光盘路径是/tmp/cdrom, 阶段二光盘路径有待确定,好像就没有光盘了。

3) 系统目录路径

阶段一,根目录不是平常的linux路径,根目录的路径是/mnt/sysimage/

阶段二,就是我们熟悉的linux路径了,根目录的路径是/

1.13 光盘启动画面修改

光盘启动文件在目录isolinux下。其中splash.lss是启动图片,lss这是一种图片格式,是一种很怪异的图片格式。它限制图片使用16种颜色,可以通过gif图片转化而来。

n Gif转lss命令:

giftopnm< splash.gif | ppmtolss16 > splash.lss

n 制作高质量的16色gif图片:

先用photoshop打开任何一张图片,然后在文件的下拉菜单里,保存的时候选择“保存为WEB和设备使用格式“,再然后选择gif再选择16色保存就OK

n 图片格式:

大小640*300, 72像素,16色

1.14 从硬盘启动

在isolinux/isolinux.cfg中增加:

label h

localboot 0x80

意思是键入h,从硬盘启动

1.15 更改光盘安装过程中的名字

# cd /disk/isolinux/

# cp initrd.img /tmp/initrd.img.gz

# cd /tmp

# gunzip initrd.img.gz

# mkdir initrd

# mv initrd.img initrd

# cd initrd

# cpio -ivmd < initrd.img

#rm –f initrd.img

然后修改.buildstamp文件,将CentOS改为自定义名字即可.

制作initrd.img文件:

# find . | cpio -c -o >../initrd.img

# gzip ../initrd.img

# cp initrd.img /ltos/isolinux/

然后将initrd.img复制到/disk/isolinux/

linux系统怎么制作的评论条评论