参考

https://gist.github.com/pauljeff/4b9ad551cb6c35870d7c
https://www.redhat.com/archives/kickstart-list/2014-August/msg00010.html
http://www.alexlinux.com/centos-7-kickstart-example
http://www.smorgasbork.com/2014/07/16/building-a-custom-centos-7-kickstart-disc-part-1/ https://github.com/joyent/mi-centos-7
http://ngyuki.hatenablog.com/entry/2014/07/08/224533
http://qiita.com/rprev/items/255718ac40b71778c78a #livecd
http://minimal.linux-bg.org https://github.com/CentOS/sig-core-livemedia
http://billauer.co.il/blog/2012/06/livedvd-kickstart-modified
http://multix.jp/headless-liveboot-centos
https://github.com/jonlives/centosdojo_resources #book
Live Linux CDs: Building and Customizing Bootables
The Official Damn Small Linux Book: The Tiny Adaptable Linux That Runs on Anything

usb-disk和usb-cdrom

u盘可制做usb-disk和usb-cdrom两种类型的引导盘。usb-cdrom是用iso写入u盘制成的。usb-cdrom使用isolinux引导,usb-disk使用syslinux引导,同时syslinux.cfg和isolinux.cfg里面的引导位置不同,需要使用cdrom设备或者label。另外iso9600分为通用模式与混合模式(hybrid iso),有些服务器仅支持混合模式的u盘引导。
#查看iso光盘镜像模式
file -s my.iso
#转换通用模式到混合模式
isohybrid my.iso

制作usb-disk安装盘

我建议使用usb-disk方式制作引导盘,修改引导盘内容比较方便。我使用unbutu系统,文件位置与centos略有不同。

#u盘复位(写主引导区)
sudo dd if=/dev/zero of=/dev/sdb bs=512 count=1 #分区
sudo fdisk /dev/sdb
n 分成1个主分区,使用全部容量
t 指定分区类型 选择c W95 FAT32 (LBA)
a 设置可引导
w 写入 #格式化,卷标(label)为BOOT
sudo mkfs.vfat -n 'BOOT' /dev/sdb1 #写入MBR数据,注意是设备名sdb,不是分区名sdb1
sudo dd conv=notrunc bs=440 count=1 if=/usr/lib/SYSLINUX/mbr.bin of=/dev/sdb #写入syslinux引导,,注意是分区名sdb1,不是设备名sdb
sudo syslinux /dev/sdb1 #拷贝syslinux必须文件
cp -rfp /usr/lib/syslinux/modules/bios/{libcom32.c32,libutil.c32,vesamenu.c32} /media/ken/BOOT #拷贝内核引导文件
sudo mount /data/iso/CentOS-7-x86_64-Minimal-1511.iso /mnt
cp -rfp /mnt/isolinux/{initrd.img,vmlinuz} /media/ken/BOOT
#syslinux启动菜单 使用传统网卡命名
cat > /media/ken/BOOT/syslinux.cfg << EOF
default vesamenu.c32
prompt 0
timeout 150 label linux
menu default
menu label ^Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:sdb1:/ quiet net.ifnames=0 biosdevname=0 label kickstart
menu label Install CentOS 7 of ^Kickstart
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:sdb1:/ net.ifnames=0 biosdevname=0 ks=hd:sdb1:/ks.cfg
EOF
#如果是usb-cdrom方式,hd:sdb1需要变动
#kickstart,/media/ken/BOOT/ks.cfg,这个文件挂载u盘做为本地源,使用eth传统网卡名,支持gpt分区,网卡dhcp
lang en_US.UTF-8
keyboard us
timezone Asia/Shanghai install
cdrom
text network --onboot=yes --device=eth0 --bootproto=dhcp --ipv6=auto --activate
network --onboot=yes --device=eth1 --bootproto=dhcp --ipv6=auto --activate
network --hostname=localhost.localdomain auth --enableshadow --passalgo=sha512
rootpw --iscrypted $6$vE77HiPeSYicTrZH$YHPVeEss83QgJ9t736MkNpw5NqiG18GsXPIhFqKDCe6eN3W33IOnVgFtw6xArfUzP.n7UN2QKNowXYzqjQOfE. #zerombr
bootloader --boot-drive=sda --location=mbr
ignoredisk --only-use=sda
part swap --fstype='swap' --ondisk=sda --size=8000
part biosboot --fstype='biosboot' --size=1
part / --fstype='xfs' --ondisk=sda --size=50000
part /opt --fstype='xfs' --ondisk=sda --size=1 --grow firewall --disabled
selinux --disabled
firstboot --disabled
services --enabled=network,rc-local --disabled=NetworkManager,postfix
reboot %packages
@core
%end %pre
clearpart --drives=sda --all --initial
/usr/sbin/parted -s /dev/sda mklabel gpt
%end %post
for nic in eth0 eth1
do
/usr/bin/cat > /etc/sysconfig/network-scripts/ifcfg-$nic << EOF
DEVICE=$nic
BOOTPROTO=dhcp
#IPADDR=10.0.10.101
#NETMASK=255.255.255.0
ONBOOT=yes
EOF
done /usr/bin/cat > /etc/sysconfig/network << EOF
NETWORKING=yes
#GATEWAY=10.0.10.1
EOF cd /etc/yum.repos.d
mkdir bak
mv -f CentOS* bak/ /usr/bin/mkdir /mnt/usb
/usr/bin/echo 'mount -o ro /dev/sdb1 /mnt/usb' >> /etc/rc.local
/usr/bin/chmod 755 /etc/rc.local /usr/bin/cat > /etc/yum.repos.d/usb.repo << EOF
[centos7-usb]
name=CentOS-\$releasever - usb
baseurl=file:///mnt/usb/repo
gpgcheck=0
enabled=1
EOF
%end
#制作本地yum源
1 yum -y install yum-utils
reposync - synchronize a remote yum repository to a local directory using yum to retrieve packages
使用reposync可将rpm文件下载到本地 2 yum -y install net-tools vim wget --downloaddir=/root/repo --downloadonly
也可将rpm文件下载到本地 3 yum -y install createrepo
createrepo -d -p --update /root/repo 将/root/repo目录拷贝至/media/ken/BOOT下面

