centos7定制linux鏡像,自定制Centos7.3系統鏡像(ISO)

本文主要介紹如何根據官方的Centos鏡像文件,在保留原有默認安裝的RPM包的基礎下,添加自己所需要的RPM包的,最終生成一個自定制版的ISO,節省了寶貴的時間并確保了安裝的定制性。對于其他沒有介紹的修改,后續在實踐中會進行更新。

本文基于Centos7.3版本制作的ISO鏡像,其他版本可能本文介紹的制作過程有所差別。

搭建基礎環境

#yum install createrepo mkisofs isomd5sum squashfs-tools

#mkdir /root/PanISO

將/root/PanISO作為ISO的制作目錄

#mount /dev/cdrom /media/

#cp -r /media/* /root/PanIOS/

#cp??/media/.discinfo /root/PanIOS/

#cp??/media/.treeinfo /root/PanIOS/

# chmod +w /root/PanISO/isolinux/isolinux.cfg

注意:如果你想用Centos7.3的ISO進行掛載也是可以的

#mount -o loop /root/CentOS-7-x86_64-DVD-1611.iso /mnt

修改isolinux.cfg文件,將“append initrd=initrd.img”后面的當前行內容刪除,并加入“ks=cdrom:/isolinux/ks.cfg”。

menu color timeout_msg 0 #ffffffff #00000000none

# Command prompt text

menu color cmdmark0 #84b8ffff #00000000none

menu color cmdline0 #ffffffff #00000000none

# Do not display the actual menu unless the user presses a key. All thatis displayed isa timeout message.

menu tabmsg Press Tabforfull configuration options on menu items.

menu separator # insert an empty line

menu separator # insert an empty line

label linux

menu label^Install CentOS Linux 7kernel vmlinuz

append initrd=initrd.img ks=cdrom:/isolinux/ks.cfg

這步的作用是實現自動化安裝,如果不加上就需要手動配置參數就行下一步安裝了。

修改自動化安裝配置文件

#cp /root/anaconda-ks.cfg /root/PanISO/isolinux/ks.cfg

本次制作iso用的是系統安裝成功生成的默認的anaconda-ks.cfg文件,并未做修改,如果有需求可以自行修改。下面是我使用的示例,并稍加了一些文件配置說明(詳細配置說明可以查找kickstart配置文件):

#version=DEVEL

# System authorization information

auth--enableshadow --passalgo=sha512

# Use CDROM installation media 從光驅安裝

cdrom

# Use graphical install 圖形化安裝

graphical

# Run the Setup Agent on first boot

firstboot--enable

ignoredisk--only-use=sda

# Keyboard layouts 美式鍵盤

keyboard--vckeymap=us --xlayouts='us'# System language 美式英語

lang en_US.UTF-8# Network information 網卡配置

network--bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate

network--hostname=localhost.localdomain

# Root password root用戶的密碼

rootpw--iscrypted $6$Ok9Jcj51va/3x830$/6rLkpu8k2tPCmd7byUBE7wuRexmuoMzp0jAelDRYMAIk9yRL/84mCFrOTp5QYWJNVcEIB7wWgw8byp0r21vT0

# System services

services--disabled="chronyd"# System timezone 時區

timezone Asia/Shanghai --isUtc --nontp

user--name=pan --password=$6$ONSyoQ.S58OJpcnj$jUz6vDadzY5wZ39fr0dEONbI/iNIeVkpRMaUjz9ZJbIqQLPLKqq8ZJWRoDGjolLJfkwmw58Dp5xPhKufAca8y/ --iscrypted --gecos="pan"# System bootloader configuration

bootloader--append="crashkernel=auto" --location=mbr --boot-drive=sda

autopart--type=lvm

# Partition clearing information

clearpart--none --initlabel

%pre

%end

#安裝包的信息%packages

@^minimal

@corekexec-tools%end

%post

%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end%anaconda

pwpolicy root--minlen=6 --minquality=50 --notstrict --nochanges --notempty

pwpolicy user--minlen=6 --minquality=50 --notstrict --nochanges --notempty

