参考

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. 【P1379】天才的约数和

    来自GDOI2007,原题已不可考-- 又自己做出来了好开心,找特殊性是个关键的切入点 原题: 这天周航遇到了靳泽旭. 周航:"我是天才!" 靳泽旭:"你为什么是天才?& ...

  2. WingIDE中文乱码问题解决方法

    WingIDE中文乱码问题解决方法 安装完WingIDE后,首次运行python脚本时,若脚本中含有UTF-8中文,在Debug I/O输出框中,全部变成了乱码. 这时其实我们设置下WingIDE的编 ...

  3. Android 图片上传

    上传方式:两种   1:Base64() (1):获取图片路径,将图片转为String 类型 (2):通过post提交的方式.以键值对的方式上传到服务器,和一般的提交关键字没有任何区别. (3):这种 ...

  4. Socket 通信(基础原理、实时聊天系统雏形)

    什么是 Socket? Socket 英文直译为"孔或插座",也称为套接字.用于描述 IP 地址和端口号,是一种进程间的通信机制.你可以理解为 IP 地址确定了网内的唯一计算机,而 ...

  5. unity, 按类型查找文件

  6. HTTP POST 提交问题

    最近用http+post方式实现了系统间数据交互的需求. 常用的方式是 application/json方式直接post json对象 . 告诉服务器数据格式将会是 { Name : 'John Sm ...

  7. Debian MySQL 卸载和安装 PHP安装

    如果是apt-get安装的 sudo apt-get --purge remove mysql-serversudo apt-get --purge remove mysql-clientsudo a ...

  8. Can't connect to MySQL server on localhost (0)

    配置双主的时候,由于一台始终连不上另一台. 于是我使用root账号远程登录查看,填入账户密码点击连接,结果就提示这样的错误. 一开始以为是权限的问题,于是就授与所有权,结果还是报一样的错. 重新创建一 ...

  9. MySQL服务 - MySQL程序的配置文件、参数、变量查看

    查看配置文件及读取顺序 MySQL的配置文件以.cnf结尾,可能会有多个,而不同版本的MySQL程序的读取配置文件的路径也都不同,要想获取MySQL读取配置文件的顺序可以通过以下指令查看: shell ...

  10. [系统开发] 一个基于Django和PureCSS的内容管理系统

    这是我刚开发的一套基于Django和PureCSS的内容管理系统,目标是优雅.简洁.实用,目前功能还在完善中. 系统参考了网上的教程,除了文章管理.搜索.RSS,还增加了类别管理.用户管理,以及评论管 ...