学习啦>学习电脑>操作系统>Linux教程>

linux系统怎么制作

春健分享

  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 class="con">

linux系统怎么制作

春健分享

  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

  将以上内容保存为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/

    666636