diy自己的linux

  1. 准备一台liunx的机器,我用的是liunx虚拟机
  2. 单独加载一块硬盘,我加载了一块20G的硬盘,然后用fdisk /dev/sdb进行分区,sdb1用来作为将来系统的/boot分区,所有100M就可以了,sdb2用来作为将来系统的/分区,我给了10G。然后将两个分区格式化为ext4系统。
  3. mkdir /mnt/boot

    mkdir /mnt/sdc2

    mount /dev/sdb1 /mnt/boot

    mount /dev/sdb2 /mnt/sdc2

4.执行grub-install命令,黄色箭头是指将来要作为/ 的目录,红色箭头是表示将grub相关文件写入/sdb磁盘中(grub相关文件是用来引导启动内核的关键文件)

5.拷贝内核文件和文件系统文件到/boot

6.编辑/mnt/boot/grub/grub.conf文件

第一行:出现列表时,背景图片的路径(图片的制作方法请看我相关的文章)

第二行:内核的名字

第三行:将来从第一块硬盘第一个扇区启动

第四行:启动内核文件,只读,/目录在/dev/sda2分区 此时selinux关闭 init程序读取/bin/bash

第五行:根目录可用前的一个临时文件系统,initrd与内核绑定在一起,并作为内核引导过程的一部分进行加载。内核然后会将这个 initrd文件作为其两阶段引导过程的一部分来加载模块,这样才能稍后使用真正的文件系统,并挂载实际的根文件系统。

7.写挂载文件

8.在/mnt/sdc2/下建根目录中的文件夹

9.利用脚本拷一些命令到新的目录下(在/mnt/sdc2下执行此命令)

脚本内容如下:

#!/bin/bash

ch_root="/mnt/sdc2"

[ ! -d $ch_root ] && mkdir $ch_root

bincopy() {

if which $1 &>/dev/null; then

local cmd_path=`which --skip-alias $1`

local bin_dir=`dirname $cmd_path`

[ -d ${ch_root}${bin_dir} ] || mkdir -p ${ch_root}${bin_dir}

[ -f ${ch_root}${cmd_path} ] || cp $cmd_path ${ch_root}${bin_dir}

return 0

else

echo "Command not found."

return 1

fi

}

ch_root="/mnt/sdc2"

[ ! -d $ch_root ] && mkdir $ch_root

bincopy() {

if which $1 &>/dev/null; then

local cmd_path=`which --skip-alias $1`

local bin_dir=`dirname $cmd_path`

[ -d ${ch_root}${bin_dir} ] || mkdir -p ${ch_root}${bin_dir}

[ -f ${ch_root}${cmd_path} ] || cp $cmd_path ${ch_root}${bin_dir}

return 0

else

echo "Command not found."

return 1

fi

}

libcopy() {

local lib_list=$(ldd `which --skip-alias $1` | grep -Eo ‘/[^[:space:]]+‘)

for loop in $lib_list;do

local lib_dir=`dirname $loop`

[ -d ${ch_root}${lib_dir} ] || mkdir -p  ${ch_root}${lib_dir}

[ -f ${ch_root}${loop} ] || cp $loop ${ch_root}${lib_dir}

done

}

read -p "Please input a command or quit: " command

while [ "$command" != "quit" ];do

if bincopy $command ;then

libcopy $command

fi

read -p "Please input a command or quit: " command

done

10.我们此时可以将此块硬盘取下,挂载到一个新的liunx系统中去,测试是否能正常启动

新虚拟机

11.启动新的虚拟机

此时,我们可以看到内核的名字是zebralinux,也就是我们在/mnt/boot/grub/grub.conf中title所对应的行,背景图片也被换了,说明暂时系统是好的,可以继续进行

因为我们制定init=/bin/bash,所有开机后执行的第一个程序就进入到bash中,在此界面中我们可以测试其他命令,有些命令应该可用,有些有依赖其他文件的命令或许此刻或用不了,我们只是做了个简单linux。

我们第一次mount时,sda1没有被挂载上。当我们挂载时,会报错,但仍能被挂载上。之后,我们就可以进入到/下的目录和/boot目录中了

时间: 2024-12-12 08:23:05

diy自己的linux的相关文章

详解linux系统的启动过程及系统初始化

一.linux系统的启动流程 关于linux系统的启动流程我们可以按步进行划分为如下: POST加电自检 -->BIOS(Boot Sequence)-->加载对应引导上的MBR(bootloader)-->主引导设置加载其 BootLoader-->Kernel初始化-->initrd—>/etc/init进程加载/etc/inittab,其进程流 程图如下: 二.剖析详细启动过程 ⑴. POST开机自检:电脑主机打开电源的时候,随后会听到滴的一声,系统启动开始了开机

