精简 linux
?????????????????????精簡linux
精簡linux是為了將linux系統(tǒng)使用固態(tài)盤等小容量存儲設備來代替pc機上面的硬盤,簡約成本,提高速率,延長使用壽命,方便移植。所以呢,那我們呢就來親手打造一個屬于自己的linux,體驗一下其中的過程,更深層次的去了解linux系統(tǒng)啟動的過程以及系統(tǒng)吧!!!
??????制作過程分以下幾大步:
一.?準備階段?
?????需要一個宿主機,一個干凈的硬盤(大概20G容量),由于實驗條件限制,所以本人選用了虛擬機,在linux系統(tǒng)上多加一塊硬盤,以sdb命名,完成后取出來即可
二.制作階段
?????1.格式化新硬盤,并進行分區(qū)
??????命令如下:fdisk?-l???查看硬盤和分區(qū)
????????????????fdisk??/dev/sdb???進行分區(qū)???p???分為3個主分區(qū)
?????????????????將第三個分區(qū)的id號改為82???t??82
?????????????????對第一個分區(qū)執(zhí)行?a
進行格式化???用到的命令??mkfs??-t??ext3??/dev/sdb1?(/dev/sdb2)
創(chuàng)建掛載點????mkdir?/mnt/boot/????mkdir???/mnt/sysroot/
掛載?????mount?/dev/sdb1???/mnt/boot????mount???/dev/sdb2???/mnt/sysroot
用mount?查看掛載狀況?
??2.打造過程
(1).grub引導程序??
安裝grub引導程序時?
命令????grub-install?--root-directory=/mnt??/dev/sdb??
運行grub命令
進入/mnt/boot/??查看是否有grub目錄?有則成功??反之失敗????然后進入grub目錄
創(chuàng)建grub.conf文件
?
?
?
?
(2).linux內核
查看宿主機中/boot目錄中的內容,
有這個文件?,將這個文件拷貝到?我們linux的boot目錄下就行了
cp?/boot/vmlinux-2.6.18-164.e15????/mnt/boot
?
(3).linux的驅動initrd文件
?宿主機boot目錄下同樣有這樣一個文件
-rw-------?1?root?root?2602252?Jul?20?00:22?initrd-2.6.18-164.el5.img
在~目錄下創(chuàng)建一個目錄??假設為abc
進入abc目錄下?將initrd文件解壓到該目錄下????zcat??/boot/initrd-2.6.18-164.el5.img???|cpio???-id
查看abc下的文件
利用vim??init??將??resume?LABEL=SWAP-sda3??注釋掉??位于87行
重新將他打包??find?.?|cpio?-o?-H?newc??--quiet?|gzip?-9?-n?>/mnt/boot/initrd.gz
編輯新的grub菜單?如上圖
?
(3).?建立根目錄
?在sysroot下創(chuàng)建以下目錄?
Bin??boot?dev?etc?home?lib?media?mnt??misc??net??opt?proc?root?sbin?selinux??srv
Sys??tftpboot??tmp??usr??var??
Mkdir??usr/bin???
Mkdir???usr/sbin
Mkdir??etc/rc.d
用which?命令?查出?init的位置
將init??拷貝到sysroot/sbin??下??????cp??/sbin/init??/mnt/sysroot/sbin
找到庫文件??并拷貝到相應位置??
執(zhí)行l(wèi)dd??命令???查出依賴的鏈接庫文件
linux-gate.so.1?=>??(0x00626000)
libsepol.so.1?=>?/lib/libsepol.so.1?(0x00585000)
libselinux.so.1?=>?/lib/libselinux.so.1?(0x005cd000)
libc.so.6?=>?/lib/libc.so.6?(0x003d5000)
libdl.so.2?=>?/lib/libdl.so.2?(0x00546000)
/lib/ld-linux.so.2?(0x003b7000)
除了不帶lib的文件??只要帶lib都要拷????需要拷的有?bash??init??ls??cat?
cp??/lib/libsepol.so.1???/mnt/sysroot/lib/
其余的同上?一一拷貝???如果可以?自己可以編一個shell腳本???一次性拷貝
?
(4).創(chuàng)建Linux的/etc/inittab、/etc/rc.d/rc.sysinit文件
切換到sysroot/etc下
根據(jù)宿主機的inittab信息?創(chuàng)建新的inittab??
需要以下文件??因為是簡易的?故僅列出自己需要的?
21si::sysinit:/etc/rc.d/rc.sysinit
?22?
?23?l0:0:wait:/etc/rc.d/?sysshutdown
?29?l6:6:wait:/etc/rc.d/sysreboot
在rc.d?目錄下?創(chuàng)建兩個腳本??一個是sysshutdown???一個是?sysreboot
Sysshutdown??
#!/bin/bash?
Exec??/sbin/halt??-p?(拷貝)
Sysreboot
#!/bin/bash
Exec??/sbin/reboot??-f???(強制)
為兩個腳本文件加上可執(zhí)行???a+x??
同時把halt?和reboot??拷貝的/mnt/sysroot/sbin的相應目錄下
?
進入rc.d目錄下??創(chuàng)建一個rc.sysinit
#!/bin/bash
echo?-e?"\033[31m?mylinux??\033[0m"
/bin/bash
Chmod?a+x??rc.sysinit
?
將hostname??ifconfig??ping??拷貝到/mnt/sysroot/
怎么初始化你的主機名字呢??
if?[?-f?/etc/sysconfig/network?];?then
?????.?/etc/sysconfig/network
?fi
if?[?-z?"$HOSTNAME"?-o?"$HOSTNAME"?=?"(none)"?];?then
??????HOSTNAME=localhost
?Fi
?/bin/hostname??$HOSTNAME
?
追加到rc.sysinit??在etc目錄下創(chuàng)建sysconfig
執(zhí)行??cp?/etc/sysconfig/network??sysconfig/??將宿主機的sysconfig文件拷貝到我們linux的sysconfig下
?
想要設置網絡,將以下模塊考到?/mnt/sysroot/lib/modules
?
設置內核參數(shù)
Set?-p?
設置網絡參數(shù)
/sbin/insmod??/lib/moudules/mii.ko???/sbin/insmod??/lib/moudules/pcnet32.ko?
/sbin/ifconfig?eth0?192.168.1.44/24
/sbin/ifconfig?lo?127.0.0.1/8
以上信息要追加到rc.sysinit中哦
然后是將?insmod??ifconfig??拷貝到?/mnt/sysroot/etc
?
最后是?要想在啟動的界面上有圖片??
需要先安裝本地yum
先創(chuàng)建掛載點,掛載光盤??,再進入/etc/yum.conf?,?
編輯?yum.repos.d/rhel-debuginfo.repo?????修改baseurl:file:///mnt/cdrom/Server??
用yum安裝??gimp
執(zhí)行?gimp
將圖片傳到系統(tǒng)中???用gimp做圖片??具體自己試試就知道???不再作介紹??
?
Sync
Sync???把相關信息同步到他們要寫入的磁盤設備上去
?
3.安裝到其他機器上??將硬盤換成我們做的這個??啟動??
?
這個linux?還不完善?大家呢喜歡什么或者需要什嗎?,就添加什么?,是我們的linux不斷強大起來吧!!!
?
未完待續(xù)。。。。
?
轉載于:https://blog.51cto.com/7572433/1266591
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
- 上一篇: hibernate 使用别名查询
- 下一篇: linux ls -l 详解