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的定制和发布.zip

      

转载于:https://www.cnblogs.com/wenjingu/p/4126567.html

linux的定制和发布(二)相关推荐

  1. Linux系统-小倒腾之Linux DIY定制裁剪(New kernel+Busybox)o_o(二)

    在前面的<Linux系统-小倒腾之Linux DIY定制裁剪(附带简单网络功能)o_o(一)>博文中,我通过对一个Linux系统的裁剪,最终制作出来了一个带有网络功能的微型Linux系统; ...

  2. pc安装linux内核,PC/104平台嵌入式Linux系统核心定制方法

    摘 要:基于PC/104平台的嵌入式Linux技术在海洋自动观测系统中具有广泛的应用前景,Linux核心定制方法的研究是嵌入式Linux系统研制的关键工作.本文结合PC/104平台嵌入式Linux系统 ...

  3. 网易发“暴力裁员”内部说明;京东负责不幸员工的孩子费用到22岁;Linux kernel 5.4发布 | 极客头条...

    整理 | 郭芮 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...

  4. 麒麟 810 实体芯片亮相;1325 个安卓应用私自搜集数据;Linux Kernel 5.2 发布 | 极客头条...

    快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...

  5. 在Linux下使用linuxdeployqt发布Qt程序

    一.简介 linuxdeployqt 是Linux下的qt打包工具,可以将应用程序使用的资源(如库,图形和插件)复制到二进制运行文件所在的文件夹中. 二.安装linuxdeployqt 去github ...

  6. linux系统移植篇(二)—— Uboot使用介绍

    linux系列目录: linux基础篇(一)--GCC和Makefile编译过程 linux基础篇(二)--静态和动态链接 ARM裸机篇(一)--i.MX6ULL介绍 ARM裸机篇(二)--i.MX6 ...

  7. 嵌入式Linux串口终端的定制,基于PC/104平台嵌入式Linux系统定制方法

    基于PC/104平台的嵌入式Linux技术在海洋自动观测系统中具有广泛的应用前景,Linux定制方法的研究是嵌入式Linux系统研制的关键工作.本文结合PC/104平台嵌入式Linux系统的研制,详细 ...

  8. Puppy linux中文定制!优秀的口袋移动系统 更新至522版

    Puppy linux中文定制!优秀的口袋移动系统 更新至522版 [复制链接] 上一主题下一主题 离线 神雕teasiu 关闭 个人中心可以申请新版勋章哦 立即申请 知道了 发帖 348 雨点 -1 ...

  9. MongoDB数据库泄露8亿电邮地址;微软开源Windows计算器;Linux 5.0 Kernel发布丨Q新闻...

    本周要闻:华为正式宣布起诉美国政府:360 首席安全官谭晓生宣布离职:阿里开源 Flutter 应用框架 Fish Redux:微软开源 Windows 计算器:Linux 5.0 Kernel 发布 ...

最新文章

  1. Servlet之Filter过滤器
  2. 优秀的服务器托管服务商的必备要素
  3. 确保客户端可以接收到服务端的异常serviceDebug includeExceptionDetailInFaults=true
  4. 12-Mybatis 缓存
  5. 使用C#开发ActiveX控件
  6. mysql〉_MySql 基础知识-常用命令及sql语句
  7. 数据结构笔记(七)-- 顺序栈
  8. 常用的字符串对象方法
  9. 生产环境中的PHP WEB 简单架构
  10. 2021华为软挑初探——代码实现
  11. 联想yoga13装win7步骤介绍
  12. 双色球神经网络算法分析,双色球预测程序算法
  13. python除法运算定律_小数乘法和小数除法知识点整理(转)
  14. CSS实现兼容浏览器的文字阴影效果
  15. 李力刚:职场上如何成功推销自己
  16. 浅谈设计师职业成长轨迹
  17. 如何通过 onstat 命令监控GBase8s数据库
  18. Linux设备树特殊节点(aliases、chosen)介绍
  19. 【Android Studio】在Mac中更换JDK Location
  20. HLK-W801-LVGL8之触摸驱动

热门文章

  1. javascript arraybuffer
  2. python 脚本传参
  3. shell 条件控制语句
  4. 1.12 改善你的模型的表现
  5. bokeh.model API
  6. 兰州理工大学linux试题,兰州理工大学学期《电子技术》试题.doc
  7. python为csv文件添加表头_python读csv文件时指定行为表头或无表头的方法
  8. linux将目录完整备份,Linux自动压缩备份目录文件与恢复
  9. 腾讯数据库专家多年运维经验凝聚成简,总结这份595页工作笔记
  10. 转载:做了5年运维,靠着这份监控知识体系,我从3K变成了40K