其他

#写iso镜像到u盘
dd if=/opt/iso/CentOS-7-x86_64-Minimal-1511.iso of=/dev/sdb #u盘克隆
ddrescue /dev/sdb /dev/sdc -v -f #生成系统密码
python -c 'import crypt; print(crypt.crypt("123456", "$6$MySalt"))' #用虚拟机测试iso
qemu-kvm -m 2048 -vga qxl -cdrom filename.iso
or
qemu-system-x86_64 -m 1024 -vga qxl -cdrom my-livecd.iso
/dev/shm
/sys/fs/cgroup
/run/install/isodir # 挂载引导U盘(sdb1)分区
/run/install/repo # 挂载inst.stage2指向的目标,这里是引导U盘(sdb1)分区内centos7的iso文件,挂载源/dev/loop0 /mnt/sysimage # 目标硬盘(sda)的root分区
/mnt/sysimage/dev/shm # tmpfs
/mnt/sysimage/opt # 目标硬盘(sda)的opt分区

制作一个livecd

1 制作一个live cd,尽可能的减少容量,ssh服务,curl,python环境,网

2 被安装服务器远程pxe引导这个live cd,上面启动ssh服务和http接口服务,自动将被安装服务器的信息post给安装控制服务器,自动分配的ip信息。

yum -y install livecd-tools
git clone https://github.com/CentOS/sig-core-livemedia
cd sig-core-livemedia/kickstarts
#https://github.com/rhinstaller/livecd-tools/tree/master/imgcreate
#livecd-tools调用python模块imgcreate,生成引导img import imgcreate
ks = imgcreate.read_kickstart("foo.ks")
imgcreate.ImageCreator(ks, "foo").create()

livecd-creator --cache=/root/cache --tmpdir=/root/tmp --config=ks.cfg --name=my-livecd

#kickstart - ks.cfg
bootloader --location=mbr --append='norhgb quiet net.ifnames=0 biosdevname=0'
clearpart --all
firstboot --disabled
firewall --disabled
selinux --disabled
auth --enableshadow --passalgo=sha512
rootpw --iscrypted $6$MySalt$e0fnxWlZ3UCN4HnSSx6U7zQGgzX7AlGBfZ75msCser0B2ZPRHBmwZjOVW6Cai/1Ba5f7B5uTsucedaHsEd8W6/ install
lang en_US.UTF-8
network --bootproto dhcp --device eth0 --onboot yes
part / --fstype=ext4 --size=1024
reboot
zerombr repo --name=base --baseurl=http://yum.local/centos/7/os/$basearch
repo --name=update --baseurl=http://yum.local/centos/7/updates/$basearch
repo --name=extra --baseurl=http://yum.local/centos/7/extras/$basearch
repo --name=local --baseurl=file:///root/rpms %packages
basesystem
kernel
rootfiles
firewalld
aic94xx-firmware
linux-firmware
vim-minimal
net-tools
#raidcfg #dell tools
#syscfg #dell tools
%end %pre
%end %post
%end
/mnt/livecd
├── isolinux
│   ├── boot.cat
│   ├── initrd0.img
│   ├── isolinux.bin
│   ├── isolinux.cfg
│   ├── vesamenu.c32
│   └── vmlinuz0
└── LiveOS
├── osmin.img
└── squashfs.img

