linux系統(tǒng)怎么制作
Linux這個詞本身只表示Linux內(nèi)核,但實際上人們已經(jīng)習(xí)慣了用Linux來形容整個基于Linux內(nèi)核,并且使用GNU 工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。那么你知道linux系統(tǒng)怎么制作嗎?小編帶來了linux系統(tǒng)制作的具體操作過程,下面大家跟著學(xué)習(xí)啦小編一起來學(xué)習(xí)一下吧。
linux系統(tǒng)制作方法
1. CentOS定制
1.1 光盤結(jié)構(gòu)介紹
*isolinux 目錄存放光盤啟動時的安裝界面信息
*images 目錄包括了必要的啟動映像文件
*CentOS 目錄存放安裝軟件包及信息
*.discinfo 文件是安裝價質(zhì)的識別信息
*lemp.tar.gz 文件存放系統(tǒng)初始化及其相關(guān)程序安裝腳本.
環(huán)境說明:
CentOS-5.5-i386-bin-DVD.iso.
VMware
1.2 在VM安裝linux系統(tǒng)
安裝anaconda repodata createrepo mkisofs ,關(guān)聯(lián)太多采用yum安裝//定制過程需要產(chǎn)生comps.xml文件以及生成iso
yum -y install anaconda repodata createrepo mkisofs#安裝制作發(fā)行版所需的基本軟件包
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:”這樣的字符,需要刪除這些字符,否在后面執(zhí)行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 #定制時要復(fù)制RPM包的目錄
mkdir /mnt/cdrom #加載光驅(qū)目錄
mount -o loop /dev/cdrom /mnt/cdrom #將光盤內(nèi)容加載到/mnt/cdrom中
cd /mnt/cdrom/ #復(fù)制光盤內(nèi)容到disk文件下,或者
tar -cf - . | ( cd /disk ; tar -xvpf - )
不能使用普通的復(fù)制,因為普通的復(fù)制不能復(fù)制隱藏文件
rm -rf /disk/CentOS/ #先刪除所有RPM包
mkdir /disk/CentOS/ #創(chuàng)建RPM包存放目錄
1.5 通過腳本復(fù)制系統(tǒng)安裝的包;
#!/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 class="main">
linux系統(tǒng)怎么制作
version=`echo $line | awk '{print }' | 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
將以上內(nèi)容保存為copyrpms.sh
chmod 775 copyrpms.sh
./copyrpms.sh
經(jīng)過一系列的復(fù)制就完成了你要定制的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
樣例內(nèi)容如:
# 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/
到此以上定制任務(wù)已經(jīng)完成。
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/ 目錄下產(chǎn)生的MyCentOS.iso 生成的ISO文件。
自動硬盤分區(qū)
自動硬盤分區(qū),分區(qū)策略是:30G根目錄、1Gswap分區(qū)、其余為raid分區(qū)。
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字段
系統(tǒng)之外的rpm包,如mysql要放在%packages字段下,這個字段下可以填寫包名字(這個報名字指的是comps.xml文件中規(guī)定的包),也可以填寫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 在光盤中執(zhí)行腳本
在光盤中執(zhí)行腳本,是通過將腳本放在%post字段中來執(zhí)行的。具體如下:
%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字段詳解
參數(shù)%post代表光盤安裝后所要做的工作。
這里有幾個關(guān)鍵點要注意。%post分兩個階段,這兩個階段的目錄結(jié)構(gòu)是不一樣的
1) 兩個階段
具體使用參數(shù)—nochroot來區(qū)分。我們規(guī)定,使用—nochroot階段為“階段一”,不使用的階段為“階段二”
2) 光盤路徑
在階段一,光盤路徑是/tmp/cdrom, 階段二光盤路徑有待確定,好像就沒有光盤了。
3) 系統(tǒng)目錄路徑
階段一,根目錄不是平常的linux路徑,根目錄的路徑是/mnt/sysimage/
階段二,就是我們熟悉的linux路徑了,根目錄的路徑是/
1.13 光盤啟動畫面修改
光盤啟動文件在目錄isolinux下。其中splash.lss是啟動圖片,lss這是一種圖片格式,是一種很怪異的圖片格式。它限制圖片使用16種顏色,可以通過gif圖片轉(zhuǎn)化而來。
n Gif轉(zhuǎn)lss命令:
giftopnm< splash.gif | ppmtolss16 > splash.lss
n 制作高質(zhì)量的16色gif圖片:
先用photoshop打開任何一張圖片,然后在文件的下拉菜單里,保存的時候選擇“保存為WEB和設(shè)備使用格式“,再然后選擇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復(fù)制到/disk/isolinux/
熱門文章
-
linux系統(tǒng)用什么命令查看端口的占用情況
Linux系統(tǒng)下查找安裝包所在目錄的方法是什么
Linux系統(tǒng)中矢量圖ai格式怎么打開
VMware下配置Linux系統(tǒng)局域網(wǎng)和外網(wǎng)訪問教程
Linux系統(tǒng)條碼打印機安裝教程
linux查看修改系統(tǒng)編碼方法是什么
Linux系統(tǒng)下修改環(huán)境變量PATH路徑有幾種方法
Linux操作系統(tǒng)操作MySQL命令是什么
命令行查看Linux的系統(tǒng)版本和內(nèi)核版本以及機器字長
Linux操作系統(tǒng)上怎么安裝和更新JAVA8