pwpolicy luks--minlen=6 --minquality=50 --notstrict --nochanges --notempty%end

%pre表示系統安裝前,%post 表示在系統安裝后執行,這樣可以定制自己的自動化腳本

獲取系統默認安裝的RPM包和需要添加的RPM包

在使用Centos系統安裝完成后會生成/root/install.log,該文件記錄了系統安裝時安裝的RPM包信息。如果沒有該文件,可以手動生成(新安裝的干凈系統):

#rpm -qa >> /root/install.log

清空ISO制作目錄里的Packages和repodata兩個目錄里的所有內容,并根據install.log將所需安裝包放入Packages文件夾內:

# awk '{print $2}'??/root/install.log |xargs -i cp /media/Packages/{}.rpm /root/PanIOS/Packages/

注:如果是手動生成的install.log,將'{print $2}'?改為'{print $0}'?。

因為需要自定制iso,需要預安裝其他的包,將解決好依賴關系的包全部放入/root/PanIOS/Packages/中:

多數情況下我們會根據yum來下載安裝包,下面介紹兩種獲取下載安裝包的方法:

1.修改yum的配置文件,將yum下載的安裝包保存起來

#vim /etc/yum.conf

修改keepcache=1 (1為保存,0為不保存,默認是0)

修改后使用yum安裝的包會保存在“/var/cache/yum/”下。

2.通過yum指令的--downloadonly可以只下載安裝包,不進行安裝

#yum -y install --downloadonly --downloaddir=/root/test/

該指令我會將安裝的包統一放在/root/test/目錄下,yum update同樣可以使用該方法,這樣定制后的ISO中RPM包都是最新版本的。

修改comp.xml文件,定義RPM包組

.xml文件的寫法如下:

組的ID,非數字

組的名字

組的描述

是否預安裝,true或者falsedefault>

是否可見,true或者false

zh#僅在某個語系的安裝界面中顯示,可選項"依賴包" type="conditional">軟件包1

"default">軟件包2

"default">軟件包3......分類的名字,非數字

將顯示在左側列表里

將顯示在下面的描述欄里

組1的ID

組2的ID

簡單來說,一個group中包含若干個RPM包,一個category則包含了若干個group,在安裝系統的時候,在選擇自定義安裝的步驟中,左側的是category,右側是group。

1.group id我們可以在ks.cfg來指定

%packages

@^minimal

@corekexec-tools

示例中的@core就是一個組的名稱,如果我們想添加指定的包組,就可以在ks.cfg文件中指定;

2.在group中的包含的RPM只需要填入完整包的名稱即可,不需要把依賴也添加進去,只需要在Packages文件夾內將所需的依賴添加完整即可;

3.在group中添加完整包的名稱是yum安裝下顯示的包名,比如vim,它的完整包的名稱是vim-enhanced;

4.當然你也可以在Packages中保留完整的Centos系統的RPM包,將自定制的分類和組添加進去,這樣在安裝界面就可以發現我們自定義的category和group。

重新生成repo

#cd PanISO

#createrepo -g comps.xml .

注意:在CentOS下需要根據'.discinfo'來設置'baseurl'(declare -x discinfo=head -1 .discinfo; createrepo -u "media://$discinfo"...); 在CentOS7中不再需要如此做,實際上如果在CentOS7中執行了這個命令,在安裝的過程中,可能會報錯"RepoError after 10 retries: Insufficient space in download directory /run/install/repo/Packages"

在其他版本中可執行如下指令:

# declare -x discinfo=$(head -1 /root/PanIOS/.discinfo)

# createrepo -u "media://$discinfo" -g /root/minimal-x86_64.xml /root/PanIOS/

修改安裝界面圖標背景

以圖標為例,其他操作類似

69b71c4b2d65e8454f2c87e1693e4168.png將安裝界面左上角的該圖標換為75e1d532b5eb2d16f8155177037a1e23.png

解壓

#?unsquashfs?/root/PanISO/LiveOS/squashfs.img

把解壓后的文件進行掛載,然后操作

#mount?-o?loop,rw?squashfs-root/LiveOS/rootfs.img?/media