定制centos安装iso的更多相关文章

  1. CentOS 6.4一键自动化安装ISO镜像光盘

    下载CentOS-6.4-x86_64-minimal.iso 1 http://mirrors.163.com/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-mi ...

  2. 基于CentOS6定制自己的ISO安装光盘

    警告:转载请注明出处 https://www.cnblogs.com/BoyTNT/p/9322927.html  1.目标 >> 基于CentOS-6.10-x86_64-minimal ...

  3. 定制CentOS (Redhat AS 5.1)安装盘

    CentOS(Redhat)提供了一套完整的自动化安装机制,利用该机制,我们可以自己定制无人值守的自动安装光盘,也可以进行系统裁减,甚至可以以CentOS为基础制作自己软件系统的系统安装盘.以下全部内 ...

  4. CentOS6.7定制化制作ISO

    CentOS6.7定制化制作ISO 以CentOS 6.7-minimal为例. 欢迎大家转载,并保留原文出处.内容若有错误或补充,请联系:szyzln@126.com 本文主要讲解如何在已有官方Ce ...

  5. Centos7.5的定制化安装

    一.前言 关于定制化centos7.5的镜像真的是历经波折,前前后后.来来回回尝试了不少于20次,上网找了各种关于定制7系统的方法,都没有成功... 但最终功夫不负有心人终于解决了,O(∩_∩)O哈哈 ...

  6. linux学习(一)-----vm、centos安装

    安装vm和Centos 1)先安装 virtual machine ,vm12 2)再安装 Linux (CentOS 6.8) 3)原理示意图,这里我们画图说明一下 VM 和 CentOS 的关系. ...

  7. CentOS 本地ISO 挂载并配置本地软件源

    CentOS 挂载ISO镜像文件为本地源 操作系统:CentOS5.5 ISO文件:CentOS5.5的ISO镜像一个 操作步骤: 一.挂载iso文件到挂载点 [root@server ~ ]# mo ...

  8. vmware linux centos安装

    首先,网上下载vmware,下载后直接安装即可,没什么难度,就不多说了 接下来在vmware中点击create a New Virtual Machine,启动安装界面 选择自定义方式安装,再点击ne ...

  9. 烂泥:centos安装LVM方式

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 最近开始打算学习有关LVM逻辑卷的知识,由于以前没有接触过,看了很多有关这方面的视频.但是一直不深入.今天就先不管了,先把centos系统安装在LVM上 ...

随机推荐

  1. 原生select默认显示为空胡fish覅神农大丰今年圣诞节奋笔疾书发撒可交付你说的尽快发那段时间南方大厦尽可能放你的所发生的你富家大室耐腐蚀的看法呢尽快发你上课积啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊撒啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊分你束带结发你看

    下拉框默认为空: <select> <option value="" class="blank"></option> < ...

  2. Windows环境下安装pip,方便你的开发

    1.在以下地址下载最新的PIP安装文件:http://pypi.python.org/pypi/pip#downloads 2.解压安装 3.下载Windows的easy installer,然后安装 ...

  3. 解决IAR无法跳转的问题

    在工程的C编译器选项里的预编译添加$TOOLKIT_DIR$\inc可以搞定.

  4. 手把手写一个html_json信息源

    html_json用于从网页里提取json数据. 这里用新浪读书的书讯举个例子,手把手写一个html_json信息源. 打开新浪读书的首页,可以看到页面下方有最新.书讯.童书.小说等几个Tab,这里我 ...

  5. zendstuido10 配置spket插件

    必备:Zend Studio.Spket Plugin.sdk.jsb3.百度 安装过程中出现了两种错误,导致最后安装spket时报错,一种是提示“The file "F:\study\to ...

  6. KNN近邻算法

    K近邻(KNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表.kNN算法的核 ...

  7. python获取文件大小

    python获取文件大小 # !/usr/bin/python3.4 # -*- coding: utf-8 -*- import os # 字节bytes转化kb\m\g def formatSiz ...

  8. Python内存数据库/引擎

    1 初探 在平时的开发工作中,我们可能会有这样的需求:我们希望有一个内存数据库或者数据引擎,用比较Pythonic的方式进行数据库的操作(比如说插入和查询). 举个具体的例子,分别向数据库db中插入两 ...

  9. TIOBE Index for January 2016(转载)

    Java has won the TIOBE Index programming language award of the year. This is because Java has the la ...

  10. 在Eclipse中使用JUnit4进行单元测试(中级篇)

    我们继续对初级篇中的例子进行分析.初级篇中我们使用Eclipse自动生成了一个测试框架,在这篇文章中,我们来仔细分析一下这个测试框架中的每一个细节,知其然更要知其所以然,才能更加熟练地应用JUnit4 ...