国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux Centos 內(nèi)核替換與ISO制作詳細指南

本文詳細介紹了在CentOS系統(tǒng)中進行內(nèi)核替換和制作自定義ISO鏡像的步驟和注意事項。

首先,介紹了在替換內(nèi)核過程中可能遇到的各種錯誤,并提供了解決方法,如處理vmlinuz權限問題、initrd.img加載失敗、內(nèi)核模塊體積過大等。接著,給出了制作ISO鏡像的步驟,包括將原生ISO內(nèi)容復制到磁盤、制作initrd.gz(或initrd.img)和kernel-xxx.rpm等操作。同時,提供了Anaconda安裝日志及相關信息的查看方法。本文適用于需要定制CentOS系統(tǒng)安裝過程或進行內(nèi)核升級的用戶,提供了一份詳細的操作指南。

各臨時路徑說明

將內(nèi)核解包在/root/kernel/linux-4.14.141
原生ISO文件內(nèi)容復制到/ISO/
將initrd解包在/root/initrd/
將內(nèi)核模塊安裝在/root/modinstall
將squashfs解包在/root/,rootfs.img會在/root/squash-root/LiveOS/rootfs.img

過程中遇到的錯誤與解決方法

  • vmlinuz沒有增加執(zhí)行權限。

  • initrd.img無法被加載,改用gzip進行壓縮,修改isolinux/isolinux.cfg中的initrd.img為initrd.gz。

  • initrd.img體積龐大,有兩種解決辦法,一是在編譯內(nèi)核時用make modules_install INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=/root/modinstall,build ko的時候會加上–strip-debug,這樣會讓build出的ko大小大幅縮小;二是編譯完成后,在lib/modules/中執(zhí)行find . -name *.ko -exec eu-strip –remove-comment {} \;

  • 在VMware測試并不需要修改grub.conf或grub.cfg,因為VMware用的是ISOLINUX引導方式,只需要修改isolinux/isolinux.cfg文件。

  • 制作kernel的rpm有兩種辦法,一種是使用rpmrebuild修改舊版rpm,替換里面的vmlinuz、initrd.img,修改SPEC文件,但這種方式需要修改的內(nèi)容較多,容易找不到文件,故采取另一種方式;另一種方法是直接使用make rpm-pkg -j64。

  • genisoimage命令的選項-b使用錯誤(-b后面應該跟引導鏡像isolinux.bin)導致isolinux.cfg變成了二進制文件,所以無法引導系統(tǒng)。

  • squashfs.img和initrd.gz中的lib/modules/4.14.141必須一致,否則進入anaconda安裝界面會報錯。

  • 如果修改了Packages里的包,一定要執(zhí)行createrepo命令,根據(jù)comps.xml重新生成repodata,否則最終安裝kernel的rpm時會報錯error populating transaction。

  • 系統(tǒng)安裝進入dracut的可能原因是沒有找到光盤介質(zhì),在grub.cfg中的inst.stage2=hd:LABEL=后面的名稱一定要和genisoimage的-V參數(shù)后面的名稱相同。

其他可能失敗的解決方法

  • 可以通過修改.vmx配置文件或啟動虛擬機時選擇打開電源時進入固件來進入BIOS設置,選擇光盤為第一啟動項,不過一般不會是這個原因。

  • 如果內(nèi)核rpm缺少依賴拋出kernel panic,rpm -qpR kernel-xxx.rpm查看依賴,修改/root/kernel/linux-4.14.141/scripts/package下的mkspec腳本,make rpm-pkg時,會調(diào)用到該腳本來生成內(nèi)核RPM的SPEC文件,PreReq表示依賴類型為install前,這樣就能先于內(nèi)核rpm安裝依賴。

替換內(nèi)核全過程

編譯內(nèi)核

