[马哥学习笔记]Linux系统裁剪之制作带网络功能的可启动linux

知识基础:

系统启动流程:POST-->BIOS(boot sequence)-->GRUB(bootloder(stage1:MBR;stage2:grub目录中))-->kernel(initrd)-->SHELL

制作步骤:

1、给目标磁盘分区

  两个:

    宿主机:/dev/sdb1 /dev/sdb2

  将/dev/sdb1挂载至/mnt/boot,/dev/sdb2挂载至/mnt/sysroot

mount /dev/sdb1 /mnt/boot
mount /dev/sdb2 /mnt/sysroot

2、安装grub至目标磁盘

grub-install --root-directory=/mnt /dev/sdb

3、复制内核和initrd文件

1 cp /boot/vmlinuz-2.6.32-279.el6.i686 /mnt/boot/vmlinuz
2 cp /boot/initramfs-2.6.32-279.el6.i686.img /mnt/boot/initramfs.img

4、创建目标文件的根系统文件

 mkdir -pv /mnt/sysroot/{/etc/rc.d,usr,var,media,home,root,src,sys,boot,tmp,lib,lib64,dev,proc,bin,sbin}

  利用bincp脚本移植bash,ls等至目标根系统文件

  bincp.sh如下: 

 1 #!/bin/bash
 2 #
 3 DEST=/mnt/sysroot
 4 libcp(){
 5   LIBPATH=${1%/*}
 6   [ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH
 7   [ ! -e $DEST${1} ] && cp $1 $DEST$LIBPATH && echo "copy lib $1 finished"
 8 }
 9 bincp(){
10   CMDPATH=${1%/*}
11   [ ! -d $DEST$CMDPATH ] && mkdir -p $DEST$CMDPATH
12   [ ! -e $DEST${1} ] && cp $1 $DEST$CMDPATH
13
14   for LIB in `ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`;do
15     libcp $LIB
16   done
17 }
18 read -p "Your Command: " CMD
19 until [ $CMD == ‘q‘ ]; do
20   ! which $CMD &> /dev/null && echo "Wrong command" && read -p "Input again: " CMD && continue
21   COMMAND=`which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"`
22   bincp $COMMAND
23   echo "copy $COMMAND finished."
24   read -p "Continues: " CMD
25 done

5、编写/mnt/sysroot/sbin/init文件

 1 #!/bin/bash
 2 #
 3 echo -e  "Welcome to \033[34m My Tiny\033[0m Linux"
 4 mount -n -t proc proc /proc
 5 mount -n -t sysfs sysfs /sys
 6 insmod /lib/modules/e1000.ko
 7 [ $? -eq 0 ] && echo -e "Load e1000 modules succeed                                   [ \033[32mOK\033[0m ]"
 8 ifocnfig lo 127.0.0.1/8
 9 ifconfig eth0 192.168.0.225/16
10 mount -n -o remount,rw /dev/sda2 /
11 /bin/bash

6、为grub提供配置文件

1 default=0
2 timeout=5
3 title Test Linux
4     root (hd0,0)
5     kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/sbin/init
6     initrd /initramfs.img

到此,一个带有网络功能的linux便制作完成了。

时间: 2024-11-05 22:30:13

[马哥学习笔记]Linux系统裁剪之制作带网络功能的可启动linux的相关文章

马哥学习笔记七——LAMP编译安装之MYSQL

1.准备数据存放的文件系统 新建一个逻辑卷,并将其挂载至特定目录即可.这里不再给出过程. 这里假设其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录. 2.新建用户以安全方式运行进程: # groupadd -r mysql # useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql # chown -R mysql:mysql /mydata/data 3.安装并初始化my

马哥学习笔记三十二——计算机及操作系统原理

缓存方式: 直接映射 N路关联 缓存策略: write through:通写 write back:回写 进程类别: 交互式进程(IO密集型) 批处理进程(CPU密集型) 实时进程(Real-time) CPU: 时间片长,优先级低IO:时间片短,优先级高 Linux优先级:priority 实时优先级: 1-99,数字越小,优先级越低 静态优先级:100-139,数据越小,优先级越高 实时优先级比静态优先级高 nice值:调整静态优先级   -20,19:100,139   0:120 ps

马哥学习笔记八——LAMP编译安装之PHP及xcache

1.解决依赖关系: 请配置好yum源(可以是本地系统光盘)后执行如下命令: # yum -y groupinstall "X Software Development" 如果想让编译的php支持mcrypt扩展,此处还需要下载如下两个rpm包并安装之: libmcrypt-2.5.7-5.el5.i386.rpm libmcrypt-devel-2.5.7-5.el5.i386.rpm 2.编译安装php-5.4.13 首先下载源码包至本地目录. # tar xf php-5.4.13

马哥学习笔记二十二——高可用集群原理

HA Resource:资源 FailOver:故障转移 FailBack:故障转回 资源粘性:资源是否倾向于留在当前节点 Messaging Layer:集群服务信息层,基于UDP互相传递心跳信息,集群事务信息等 heartbeat(v1,v2,v3) heartbeat v3:heartbeat,pacemaker,cluster-glue corosync cman keepalived ultramonkey CRM:(cluster resource manager)集群资源管理器,统

马哥学习笔记二十四——分布式复制快设备drbd

DRBD: 主从 primary: 可执行读.写操作 secondary: 文件系统不能挂载 DRBD: dual primay, 双主(基于集群文件系统的高可用集群) 磁盘调度器:合并读请求,合并写请求: Procotol:drbd数据同步协议 A: Async, 异步  数据发送到本机tcp/ip协议栈 B:semi sync, 半同步  数据发送到对方tcp/ip协议 C:sync, 同步  数据到达对方存储设备 DRBD Source: DRBD资源 资源名称:可以是除了空白字符外的任意

马哥学习笔记二十一——LVS DR模型

kernel parameter: arp_ignore: 定义接收到ARP请求时的响应级别: 0:只要本地配置的有相应地址,就给予响应: 1:仅在请求的目标地址配置请求到达的接口上的时候,才给予响应: arp_announce:定义将自己地址向外通告时的通告级别: 0:将本地任何接口上的任何地址向外通告: 1:试图仅向目标网络通告与其网络匹配的地址: 2:仅向与本地接口上地址匹配的网络进行通告: curl命令选项: --cacert <file> CA证书 (SSL) --capath &l

马哥学习笔记三十——tomcat

Java体系结构包含四个独立却又彼此相关的技术: Java程序设计语言 Java API Java Class文件格式 JVM: Java Virtual Machine JVM的实现方式: 1.一次性解释器,解释字节码并执行: 2.即时编译器(just-in-time complier) 依赖于更多内存缓存解释后的结果 3.自适应编译器 缓存20%左右代码,提高80%左右的速度: 运行时数据区: 线程私有内存区: 程序计数器 java虚拟机栈 线程共享内存区: 方法区 堆:java自动内存回收

马哥学习笔记二十五——ISCSI协议,架构及其安装配置

ISCSI监听在tcp/3260端口 iSCSI Target:iscsi-target-utils 客户端认正方式: 1.基于IP 2.基于用户,CHAP tgtadm:命令行工具,模式化命令 --mode 常用模式:target,logicalunit,account target --op new.delete.show.update.bind.unbind logicalunit --op new.delete account --op new.delete.bind.unbind --

马哥学习笔记二十六——MySQL主从复制

配置MySQL复制基本步骤: 一.master 1.启用二进制日志 log-bin = master-bin log-bin-index = master-bin.index 2.选择一个惟一server-id server-id = {0-2^32} 3.创建具有复制权限的用户 REPLICATION SLAVE REPLICATION CLIENT 二.slave 1.启用中继日志 relay-log = relay-log relay-log-index = 2.选择一个惟一的server