[马哥学习笔记]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文件
cp /boot/vmlinuz-2.6.-.el6.i686 /mnt/boot/vmlinuz
cp /boot/initramfs-2.6.-.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如下:
#!/bin/bash
#
DEST=/mnt/sysroot
libcp(){
LIBPATH=${%/*}
[ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH
[ ! -e $DEST${1} ] && cp $1 $DEST$LIBPATH && echo "copy lib $1 finished"
}
bincp(){
CMDPATH=${1%/*}
[ ! -d $DEST$CMDPATH ] && mkdir -p $DEST$CMDPATH
[ ! -e $DEST${1} ] && cp $1 $DEST$CMDPATH for LIB in `ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`;do
libcp $LIB
done
}
read -p "Your Command: " CMD
until [ $CMD == 'q' ]; do
! which $CMD &> /dev/null && echo "Wrong command" && read -p "Input again: " CMD && continue
COMMAND=`which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"`
bincp $COMMAND
echo "copy $COMMAND finished."
read -p "Continues: " CMD
done
5、编写/mnt/sysroot/sbin/init文件
#!/bin/bash
#
echo -e "Welcome to \033[34m My Tiny\033[0m Linux"
mount -n -t proc proc /proc
mount -n -t sysfs sysfs /sys
insmod /lib/modules/e1000.ko
[ $? -eq ] && echo -e "Load e1000 modules succeed [ \033[32mOK\033[0m ]"
ifocnfig lo 127.0.0.1/
ifconfig eth0 192.168.0.225/
mount -n -o remount,rw /dev/sda2 /
/bin/bash
6、为grub提供配置文件
default=
timeout=
title Test Linux
root (hd0,)
kernel /vmlinuz ro root=/dev/sda2 selinux= init=/sbin/init
initrd /initramfs.img
到此,一个带有网络功能的linux便制作完成了。
[马哥学习笔记]Linux系统裁剪之制作带网络功能的可启动linux的更多相关文章
- Hibernate 马士兵 学习笔记 (转)
目录(?)[+] 第2课 Hibernate UML图 第3课 风格 第4课 资源 第5课 环境准备 第6课 第一个示例Hibernate HelloWorld 第7课 建立Annotation版本的 ...
- linux系统裁剪
linux系统裁剪 1.简介 最近为了更加了解linux系统的启动过程,通过对系统进行裁剪的的方式来了解整个启动流程.这里记录下过程. 2.环境介绍 vmware12 + centos6.5 + xs ...
- Symfony2 学习笔记之系统路由
mfony2 学习笔记之系统路由 漂亮的URL绝对是一个严肃的web应用程序必须做到的,这种方式使index.php?article_id=57这类的丑陋URL被隐藏,由更受欢迎的像 /read/ ...
- springmvc学习笔记(10)-springmvc注解开发之商品改动功能
springmvc学习笔记(10)-springmvc注解开发之商品改动功能 标签: springmvc springmvc学习笔记10-springmvc注解开发之商品改动功能 需求 开发mappe ...
- Java NIO 学习笔记(四)----文件通道和网络通道
目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...
- Linux系统Yum仓库制作
在使用Linux系统的时候,通常需要安装许多软件,Linux系统通常安装软件有源码包安装(文件格式:.tar.gz 或.tar.bz2:安装过程:解压.环境检查.编译和安装).Rpm包安装(文件格式: ...
- linux鸟哥学习笔记
Linux学习笔记 Linux档案权限和目录配置 目录如果没有x权限,则无法进入该目录 改变文件和属性 chgrp: 改变档案所属的群组 chown:改变档案的拥有者 chmod:改变档案的权限,SU ...
- Linux 系统裁剪笔记 3
说到裁减Linux,无非是为了减小磁盘占用或者是为了某些特定场合的应用(如嵌入式系统).以RedHat 7.3为例,其最小安装仍然达到了300M,这不得不让人对一直号称小而全的Linux系统感到疑惑. ...
- Linux 系统裁剪笔记1
1.什么裁剪? 本篇文章的主要目的是让笔者和读者更深的认识Linux系统的运作方式,大致内容就是把Linux拆开自己一个个组件来组装,然后完成一个微型的Linux系统.下面,让我们来实现吧..写的不好 ...
随机推荐
- java发送http的get、post请求[转]
原文链接:http://www.cnblogs.com/zhuawang/archive/2012/12/08/2809380.html package wzh.Http; import java.i ...
- Ibatis动态拼装sql,常用标签总结及举栗子。
今天得到项目经理一项任务,就是拼装sql,第一次见到,不是太懂,赶紧回来睡一觉再说,由于这次的项目orm使用的是ibatis框架,所以需要使用动态拼装sql,或者是ognl语言,这门语言不是专属于ib ...
- readelf与动态库
使用arm-linux-gcc编译的可执行文件可能会无法在开发板上执行,并提示:-/bin/sh xxx not found 解决办法: 在主机上使用readelf -d xxx 来查看该程序所需要的 ...
- MVC与webservice上传文件(图片和视频),希望帮且到一些朋友
最近做一个项目,要把图片和视频传到服务器上(网站与图片服务器分开),在网上找了好久,没找到完整的资料. 自己也折腾了半天,才把完整的代码实现完.可能好多朋友都有实现过,没分享代码吧,写得不好希望不要见 ...
- Android基本布局
android基本布局有三种:LinearLayout,RelativeLayout,FrameLayout. 一.LinearLayout 1,这是一种垂直布局(或者水平布局),可以通过下面这一句来 ...
- response设置相应头的方法
response 设置响应头的常用几种方法 1.Location 的用法 response.setStatus(302)//临时定向响应码 response.setHeader("Locat ...
- jQuery 的三种获取值的方式
本节内容主要介绍的是如何使用jQuery中的.html(),.text()和.val()三种方法,用于读取,修改元素的html结构,元素的文本内容,以及表单元素的value值的方法.jQuery中为我 ...
- 修改Android系统属性SystemProperties.set("sys.powerctl", "shutdown")关机分析
简介: 从之前的博文中我们提到过,关机流程中最后是通过修改Android属性进行关机操作(SystemProperties.java通过JNI调用访问系统属性),当然我们也可以通过adb命令修改And ...
- SQL排序
- ASP.NET空网页生成默认代码注释
当在Visual Studio下生成ASP.NET空网页时,默认生成代码: <%@ Page Language="C#" AutoEventWireup="true ...