$ cd /root/kernel/
$ tar -xvJf linux-4.14.141.tar.xz # 或分兩步,xz -d linux-4.14.141.tar.xz,tar -xvf linux-4.14.141.tar
$ cd linux-4.14.141
$ make mrproper
$ cp /boot/config-xxx ./.config # 使用系統(tǒng)中的config文件
$ yum install -y ncurses-devel bc flex ...
$ make menuconfig # 要選擇XFS相關功能
$ make bzImage -j8 && make modules -j8 && make modules_install INSTALL_MOD_PATH=/root/modinstall/ INSTALL_MOD_STRIP=1 -j8

掛載系統(tǒng)ISO并復制ISO內(nèi)容到磁盤

$ mkdir /mnt/cdrom /ISO
$ mount -o loop /root/CentOS-xxx.iso /mnt/cdrom
$ rsync -a /mnt/cdrom/ /ISO/ --exclude=repodata/ # 后續(xù)通過createrepo命令生成repodata
$ find /ISO/ -name TRANS.TBL -exec rm -f {} \; -print # 或者在上一步加上--exclude=TRANS.TBL參數(shù)

制作initrd.gz(或xz壓縮方式的initrd.img)

$ cp /ISO/isolinux/initrd.img /root/
$ xz -d /root/initrd.img
$ mkdir /root/initrd
$ cd /root/initrd
$ cpio -ivmd < ../initrd.img
$ cp -r /root/modinstall/lib/modules/4.14.141/ /root/initrd/lib/modules/
$ rm -rf /root/initrd/lib/modules/3.10.x # 刪除ISO中原來版本的內(nèi)核模塊目錄
$ find ./ | cpio --quiet -H newc -o | gzip -9 -c >../initrd.gz # 如果使用xz -z打包,文件名就為initrd.img,系統(tǒng)安裝時會自動判斷為xz打包方式

制作kernel-xxx.rpm并替換

$ make rpm-pkg -j8 # 或者按下面的操作使用rpmrebuild修改舊版rpm
$ cp /root/rpmbuild/RPSS/x86/kernel-4.14.141.rpm /ISO/Packages

還有兩個方法:
通過源碼包和spec文件構建rpm:

rpmbuild kernel.spec

通過源碼包重修改:
參考我的SRPM重修改方法。

復制bzImage和initrd.gz到isolinux/

$ cp /root/kernel/linux-4.14.141/arch/x86/boot/bzImage /ISO/isolinux/vmlinuz
$ chmod +x /ISO/isolinux/vmlinuz # 內(nèi)核文件的權限必須至少是755
$ cp /root/initrd.gz /ISO/isolinux/initrd.gz

修改isolinux.cfg

$ vi isolinux.cfg
label linux
  menu label ^Install CentOS 7
  menu default
  kernel vmlinuz
  append initrd=initrd.gz inst.stage2=hd:LABEL=CentOS7

menu default表示默認指向Install CentOS 7
然后定義內(nèi)核文件、initrd的名字以及ISO的label,該label和后面genisoimage命令的-V選項保持一致。

修改并替換squashfs.img

$ cp squashfs.img /root
$ cd /root
$ unsquashfs squashfs.img
$ mkdir /rootfs
$ mount squashfs-root/LiveOS/rootfs.img /rootfs
$ cp -r /root/modinstall/lib/modules/4.14.141/ /rootfs/modules/
$ rm -rf /rootfs/modules/3.10.x
$ umount /rootfs
$ unsquashfs -stat squashfs.img # 查看壓縮方式和block大小
$ mksquashfs squashfs-root/ newsquashfs.img -comp xz -b 131072 -Xbcj x86 -Xdict-size 131072 # 根據(jù)原來的squashfs.img設置參數(shù)
$ cp newsquashfs.img /ISO/LiveOS/squashfs.img

制作comps.xml,生成repodata

$ cp /mnt/cdrom/repodata <隨機值>-comps.xml /ISO/comps.xml # 如果新增了包,要修改該文件,替換內(nèi)核rpm包不需要修改該文件
$ cd /ISO
$ createrepo -g comps.xml . # 否則Packages會校驗失敗,報error populating transaction錯誤

