Build your own linux system by yourself

转载 2007年10月08日 14:23:00
Build Your Own Linux System By Yourself
Jimsu,shanghai,10/14/2005

1,#cd /usr/src/linux-2.4;
2,#make mrproper;
3,#make menuconfig;
4,修改Makefile中的版本信息;
5,#make dep;
6,#make clean;
7,#make bzImage;
8,#make modules;
9,#make modules_install;
10,#make install;

分步解释各个命令含义和作用:
make menuconfig:配置内核。
make dep:编译相关的文件。
make clean:清除上次编译的目标文件。
make bzImage:编译一个压缩的内核,开始编译。
make modules:编译modules。
make modules_install:将modules等拷贝到/lib/modules下面。
make install:将bzImage,initrd等拷贝到/boot下,并更新lilo、grub。
不过,完成之后还必须将/etc/lilo.conf或者/etc/grub.conf中的root=/修改成对应的物理磁盘位置,比如:root=/dev/sda2 或者root=/dev/ram

vmware下的Scsi磁盘是BusLogic的,不过,建议编译成module,不然容易和/etc/modules.conf中的冲突。
vmware里面的设备基本上都是虚拟设备,网卡用的是AMD PCNET32网卡。
lib/modules/2.4.21/build/drivers/net,里面的pcnet32.c便是。
生成/lib/moduels/2.4.xxxx/下的驱动,modules和modules.dep文件。
当然modules.dep文件也可以执行#depmod 2.4.xx

当前kernel的编译config文件:一般位于/boot下,比如/boot/config-2.4.xxxxx;,我们使用make bzImage的时候都是使用的当前配置文件,比如:/usr/src/linux-2.4xx/.config

redhat主要组件:
kernel: vmlinuz-2.4.x.img.gz
root_fs:initrd-2.4.x.img.gz

linux启动步骤:
...;
bootloader;
kernel;
initrd.img->init进程->run /linuxrc script->mount real root device;
root_fs: maybe in real disk device or RAMDisk;
/etc/inittab->rc.S->fork mingetty;
login(PAM);
bash shell;
...;

root fs与root device:
root fs是最终运行程序的起点.
root device是只最终运行的root fs所在的设备,比如是/dev/ram,或者/dev/sda2,甚至是通过tftp,nfs等网络启动设备。

loadbooter: lilo与grub
linux常用的就是lilo和grub,在服务器平台和嵌入式平台上还有类似的miniboot,uboot,ppcboot等。
Firmware:服务器一般都有自己的firmware来加强服务器的安全功能,比如监视系统硬件故障,维护RAID磁盘阵列等。
lilo用在早期的linux发行版本中,一般使用/etc/lilo.conf来配置,然后执行#lilo即可让当前的配置生效。
grub使用/etc/grub.conf文件,执行#grub-install /dev/sda命令让当前设置生效,当然也可以直接用grub的命令来设置grub.


RAMDisk制作:
ramdisk是将磁盘中常使用的一些文件放在内存中,这样可以提高系统运行的性能,不过如果你系统的物理内存不是很多就不要考虑了;
这里假设制作一个initrd的RAMDISK镜像文件,过程如下:
#dd if=/dev/zero of=/tmp/myram bs=1k count=16000
#mke2fs /tmp/myram
#mount -o loop  /tmp/myram /mnt
#cd /mnt;
然后进行制作initrd.img RAMDISK的内容,制作结束后#cd /;
#sync
#umount /mnt
#cd /tmp/myram
#gzip -9 /tmp/myram ####生成myram.gz文件
#cp /tmp/myram.gz /boot/initrd-2.4.x-y.img
#修改/etc/lilo.conf
#lilo
#reboot

initrd.img.gz介绍:
这是linux init初始化的镜像文件。你可以通过#gzip -d initrd.img.gz; mount -o loop initrd.img mnt来查看到底里面有哪些文件。
里面的文件内容与你要作什么有关系,我们可以进行定制。
linuxrc:这个是最先被执行的脚本,一般驱动可在此加载。
/initrd
/etc/
/lib/
/bin,/sbin
/dev
举个/linuxrc的例子:
#!/bin/ash
/bin/mount -t proc /proc /proc
/bin/insmod /lib/ext3.o
/bin/insmod /lib/scsi_mod.o
/bin/echo 0x0100 > /proc/sys/kernel/real-root-dev  ##不改变root fs,如果是磁盘上的root fs,则还需要修改root fs位置,继续执行#/bin/pivot_root / /initrd;

终端说明:
虚拟控制台:6 tty
串口console:

shell说明:
bash,ash,csh

重要文件说明:
/etc/modules.conf
/etc/lilo.conf
/etc/grub.conf
/etc/issue;
/etc/pam.d/...
/etc/rc.S
/etc/inittab
/etc/fstab
/etc/passwd,shadow
/etc/termcap(vi需要的)

troubleshooting:
can’t mount root fs:
insmod failed:
PAM:

如何跳过login过程:
在嵌入式系统中,有时候需要跳过登录过程,只要在/etc/inittab里面直接调用bash,而不去启动虚拟终端程序mingetty和login即可。(不过这样是不太友好!!!!)
/etc/inittab做如下修改:
id:3:initdefault:
si::sysinit:/etc/rc.S
1:2345:respawn:/bin/bash  #直接启动shell,tty1是第一个虚拟终端;
###格式:终端id:运行等级:动作:命令及其参数###

