日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux裁剪—定制自己所需要的linux

發布時間:2025/7/14 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux裁剪—定制自己所需要的linux 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? Linux以其開源思想和啟動速度快為廣大技術人員所喜愛,本文主要講述通過自己對內核的包裝以及對默認程序的設定,來實現自己定制一個自己需要的os系統,并能夠實現開機自動加載網卡,并為網卡配置ip地址,本文不涉及內核的編譯,內核編譯內容將在后續推出,敬請大家期待!

? ?本文是通過宿主機——>目標機的形式來實現。

1、為虛擬機添加一個20G的硬盤,并將磁盤設置為單個文件系統,并命名為smallcentos.vmdk

? 查看宿主機現在的硬盤信息

[root@localhost ~]# fdisk -l /dev/sd[a-z] Disk /dev/sda: 128.8 GB, 128849018880 bytes 255 heads, 63 sectors/track, 15665 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0001c38dDevice Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 7859 62914560 8e Linux LVM Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000

新添加的硬盤被識別為sdb,目標主機將通過加載sdb來啟動

2、在sdb創建兩個基本100M、512M分區,并將文件系統格式化成ext4格式

[root@localhost ~]# echo -e "n\np\n1\n\n+100M\nn\np\n2\n\n+512M\nw" |fdisk /dev/sdb

? ?格式化新建的分區

[root@localhost ~]# mke2fs -t ext4 /dev/sdb1 [root@localhost ~]# mke2fs -t ext4 /dev/sdb2

3.將新創建的分區分別掛載至/mnt/boot目錄和/mnt/sysroot

[root@localhost mnt]# mount /dev/sdb1 on /mnt/boot type ext4 (rw) /dev/sdb2 on /mnt/sysroot type ext4 (rw)

4.安裝grub至指定的分區

[root@localhost mnt]# grub-install --root-directory=/mnt /dev/sdb Probing devices to guess BIOS drives. This may take a long time. Installation finished. No error reported. This is the contents of the device map /mnt/boot/grub/device.map. Check if this is correct or not. If any of the lines is incorrect, fix it and re-run the script `grub-install'. (fd0) /dev/fd0 (hd0) /dev/sda (hd1) /dev/sdb

5.復制/boot目錄中的grub和initrd文件至/mnt/boot目錄中(將啟動文件復制到定制系統中)

[root@localhost grub]# cp /boot/vmlinuz-2.6.32-358.el6.x86_64 /mnt/boot/wangfengvmlinz [root@localhost grub]# cp /boot/initramfs-2.6.32-358.el6.x86_64.img /mnt/boot/wangfenginitramfs.img

6.創建Linux需要的一些基本文件(在定制系統上需要的)

[root@localhost grub]# mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,src,mnt,media,home,root}

7.在宿主機上移植一個可執行的二進制文件和庫到目標機的硬盤上,如ls,cat,mkdir,mount,reboot,useradd,passwd,ifconfig,ip,ping等,

? ? ?此處不再累贅,后面將會附上腳本實現方式

?為了防止內核恐慌,需要為bash創建一個軟鏈接sh

8.在目標機的/boot/grub目錄中創建grub.conf,已實現開機自檢,內容如下

default=0

timeout=10

hiddenmenu

title wangfengLinux

? root(hd0,0)

? kernel /wangfengvmlinuz ro root=/dev/sda2 selinux=0 init=/sbin/init

? initrd /wangfenginitramfs.img

9.為了能夠實現開機啟動網卡,需要將宿主機上的網卡配置文件復制到目標機上,可以通過lsmod查看當前系統的所有模塊,可以通過modinfo 模塊名稱來查看模塊的詳細信息

[root@localhost ~]# lsmod |grep e1000 -->查看網卡的信息 e1000 170646 0


[root@localhost ~]# modinfo e1000 filename: /lib/modules/2.6.32-358.el6.x86_64/kernel/drivers/net/e1000/e1000.ko -->此處為網卡模塊的所在位置 version: 7.3.21-k8-NAPI license: GPL description: Intel(R) PRO/1000 Network Driver author: Intel Corporation, <linux.nics@intel.com> srcversion: 1D4F1E82BB99EA36D320B1B alias: pci:v00008086d00002E6Esv*sd*bc*sc*i* alias: pci:v00008086d000010B5sv*sd*bc*sc*i* alias: pci:v00008086d00001099sv*sd*bc*sc*i* alias: pci:v00008086d0000108Asv*sd*bc*sc*i* alias: pci:v00008086d0000107Csv*sd*bc*sc*i* alias: pci:v00008086d0000107Bsv*sd*bc*sc*i* alias: pci:v00008086d0000107Asv*sd*bc*sc*i* alias: pci:v00008086d00001079sv*sd*bc*sc*i* alias: pci:v00008086d00001078sv*sd*bc*sc*i*[root@localhost ~]# mkdir -p /mnt/sysroot/lib/modules [root@localhost ~]# cp /lib/modules/2.6.32-358.el6.x86_64/kernel/drivers/net/e1000/e1000.ko /mnt/sysroot/lib/modules/e1000.ko

10.為了使系統能夠開機自動掛載一些文件系統和初始化一些服務,需要在目標機上的/sbin/目錄下創建init文件已實現需求,內容如下

#!/bin/bash

echo -e "Welcome to \033[32m Wangfeng\033[0m Linux"

mount -n -t proc /proc proc

mount -n -t sysfs sysfs /sys

insmod /lib/modules/e1000.ko

ifconfig lo 127.0.0.1/8

ifconfig eth0 192.168.1.200/24

route add -net 0.0.0.0 gw 192.168.1.253

/bin/bash

開啟宿主機,可以看到效果

也可以ping通外網

附:拷貝庫文件和二進制文件的腳本

#!/bin/bash

options(){

for i in $*;do

? dirname=`dirname $i`

? [ -d /mnt/sysroot$dirname ] || mkdir -p /mnt/sysroot$dirname

? [ -f /mnt/sysroot$i ]||cp $i /mnt/sysroot$dirname/

done

}

while true;do

read -p "Enter a command : " pidname

?[[ "$pidname" == "quit" ]] && echo "Quit " && exit 0

?bash=`which --skip-alias $pidname`

?if [[ -x $bash ]];then

? ?options `/usr/bin/ldd $bash |grep -o "/[^[:space:]]\{1,\}"`

? ?options $bash

?else

? ?echo "No such command!"

? fi

done

腳本簡要說明:

? 大家都知道一個命令的運行需要依賴于二進制文件和庫文件,本實例以cat為例,列舉cat的二進制文件所在的路徑和文件所在的路徑

二進制文件所在的位置 [root@localhost ~]# which cat /bin/cat

依賴的庫文件

[root@localhost ~]# ldd `which cat` |grep -o "/[^[:space:]]\{1,\}" /lib64/libc.so.6 /lib64/ld-linux-x86-64.so.2

由于本人水平有限,請各位大神批評指正,同時為在昆明3.01事件中遇難的同胞默哀,愿逝者安息,傷者平安!!


轉載于:https://blog.51cto.com/wangfeng7399/1366537

總結

以上是生活随笔為你收集整理的linux裁剪—定制自己所需要的linux的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。