制作ISO鏡像

$ genisoimage -joliet-long -V CentOS7 -o centos7.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -cache-inodes -T -eltorito-alt-boot -b images/efiboot.img -no-emul-boot /ISO # -eltorito-alt-boot -e images/efiboot.img -no-emul-boot用于EFI引導模式

如果沒有ISOLINUX引導,只使用EFI引導:

$ genisoimage -joliet-long -V CentOS7 -o centos7.iso -b EFI/BOOT/grubaa64.efi -c boot.catalog -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -cache-inodes -T -eltorito-alt-boot  -e images/efiboot.img -no-emul-boot /ISO

執(zhí)行該命令使ISO能寫入U盤被BIOS引導,否則只能通過DVD等引導:

$ isohybrid centos7.iso

安裝系統(tǒng)

anaconda安裝日志

可以參考:

1、Python---Anaconda安裝

2、Anaconda安裝與配置(Python環(huán)境及庫依賴)

3、【Anaconda安裝與環(huán)境配置教程】

一般性的anaconda消息anaconda.log,由anaconda運行的所有外部程序信息anaconda.program.log,可擴展的存儲模塊信息anaconda.storage.log,網(wǎng)絡接口配置相關信息anaconda.ifcfg.log,yum安裝軟件包的信息anaconda.yum.log,硬件相關的系統(tǒng)信息anaconda.syslog。注意如果系統(tǒng)安裝失敗,則這些文件的信息會一起放在一個anaconda-tb-identifier文件中,這里identifier是一個隨機字符串。文章來源地址http://www.zghlxwxcb.cn/article/750.html

到此這篇關于Linux Centos 內(nèi)核替換與ISO制作詳細指南的文章就介紹到這了,更多相關內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

原文地址:http://www.zghlxwxcb.cn/article/750.html

