linux的定制和发布(二)
Linux的发布
有时候希望将定制好的Linux移植到其他的机器上使用,所以我们将定制好的Linux制作
成安装光盘的形式,可以方便在其他机器上安装。
为此我们要先制作一个引导系统,由引导系统引导我们进行一步步的安装。其中引导系统
有grub、initramfs、内核三部分组成,相当于一个微型linux,下面我们详细介绍制作过程。
必要的准备
1、安装cdrtools-2.01
安装这个包是为了使用其包含的命令mkisofs,这个是建立光盘镜像的工具。该
包的编译安装命令为:
tar xvf cdrtools-2.01.tar.bz2
cd cdrtools-2.01
patch -Np1 -i ../cdrtools-2.01-mkisofs_iconv-1.patch
patch -Np1 -i ../cdrtools-2.01-ascii-2.patch
make INS_BASE=/usr DEFINSUSR=root DEFINSGRP=root
make INS_BASE=/usr DEFINSUSR=root DEFINSGRP=root install &&
install -v -m755 -d /usr/share/doc/cdrtools-2.01 &&
install -v -m644 README* ABOUT doc/*.ps /usr/share/doc/cdrtools-2.01
2、安装cpio
用来生成initramfs.igz。编译安装命令为:
patch -Np1 -i ../cpio-2.9-gcc43_inline-1.patch &&
./configure CPIO_MT_PROG=mt \
--prefix=/usr \
--bindir=/bin \
--libexecdir=/tmp
\
--with-rmt=/usr/sbin/rmt &&
make
安装脚本
安装脚本的内容为:
1、分区硬盘并格式化
2、解压缩定制的linux系统压缩包
3、调整grub
/install/INSTALL文件:
#!/bin/sh
#create partitions
fdisk /dev/sda <<
"EOF"
n
p
1
1
+512M
n
p
2
w
q
EOF
#setup swap
mkswap /dev/sda1
swapon
/dev/sda1
#prepare partition
mkfs -t ext3 /dev/sda2
mount /dev/sda2
$LFS
#extract the lfs
cd $LFS
tar xvf /install/lfs.tar.gz
#setup
grub
mount --bind /dev $LFS/dev
chroot $LFS
grub
grub> root (hd0,
1)
grub> setup (hd0)
grub> quit
exit
umount
$LFS/dev
#end
cd /
umount $LFS
reboot
Initramfs构建
Initramfs简介
在2.6版本的linux内核中,都包含一个压缩过的cpio格式的打包文件。当内核启
动时,会从这个打包文件中导出文件到内核的rootfs文件系统,然后内核检查rootfs
中是否包含有init文件,如果有则执行它,作为PID为1的第一个进程。这个init进程负
责启动系统后续的工作,包括定位、挂载“真正的”根文件系统设备(如果有的话)。
如果内核没有在rootfs中找到init文件,则内核会按以前版本的方式定位、挂载根分区,
然后执行/sbin/init程序完成系统的后续初始化工作。这个压缩过的cpio格式的打包文件
就是initramfs。
Initramfs的文件和目录
1、确定需要的可执行文件,如:ls, cat, tar, fdisk, mount等常用命令
的可执行文件,并查找这些可执行文件所依赖的库文件,将它们复制到initramfs对应
的目录中。可以在网上找一些抓库脚本程序,根据实际情况稍做修改,运行脚本即可自动
完成上述功能。也可参考本例的脚步文件。
2、init文件
#!/bin/sh
/etc/rc.d/init.d/rc
sysinit
/bin/bash --rcfile /etc/profile
3、 rc 启动脚本
使用如下命令将启动脚本复制到initramfs下对应的目录:
cp /etc/udev initramfs/etc/
-a
mkdir -p
initramfs/etc/rc.d/init.d
cp -a
/etc/rc.d/init.d/{functions,mountfs,mountkernfs,rc,udev,udev_retry}
initramfs/etc/rc.d/init.d/
mkdir -p
initramfs/etc/rc.d/rcsysinit.d
cp
-a /etc/rc.d/rcsysinit.d/{S00mountkernfs,S10udev,S40mountfs,S50udev_retry} initramfs/etc/rc.d/rcsysinit.d/
mkdir -p
initramfs/etc/sysconfig
cp -a /etc/sysconfig/rc
initramfs/etc/sysconfig/rc
4、一些配置文件和目录
创建挂载目录/proc, /sys,
/media/cdrom;
复制udev 相关的文件: cp -a /lib/udev/devices
$WORK/tmpfs/lib/udev/,并让udev 自动创建/dev/cdrom 链接;
/etc/fstab文件:
/dev/root /
ext2 defaults 0 0
/dev/cdrom /media/cdrom iso9660
defaults 0 0
proc /proc proc
defaults 0 0
sysfs /sys sysfs
defaults 0 0
devpts /dev/pts devpts
defaults 0 0
/etc/profile文件:
export
PATH=/bin:/usr/bin:/sbin:/usr/sbin
export TERM=xterm
export
HISTSIZE=1000
export PS1="\w# "
alias ls="ls --color"
alias ll="ls
-lh"
alias la="ll -a"
生成Initramfs
find . | cpio -H newc -o | gzip > $WORK/iso/boot/initramfs.igz
grub启动
/boot/grub/menu.lst 文件如下:
default 0
timeout 5
color green/black
light-green/black
title bootcd
root(cd)
kernel /boot/kernel
initrd /boot/initramfs.igz
root (cd)表示从光盘启动;
kernel /boot/kernel 表示kernel文件的位置;
initrd /boot/initramfs.igz
表示initramfs.igz文件的位置。
结束
生成ISO文件
mkisofs \
-R \
-b boot/grub/stage2_eltorito \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-o $WORK/bootcd.iso \
$WORK/iso
测试
gwlinux1.0_setup.iso 在vmware6.5上测试安装通过。安装方法简单描述如下:
1、 在vmware6.5中安装时默认硬盘驱动为LSI logic,请设置为BUS logic;
2、 该版本linux的网络暂时没有配置,请设置为不使用网络连接;
3、 使用iso引导进入安装界面
4、 命令提示符中输入:/install/INSTALL,执行完后如果不能自动重启,手动重启即可。
5、 重启进入gwlinux1.0
Gwlinux1.0_setupk可在以下硬件平台上正常安装:e5000+g31+WD160G硬盘+dvd-rom。
但仍存在一些遗留问题:
1、 启动盘启动时会提示cdrom不存在,这时,需要先输入:mount /dev/sr0 /media/cdrom,再按步骤安装;
2、 安装结束时reboot命令不起作用,要手动重启;
3、 硬盘分区方式固定,缺乏灵活性;
4、 其他硬件平台还未验证,对某些硬件可能不支持。
linux的定制和发布(二)的更多相关文章
- linux的定制和发布(一)
如果总是仰视高山,就会挫伤我们攀登的勇气,使我们固步自封.我们需要做的就 是迈开自己的脚步,踏出第一步,let's go! Linux的裁剪一般有三种方法: 1.以一个已经安装好的系统为基 ...
- 在Linux下使用linuxdeployqt发布Qt程序
一.简介 linuxdeployqt 是Linux下的qt打包工具,可以将应用程序使用的资源(如库,图形和插件)复制到二进制运行文件所在的文件夹中. 二.安装linuxdeployqt 去github ...
- 阿里云服务器Linux CentOS安装配置(二)yum安装svn
阿里云服务器Linux CentOS安装配置(二)yum安装svn 1.secureCRT连接服务器 2.先创建一个文件夹,用来按自己的习惯来,用来存放数据 mkdir /data 3.yum安装sv ...
- Frugalware Linux 1.9 RC1 发布
Frugalware Linux 1.9 RC1 发布了,下载地址:fvbe-1.9rc1-full-x86_64.iso (1,874MB, SHA1). 发行通知:http://www.fruga ...
- [原创]linux简单之美(二)
原文链接:linux简单之美(二) 我们在前一章中看到了如何仅仅用syscall做一些简单的事,现在我们看能不能直接调用C标准库中的函数快速做一些"复杂"的事: section . ...
- Linux内核启动代码分析二之开发板相关驱动程序加载分析
Linux内核启动代码分析二之开发板相关驱动程序加载分析 1 从linux开始启动的函数start_kernel开始分析,该函数位于linux-2.6.22/init/main.c start_ke ...
- Linux学习总结(十二)—— CentOS用户管理:创建用户、修改用户、修改密码、密码有效期、禁用账户、解锁账户、删除用户、查看所有用户信息
文章首发于Linux学习总结(十二)-- CentOS用户管理,请尊重原创保留原文链接. 创建用户 useradd -g webadmin -d /home/zhangsan zhangsan pas ...
- Linux时间子系统之(二):软件架构
专题文档汇总目录 Notes:从框架上讲解了时间子系统,从底向上包括CPU Local TImer.Global Counter.Clock Souce/Clock Events模块管理.Tick D ...
- Linux集群架构(二)
Linux集群架构(二) 目录 八.LVS DR模式搭建 九.keepalived + LVS 十.扩展 八.LVS DR模式搭建 1.实验环境: 四台机器: client: 10.0.1.50 Di ...
随机推荐
- Office 2016激活教程(附KMS激活软件)
首先下载office 2016办公软件文件名:cn_office_professional_plus_2016_x86_x64_dvd_6969182.isoSHA1:277926A41B472EE3 ...
- Hive 体系结构
1.Hive架构与基本组成 下面是Hive的架构图. 图1.1 Hive体系结构 Hive的体系结构可以分为以下几部分: (1)用户接口主要有三个:CLI,Client 和 W ...
- Sql Server-使用Sql Server自带的分词功能实现字段关键词提取(分词能力很低,慎用)
“创建全文索引 启动服务 在SQL Server配置管理工具中,找到'SQL Full-text Filter Daemon Launcher'服务用本地用户启动. 创建全文目录 打开需要创建全文目录 ...
- 巧用c++11 的forward实现可变参数构造,生成智能指针
C++11 提供强大的智能指针shared_ptr来管理内存,避免使用裸指针带来的各种不确定访问造成的程序崩溃. 为了强制使用智能指针,一个简单的办法是,将类的构造函数析构函数声明为protected ...
- Python-第三方库requests
Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得 ...
- python 爬预警没解析前的
- ES6系列_2之新的声明方式
在ES5中我们在声明时只有一种方法,就是使用var来进行声明,ES6对声明的进行了扩展,现在可以有三种声明方式. (1)var:它是variable的简写,可以理解成变量的意思. (2)let:它在英 ...
- Robot Framework——百度搜索
1.创建项目 选择菜单栏file----->new Project 右键点击新建Project,选择new Suite 选项. 右键点击新建测试Suite,选择new Test Case. 完 ...
- 2 数据库开发--MySQL下载(windows)
Windows:(mysql) 操作: 0.下载安装mysql www.mysql.org downloads->进入社区community community 5.7.21 下载5.6 Mic ...
- NBU 还原windows ORACLE数据库(FP)
二.基于差异备份恢复7月20日星期四早上8:30分数据1.查询所需要的归档日志(因为要返回20号刂8:30分的数据,所以控制 文件要晚于这个点,即取21号凌晨2点备份的控制文件) bplist -C ...