/media/usr/share/anaconda/pixmaps/sidebar-logo.png為該安裝界面的圖標,只需根據自己的需要替換即可,分辨率要跟原圖保持基本一致,要不會出現圖標過大的情況

將解壓后的文件重新打包

#mksquashfs squashfs-root/ ??squashfs.img

并將生成的squashfs.img替換原來的squashfs.img

制作ISO

#mkisofs -o Pan-7.3.iso -input-charset utf-8 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T -joliet-long ?/root/PanIOS/

#implantisomd5?Pan-7.3.iso

參考:https://www.cnblogs.com/flintlovesam/p/6605788.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539890.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539890.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539890.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

調用打開另外一個APK

2019獨角獸企業重金招聘Python工程師標準>>> Intent mIntent new Intent(); mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ComponentName comp new ComponentName("com.mm.android.direct.gdmssphoneLite", "com.mm.android.direct.gdmsspho…

Jquery Mobile dialog的生命周期

JQuery Mobile對htm5的移動開發絕對是個好用的東西,今天簡單談談JQuery Mobile中的dialog的使用。 1.對話框的彈出。 2.對話框的生命周期。 3.對話框內事件的注冊。 1)第一個問題:對話框的彈出。 如果要彈出一個對話框,可以在頁面…

基本linux命令vi,基本linux和vi命令.pdf

基本linux和vi命令DETIBIHORP ___________________YLTCIR 附錄 BTSSIR 基本的 Linux 和ETUP vi 命令 yM lO nC oS___________________I eH sT uM NOR OF IS TL AAI RR OET PA RMT OIK

集成Java內容倉庫和Spring