如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請聯(lián)系站長進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Linux系統(tǒng)【Centos7】更新內(nèi)核更新軟件詳細教程

    更新內(nèi)核: 1. 打開終端,輸入命令 sudo yum update,等待更新完成。 2. 重啟系統(tǒng),輸入命令 sudo reboot。 3. 在 GRUB 引導界面,選擇最新的內(nèi)核版本,按下回車鍵進入系統(tǒng)。 4. 在終端中輸入命令 uname -r,查看當前使用的內(nèi)核版本是否更新成功。 更新軟件: 1. 打開終端,輸入命令

    2024年02月09日
    瀏覽(23)
  • Centos7 制作系統(tǒng)鏡像iso文件

    Centos7 制作系統(tǒng)鏡像iso文件

    這部分針對有系統(tǒng)備份需求,防止系統(tǒng)遭受意外狀況,無法緊急恢復。整體備份內(nèi)容較大,建議考慮后再進行操作 本次使用 mondo 軟件進行備份及制作鏡像,基本上是一鍵到底 mondo 官網(wǎng) 1.1 安裝mondo 1.2 制作備份鏡像 選擇備份到本地磁盤 Hard disk 選擇備份路徑,輸入備份ISO鏡像

    2024年01月15日
    瀏覽(68)
  • centos 7鏡像(iso)下載圖文教程(超詳細)

    centos 7鏡像(iso)下載圖文教程(超詳細)

    聲明:本教程為本人學習筆記,僅供參考 聲明:本教程為本人學習筆記,僅供參考 本教程將提供兩種方式下載centos 7 系統(tǒng)鏡像 1、阿里巴巴開源鏡像站 2、清華大學開源軟件鏡像站 在下載之前,你先的搞清楚你的電腦支持多少位的,有64與32位之分,本教程以64位為例。 1、瀏

    2024年02月07日
    瀏覽(25)
  • Windows 10 鏡像 ISO 文件下載:詳細指南與安全建議

    Windows 10 鏡像 ISO 文件下載:詳細指南與安全建議

    Windows 10 是微軟最受歡迎的操作系統(tǒng)之一,為了安裝或升級到 Windows 10,你需要獲得官方的 Windows 10 鏡像 ISO 文件。在本篇博客中,我們將提供詳細的指南,教你如何下載 Windows 10 鏡像 ISO 文件,并且分享一些建議,確保你的下載過程安全可靠。 1. 官方渠道 下載 Windows 10 鏡像

    2024年02月12日
    瀏覽(24)
  • 【Linux】掛載CentOS 并配置 iso鏡像文件為 yum 源

    有時候會遇到內(nèi)網(wǎng)安裝CentOS時,運維人員總是最小化安裝,但是當你安裝其他應用的時候,例如:MySQL,Nginx, Redis 系統(tǒng)中缺少的依賴很多。目前只有把ISO安裝文件作為yum源,這樣在安裝編譯其他的應用的時候,就不會缺少依賴了。 要將 ISO 文件掛載為 YUM 源,您可以按照以下

    2024年02月16日
    瀏覽(27)
  • 【Linux】Centos yum源替換

    【Linux】Centos yum源替換

    YUM是基于RPM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。 CentOS 8操作系統(tǒng)版本結束了生命周期(EOL),Linux社區(qū)已不再維護該操作系統(tǒng)版本。建議您切換到Anolis或Alinux。如果

    2024年02月08日
    瀏覽(27)
  • 【Linux】切換內(nèi)核版本(Centos)

    【Linux】切換內(nèi)核版本(Centos)

    0 : CentOS Linux (3.10.0-1160.83.1.el7.x86_64) 7 (Core) 1 : CentOS Linux (3.10.0-1160.80.1.el7.x86_64) 7 (Core) 2 : CentOS Linux (3.10.0-1127.el7.x86_64) 7 (Core) 3 : CentOS Linux (3.10.0-1160.83.1.el7.x86_64.debug) 7 (Core) 4 : CentOS Linux (3.10.0-1160.80.1.el7.x86_64.debug) 7 (Core) 5 : CentOS Linux (0-rescue-0e5781d77781441b97290d7bad5663e2) 7 (Core) 將配

    2024年02月11日
    瀏覽(23)
  • Linux內(nèi)核移植:內(nèi)核的啟動過程分析、啟動配置與rootfs必要文件

    ?內(nèi)核啟動通常包括4個階段: iROM代碼啟動(BIOS啟動)。開發(fā)板上電后,先執(zhí)行內(nèi)部iROM中的固化代碼,類似于BIOS,執(zhí)行通電自檢和初始化過程,包括初始化CPU、存儲器、時鐘、總線等一些必要的硬件資源。 啟動引導加載程序BootLoader。根據(jù)啟動引腳的電平,讀取相應的存儲

    2024年02月13日
    瀏覽(767)
  • 【Linux】教你用進程替換制作一個簡單的Shell解釋器

    【Linux】教你用進程替換制作一個簡單的Shell解釋器

    本章的代碼可以訪問這里獲取。 由于程序代碼是一體的,本章在分開講解各部分的實現(xiàn)時,代碼可能有些跳躍,建議在講解各部分實現(xiàn)后看一下源代碼方便理解程序。 我們想要制作一個簡單的 Shell 解釋器,需要先觀察Shell是怎么運行的,根據(jù) Shell 的運行狀態(tài)我們再去進行模

    2024年02月02日
    瀏覽(107)
  • Linux 內(nèi)核模塊加載過程之重定位

    1.1.1 struct load_info info 加載模塊只需要讀入模塊的二進制代碼即可,然后執(zhí)行init_module系統(tǒng)調(diào)用。 我們先介紹下struct load_info info結構體。 struct load_info 是一個用于加載模塊時存儲相關信息的數(shù)據(jù)結構。 該結構體包含以下成員: name:模塊的名稱,以字符串形式存儲。 mod:指向

    2024年02月10日
    瀏覽(625)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包