Serif和Sans-serif字体的区别

在西方国家罗马字母阵营中,字体分为两大种类:Sans Serif和Serif,打字机体虽然也属于Sans Serif,但由于是等宽字体,所以另外独立出Monospace这一种类,例如在Web中,表示代码时常常要使用等宽字体. Serif的意思是,在字的笔划开始及结束的地方有额外的装饰,而且笔划的粗细会因直横的不同而有不同.相反的,Sans Serif则没有这些额外的装饰,笔划粗细大致差不多.如下图: 可以看出,我们平时所用的Georgia.Times New Roman等就属于Serif字体,而

万雨在公网博客-开篇

大家好,我是万雨现在大四,即将离开西安的学校,前往武汉工作.平时喜欢折腾一些diy设计:linux平台(fedora.ubuntu).java.android.MATLAB.python.硬件设计开发. 当然,我也刚开始进入软件相关领域,也是小白进门.最近(2016.04.04)忙着毕设和学习linux系统.python开发.所以,我会将我的相关学习经历发布在博客园中,以后如果有机会的我还会将我的其他的硬件软件以及读书学习的相关体验发布.当然写这个博客也主要是想要交一些技术开发方面的朋友,欢迎大

Serif和Sans-serif字体的区别(转)

在西方国家罗马字母阵营中,字体分为两大种类:Sans Serif和Serif,打字机体虽然也属于Sans Serif,但由于是等宽字体,所以另外独立出Monospace这一种类,例如在Web中,表示代码时常常要使用等宽字体. Serif的意思是,在字的笔划开始及结束的地方有额外的装饰,而且笔划的粗细会因直横的不同而有不同.相反的,Sans Serif则没有这些额外的装饰,笔划粗细大致差不多.如下图: 可以看出,我们平时所用的Georgia.Times New Roman等就属于Serif字体,而

redhat 5 系列 diy mini linux 之一

用户空间访问.监控内核的方式: /proc,/sys 伪文件系统: /proc/sys:此目录中的文件很多事可读写的 /sys/:某些文件可写 设定内核参数值得方法: echo VALUE>/proc/sys/TO/SOMEFILE sysctl -w kernel.hostname=HOSTNAME     这里的写法相当于 echo HOSTNAME > /proc/sys/kernel/hostname 永久有效:/etc/sysctl.conf 修改完立即生效: sysctl -p s

redhat 5 系列 diy mini linux 之二

本文接上篇,假设mini linux挂载在宿主机的/mnt/boot和/mnt/sysroot下,本文的一些脚本都是简化的,只求达到我们的目的,linux的工作流程比想象中复杂的多 现在我们有一个可用的mini linux,让我们对它进行一些扩展 重新挂载根文件系统为读写 首先给minlinux提供个fstab配置文件,内容如下: 在rc.sysinit里面添加mount -o remount,rw / 如果此时mini linux 的etc目录下没有mstab文件,则使用 mount -o -

Mac下VIM的DIY配置(Linux下Vim通用)

Mac下VIM的DIY偏好配置 " 首先执行: " cp /usr/share/vim/vimrc ~/.vimrc " 拷贝默认的配置文件 ,然后再执行: " vim ~/.vimrc " 编辑该文件 在文件的最后加入 " syntax on " 保存退出即可 " ==========================下以下是配置内容================== " Configuration file fo

busybox diy mini linux

系统:centos 5.8 64bit 软件版本:busybox-1.21.1.tar.bz2 dropbear-2016.73.tar.bz2 参考:http://os.51cto.com/art/201403/431943.htm 1.编译 busybox-1.21.1.tar.bz2 make menuconfig (Busybox Settings-->Build Options-->Build BusyBox as a static binary (no shared libs) 选

【我的技术我做主】IT屌丝DIY打造6盘位家用NAS服务器

一.为什么需要NAS存储? 一直以来用的百度云,并自己配置了一个2TB的硬盘做日常数据备份,后来发现百度云限速!而且存在各种各样的不安全(苹果事件.米国事件的都懂的啦!),而且自己2TB的硬盘一直没有做数据备份一直感觉不安全(搞IT人的心病),没有RAID数据安全无法保证,加上现在给孩子照相越来越多.蓝光高清.各种测试需要存储空间,NAS的需求越来越严重了,所以建立一个自己的NAS存储势在必行!当然在成本.造价.功能考虑,性价比当然是越高越好了! 二.硬件选型 1.主板 u 支持双千兆网口的(端