JCR模塊 Spring Modules的一部分,JCR模塊的主要目標是:以一種類似Spring主分發包中ORM包的方式,簡化使用JSR-170 API進行開發。特點如下: JcrTemplate,允許執行JcrCallback和異常處理(將需檢查的JCR異常轉換…

jQuery Mobile彈出對話框后不刷新原頁面,保持原頁面內容不變

使用jQuery Mobile開發移動應用程序時,在一個頁面上彈出對話框,關閉對話框后,發現原來的頁面被刷新了。如果原頁面上有一些已經選擇或者填寫的數據,則這些數據就會丟失。這時候,就需要對對話框的返回按鈕做一些處理&am…

mpi4py linux例子,python-3.x – mpi4py中的共享內存

我使用MPI(mpi4py)腳本(在單個節點上),它與一個非常大的對象一起使用.為了讓所有進程都可以訪問該對象,我通過comm.bcast()分發它.這會將對象復制到所有進程并占用大量內存,尤其是在復制過程中.因此,我想分享像指針而不是對象本身.我發現memoryview中的一些功能對于增強進程內對…

c語言源程序最多可能由組成,一個C語言源程序由若干函數組成,其中至少應含有一個()。...

個C語言源由I am interested in the training course, which _____ at Hilton Hotel in Beijing from March 8 to 12, 2018.程序成“萬物莫不有對”體現了中國傳統哲學的矛盾觀。用戶在進行產品的三維設計時,干函可以采用以下( )的設計方法。數組少意識是人腦對客觀…

oracle的背景

oracle簡介 1977年 美國人 Larry 成立軟件開發實驗室 。 1980年 用c/c開發了世界第一個商用關系型數據庫(RDBMS)。 1983年 公司更名為Oracle Corporation(甲骨文公司)。 2009年4月21日,Oracle收購Sun公司。 30多…

Citrix Netscaler版本管理和選擇

Citrix Netscaler版本管理和選擇 來源 http://blog.51cto.com/caojin/1898164 隨著Citrix Netscaler的快速發展,有很多人在維護設備時經常搞不懂Netscaler軟件版本是如何查看和選擇,當前軟件是否需要升級,當前軟件是否穩定等。基于以上問題&a…

樹的基本操作代碼 c語言,二叉樹的基本操作(C語言、源代碼)

二叉樹的基本操作(源代碼)#include "stdio.h"#include "malloc.h"#define MAX 100typedef struct node{int date;struct node *lchild,*rchild;}bitnode,*bitree;bitree createbitree(bitree bt){int m;printf("m");scanf("%d",&m…

oracle實例與數據庫

一、名稱 Oracle數據庫服務器。單叫數據庫或服務器都不全面。 二、組成 oracle數據庫服務器由二部份組成:實例和數據庫 實例: 可理解為對象,看不見。數據庫: 理解為類,看得見的,E:\app\Administrator\…

1.Dao代碼如何編寫?

Dao代碼如何編寫? 1、操作xml數據。數據保存在xml文件里。2、使用jdbc技術。2.1、原始的jdbc操作,connection,statement,resultset。2.2、自定義一個持久層的框架,封裝通用的dao操作方法。2.3、DbUtils組件&#xff0c…

WEB前端面試題匯總整理01

1.JS找字符串中出現最多的字符 例如&#xff1a;求字符串nininihaoa中出現次數最多字符 var str "nininihaoa"; var o {}; for (var i 0, length str.length; i < length; i) {var char str.charAt(i);if (o[char]) {o[char]; //次數加1} else {o[char] 1;…

c語言 文件游程統計,游程 碼表 如何形成

游程 碼表 如何形成求一個程序 將下表用huffman 樹存儲表示用傳統的霍夫曼建立的樹 好像不能形成此碼表。我感覺應該有一個特等的算法。我也試了好幾種方法&#xff0c;感覺都不行&#xff0c;希望大家給點建議。(碼表 要利于編碼和解碼)(部分碼表)白游程 碼子 黑游程 碼子(長…

用2468這四個數字c語言,C語言作業及參考答案.doc

C語言及實驗作業參考做法分支程序設計上機作業&#xff1a;標題4.3三角形判斷描述輸入三條邊的長&#xff0c;輸出這三條邊是否構成等邊三角形、等腰三角形、直角三角形、普通三角形&#xff0c;還是不能構成三角形輸入數據整數a,b,c的值輸出數據等邊三角形、等腰三角形、直角三…

C# WinForm開發系列 - GDI+【轉】

http://blog.csdn.net/blue_sky6/article/details/53811435?locationNum6&fps1 C# WinForm開發系列 - GDI Posted on 2009-07-19 15:23 peterzb 閱讀(48850) 評論(17) 編輯 收藏 UI&#xff08;User Interface&#xff09;編程在整個項目開發過程中是個頗為重要的環節&…

2.ORM思想

一、ORM思想介紹 orm是一種思想&#xff0c;是dao層代碼的一種編寫思想。其中&#xff1a;o代表Object&#xff0c;java對象&#xff1b;r代表Relation&#xff0c;關系型數據庫&#xff1b;m代表Map&#xff0c;java對象和關系型數據庫表的映射關系。該思想主張&#xff1a;1、…

android 字體顏色選擇,Android中顏色選擇器和改變字體顏色的實例教程

易采站長站為您分析Android中顏色選擇器和改變字體顏色的實例教程,其中改變字體顏色用到了ColorPicker顏色選擇器,需要的朋友可以參考下1.構建一張七彩圖:我們經常看到這種樣子的顏色選擇器吧..然后其實右邊的亮度選擇是:這樣我們的代碼就可以進行啦...// 創建七彩圖片private …

3.hello hibernate

一、Hibernate的開發步驟 1、引入jar文件2、配置3、apihibernate的映射文件的配置是不容易的&#xff0c;是重點學習的地方。二、Hello Hibernate 1、數據庫表準備 數據庫名 &#xff1a;test表&#xff1a;DROP TABLE IF EXISTS users; CREATE TABLE users (id int(11) NOT N…

無法連接oralce問題(不斷更新)

1、oracle自帶的sqlplus能連接&#xff0c;但第三方工具如plsqldev不能連接 解決方法&#xff1a;1、確認listener.ora&#xff0c;tnsnames.ora配置文件中的host地址一致。且&#xff1a;listener.ora只能配置主機名。winr&#xff0c;cmd&#xff0c;hostname 獲取主機名。2、…