----------------------------------------
对于2.4.x升级到2.6.x,则麻烦一些。
2.6的内核比2.4要强大,这是不争的事实。在make menuconfig时可选中如下项:
处理器:建议使用Intel xeon,关于"Processor type and features"选项, 选上"Preemptible Kernel"选项, 这是2.6.x抢占式内核优于2.4.x内核的重要原因之一。
网卡:建议使用intel e1000,选中NAPI。
建议给2.6打上RTIRQ补丁,对设备性能有所提升。

升级2.6内核,你必须将ext3编译到内核,而不能是module,而且grub/lilo中的root=lable=/也必须修改成真实的设备。

在编译之前,必须下载module-init-tools,因为2.6与2.4的modules处理方式不一样,2.6中所有驱动都是.ko。
如果不安装module-init-tools,在升级2.6内核,make modules_install时会提示depmod不对,必须先安装module-init-tools,建议安装module-init-tools-3.1-0.pre5.3.i386.rpm,不过一定要注意备份原来modutils,必须也下载一个modutils的rpm包,我的系统是redhat EL3,其对应的modutils是modutils-2.4.25-9.EL,这可以通过rpm -qa|grep modutils看到当前2.4.x下安装的modutils版本到底是多少。
#rpm -e --nodeps modutils
#rpm -ivh module-init-tools
如果下次要使用2.4,则必须在2.6下面删除module-init-tools重新安装modutils-2.4.25。

在make install时,有可能出现:
"all of your loopback devices in use"
则需要加载loop.o模块,执行:
#insmod /lib/modules/old-kernel-version/fs/blocks/loop.o
old-kernel-version是指当前运行的kernel版本,如果是在2.4下面编译的,则表示是2.4.x。

关于:SOCKET filter option
有人提到2.4里面有"CONFIG_FILTER"而2.6.x里面没有"CONFIG_FILTER",其实2.6.X内核里面此项设置默认就是=yes的。

从2.4升级到2.6后,原来的2.4可能就启动不来了(我的服务器启不来),但是我在vmware倒是启来了。
启动后的/boot/System.map会自动链接到对应内核版本的System.map。

*********举例**********************

------------------/linuxrc--------------------
#!/bin/ash
/bin/mount -t proc /proc /proc
/bin/echo 0x0100 > /proc/sys/kernel/real-root-dev

-----------------etc/rc.S---------------------
#!/bin/bash
/bin/mount -a
/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 192.168.0.211

-----------------etc/inittab--------------------
id:3:initdefault:
si::sysinit:/etc/rc.S
1:2345:respawn:/bin/bash 
 

Build Your Own Angularjs 读书笔记(AngularJS牛逼的地方在于它内嵌了一个表达式到Function对象的编译器。。。当然还有DI框架)

Build Your Own Angularjs 读书笔记 目录  [隐藏]  1 项目配置2 作用域3 表达式与过滤器4 模块与依赖注入5 辅助函数6 指令 项目配置[编辑] npm ...
  • cteng
  • cteng
  • 2017年05月31日 19:41
  • 1327

ANDROID 编译源码6.0 问题记录

1、Ubuntu 系统Ubuntu 14.04 LTS, 2、android源码来自于清华TUNA镜像源     http://aosp.tuna.tsinghua.edu.cn/android/ 3...
  • sp_StudyAndoird
  • sp_StudyAndoird
  • 2016年08月06日 22:15
  • 10836

ubuntu下安装 英伟达 显卡驱动遇到的问题

问题1 在装驱动之前退出X serverERROR: You appear to be running an X server; please exit X before installing. Fo...
  • dark5669
  • dark5669
  • 2016年11月14日 12:09
  • 1981

Mcgraw-Hill.-.Build.Your.Own.Combat.Robot.-.2002.-.(By.Laxxuss).pdf

  • 2012年06月11日 07:00
  • 7.82MB
  • 下载

Build Your Own Oracle RAC 10g Release 2 Cluster on Linux and FireWire

Build Your Own Oracle RAC 10g Release 2 Cluster on Linux and FireWire by Jeffrey Hunter - OTN...
  • xujinyang
  • xujinyang
  • 2011年09月28日 14:35
  • 802

《Build Your Own Wicked WordPress Themes》- PDF 英文原版

  • 2017年12月01日 04:45
  • 17.63MB
  • 下载

Quantitative Trading - How to Build Your Own Algorithmic Trading Business.

  • 2017年11月30日 15:37
  • 3.39MB
  • 下载

Wiley.Build.Your.Own.Security.Lab.A.Field.Guide.for.Network.Testing.Apr.2008.iNTERNAL.eBook-DD

  • 2008年12月19日 08:41
  • 8.58MB
  • 下载

Build Your Own PaaS with Docker(PACKT,2015)

  • 2015年05月26日 17:00
  • 7.5MB
  • 下载

Build your own 2D Game Engine and Create Great Web Games 无水印pdf

  • 2017年10月05日 14:14
  • 8.24MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Build your own linux system by yourself
举报原因:
原因补充:

(最多只允许输入30个字)