启动流程排错,自制linux内核,编译内核

CentOS 6启动流程:

POST --> Boot Sequence(BIOS) --> Boot Loader --> Kernel(ramdisk) --> rootfs--> switchroot--> /sbin/init-->(/etc/inittab, /etc/init/*.conf) --> 设定默认运行级别--> 系统初始化脚本rc.sysinit--> 关闭或启动对应级别的服务--> 启动终端

grub legacy

配置文件:/boot/grub/grub.conf<--/etc/grub.conf

ls /dev/loop* loop设备可以通过内核参数可以修改

rhgb  quiet 删除了可以跳过图形界面直接看到启动信息

loop设备数目可以增加

grub-md5-crypt

centos 需要输入两遍

可以为grub生成一个md5的加密密码

password --md5

可以生成一个启动口令

openssl passwd -1 1表示md5加密

也一样可以生成一个MD5加密密码

openssl passwd -salt "盐" -1  指定盐加密

可以发现只要指定一样的盐加密,一样的密码会显示一样。

cat /proc/cmdline 查看生效的内核参数

/boot/grub/grub.conf 如果开机配置文件损坏了,或者没有,可以通过自己配置路径开机

kernel (hd0,0)/vmlinuz-2.6.32-642.216.x86_64 root=/dev/sda2   内核

initrd (hd0,0)/initramfs-2.6.32.e16.x86_64.img  配置文件

boot

跟/etc/grub.conf的文档一样

更改开机菜单背景

yum -y insyall ImageMagick

convert -resize 640x480 -colors 14 win.jpg win.xpm

gzip win.xpm

cp win.xpm /boot/grub

cim /boot/grub/grub.conf

破坏了系统启动文件 1到1.5阶段

方法一:

grub-install

chroot /mnt/sysimage/

grub-install /dev/sda 可以修复1与1.5阶段

分区表信息grub修复不了

dd if=/dev/zero of=/dev/sda bs=1 count=446 破坏1阶段

hexdump -C -n 512 /dev/sda

可以发现数据已经被破坏

重启之后发现已经进入不了系统,选择救援模式

chroot /mnt/sysimage/

切换回主目录操作

grub-install /dev/sda 可以修复1与1.5阶段

注意:分区表信息grub修复不能

方法二:

dd if=/dev/zero of=/dev/sda bs=512 count=2 seek=1 破坏1.5阶段

hexdump -C -n 1024 /dev/sda

只能手动光盘引导,救援模式

grub

grub> root (hd0,0)

grup> steup (hd0) 使用交互模式救援

如果备份文件被破坏了就只能用方法一 grub-install 。因为方法二是依赖与备份文件修复。

因为我上面就已经将错误修复了,所以第二部检查出没问题

在进单用户模式 : 在读条页面按Esc 跟住a 进入后输入1

单一服务出错,可以跳过该服务启动

ll -Z /sbin/init

seliux=0

chkconfig --list certmonger

chkconfig certmonger off 启动就不会再加载这个服务

如果内核和配置文件损坏了

光盘挂载修复

mount /dev/cdrom /mnt/cdrom

cd /mnt/cdrom/isolinxu/

cp vmlinuz /mnt/sysimage/boot

chroot /mnt/sysimage

mkinitrd /boot/initromfs-`uname`.img `uname -r`

网络救援

chroot /mnt/sysimage/

scp 10.1.0.1:/boot/vmlinuz* /boot/  利用scp去其它源拷贝回来一份相同的文件

scp 10.1.0.1:/boot/initramfs* /boot/

前提时候版本号一样,将目标的文件拷贝到目录下

reboot

删除/boot

rm -rf /boot/

dd if=/dev/zero of=/dev/sda bs=1 count=446 破坏1阶段

rescue 进入救援模式

mount /dev/cdrom /mnt/cdrom

rpm -ivh /mnt/cdrom/Packages/kernel-2.6..rpm --root=/mnt/sysimage --replacepkgs 安装回内核

chroot /mnt/sysyimage

grub-insyall /dev/sda

删除了/ect/fstab,/boot/,

blkid;fdisk -l

mkdir /mnt/sda2

mount /dev/sda2 /mnt/sda2

vi /mnt/sda2/ect/fstab  重写一个分区表信息,可以暂时先写主分区信息,等进入系统再进行保全。

/dev/sad1 /boot ext4 defaults 1 1

/dev/sda2 /     ext4 defaults 1 2

reboot 等系统自己挂载

mkdir /mnt/cdrom

mount /dev/cdrom /mnt/cdrom

chroot /mnt/sysyimage

rpm -ivh /mnt/cdrom/Packages/kernel-2*.rpm --replacepkgs | force   重新安装回内核

grub-install /dev/sda

修复回1到1.5段的引导信息

vim /boot/grub/grub.conf

default=0

timeout=3

title zczxlinux

root (hd0,0)

kernel /vmlinuz-2.6.32-642.e16.x86_64  root=/dev/sda2

initrd /initramfs-2.6.32-642.e16.x86_64

重写引导信息

逻辑卷需要

lvscan 扫描磁盘

vgs

vgchange -ay 激活所有逻辑卷

mount /dev/vg0/root /mnt/sysimage

vi /mnt/sysimage/etc/fstab

/dev/sad1 /boot ext4 defaults 1 1

/dev/vg0/root / ext4 defaults 1 2

/dev/vg0/usr /usr ext4 defaults 0 0

/dev/vg0/var /var ext4 defaults 0 0      重写引导信息,因为逻辑分区所以需要写上/usr,/var,/root等

reboot 还是等系统自己挂载

下面过程差不多

rpm -ivh     安装回内核

grub-install /dev/sda    修复1到1.5段引导信息

vim /boot/grub/grub.conf   添加回引导信息,root=路径要加上逻辑卷

root=/dev/vg0/root

自制Linux系统

lsblk

新添加一个硬盘来做实验,发现系统还没有检出

echo "- - -"> /sys/class/scsi_host/host0/scan

echo "- - -"> /sys/class/scsi_host/host2/scan  生产环境注意使用

fidsk /dev/sdb 分两区 boot /

mkfs.ext4 /dev/sdb*

mount /dev/sdb1 /mnt/boot

cp /boot/vmliuz-2... /boot/initramfs-2.6...img /mnt/boot

grub-install /dev/sdb --root-directory=/mnt

将引导信息写入/dev/sdb中

hexdump -C -n 512 -v /dev/sdb

可以查看到已经有数据写入了

cd grub

vim grub.conf

default=0

timeout=3

title zczxlinux

root (hd0,0)

kernel /vmlinuz....  root=/dev/sda2 selinux=0 init=/bin/bash

initrd /initramfs..

mkdir /mnt/sysroot

mount /dev/sdb2 /mnt/sysroot

cd /mnt/sysroot/

mkdir -pv {bin,etc,sbin,dev,lib,lib64,proc,sys,tmp,root,home,usr,var,mnt,media}

vim /mnt/sysroot/etc/fstab

/dev/sda1  /boot  ext4 defaults 1 1

/dev/sda2   /     ext4 defaults 1 2

/root/copycmd.sh

bash,vim,cat,ls,ifconfig,poweroff,df,rpm,mount,umount,hostanme,reboot.

chroot /mnt/sysroot

切换进去,

要使用的时候只需将文件拷贝过去读取就可以使用

编译内核

编译内核 (可以添加未开启的功能板块)

rpm -qi kernel

ntsysv  可以打开关闭指定功能模块

/boot/kernel

/lib/modules

实现完全定制的内核功能

cd /boot

config-3.1.... 里面有服务配置

www.kernel.org  下载内核

yum grouplist

yum -y groupinstall "Development Tools"

uname -r  查看内核版本

lscpu 查看CPU

tar xvf linux-3.18..tar.xz -C /usr/src  将内核解压到/usr/src

ls /sur/src

ln -s linux-3.18.41/ linux 创建软连接,方便下次进入

cd linux

du -sh

cp /boor/config-3.10.0.. /usr/src/linux/.config  将原本的模板拷贝到指定的目录,而且需要命名为.config  因为编译的时候会默认读取这个文件

ll /usr/src/linux/.config

cd /usr/src/linux  菜单打开需要进入这个路径

yum -y install "*curses*"

make menuconfig  打开菜单等于修改.config

默认64内核

通用设置

Local version  版本号

回车

-1.0-zczxlinux  加入版本号

名字带箭头的表示有子项目

make -j 4 (4核心)开始编译

du -sh /usr/src/linux-3.18

cd /lib/modules

cd /usr/src/linux

make modules_install  拷贝内核模块文件

make install

lsmod 查看已经安装的模块

lsmod |grep ext4

locate ext4.ko 查找模块路径

rmmod e1000 卸载模块

modprobe usb-strage 启动模块

modinfo -n usb-storage.ko 显示模块路径

lsmod |grep -i ext4 可以看到ext4依赖的文件

depmod命令:

内核模块依赖关系文件及系统信息映射文件的生成工具(容易破坏其他文件的依赖性,使用时候要注意使用)

做路由器时候开启

cat /proc/sys/net/ipv4/ip_forward

0表示未启用

vim /etc/sysctl.conf

格式用.代替/

可以直接修改上述文件: echo 1 > /proc/sys/net/ipv4/ip_forward

把文件的内容由0修改为1。禁用IP转发则把1改为0。

上面的命令并没有保存对IP转发配置的更改,下次系统启动时仍会使用原来的值,要想永久修改IP转发,需要修改/etc/sysctl.conf文件,修 改下面一行的值: net.ipv4.ip_forward = 1

sysctl -p 重读配置文件

sysctl -w net.ipv4.ip_forward=0 相当于改内存

sysctl -a 可以看所有启用的

时间: 2024-11-08 12:47:49

启动流程排错,自制linux内核,编译内核的相关文章

自制Linux和编译内核

自制linux:(1)  分区并创建文件系统  fdisk /dev/sdb分两个必要的分区  /dev/sdb1 对应/boot /dev/sdb2 对应根  /mkfs.ext4 /dev/sdb1mkfs.ext4 /dev/sdb2  挂载bootmkdir /mnt/boot 子目录必须为bootmount /dev/sdb1 /mnt/boot  安装grubgrub-install –root-directory=/mnt /dev/sdb    #boot目录的上一级目录   

修复/boot及/etc/fstab、自制linux、编译安装内核

实验一.破坏dev/sda 的MBR的446字节: 破坏:dd if=/dev/zero of=/dev/sda bs=1 count=446 查看:hexdump -C -n 512 /dev/sda 发现前面的字节都为0 状况一.刚破坏未重启的时候修复: 可以利用grub重新生成: grub grub> root (hd0,0) grub> setup (hd0) quit退出 修复完之后使用hexdump -C -n 512 /dev/sda查看发现已经修复成功 状况二.破坏之后重启了,

Linux重新编译内核指南

Linux的一个重要的特点就是其源代码的公开性,全世界任何一个软件工程师都可以将自己认为优秀的代码加入到其中,由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用.而Linux的内核则是这些特点的最直接的代表. 为什么要升级内核 正如它的名字的字面意义,Linux的内核承担着Linux操作系统的最为核心的任务,是其它程序和硬件等运行过程中的仲裁者:它要管理所有进程的内存,保证它们都能平等得到处理器的时隙.此外,它还提供程序和硬件之间的接口等功能. 通常,更新的内核会支持更

linux内核编译,内核参数修改

核心(kernel):/boot/vmlinuz-version version 带发行包版本,本地版本内核模块(kernel object): /lib/modules/version/ 内核设计:    单内核        模块化设计--内核小,功能做成模块    微内核装载模块:    insmod    modprobe 内核下载:www.kernel.org 2(主).6(次).17(修正)-->2.6.17.1修复bug2.6.18.rc1(候补版) 新增功能 用户空间访问,监控内

Linux九阴真经之无影剑残卷11(启动流程排错)

系统启动流程排错 如果用grub修复过系统,那么/boot/grub下的文件就不可以丢失,如果未用grub 修复过系统,只需要有 grub.conf  和 splash.xpm.gz 即可. 例:如果将磁盘的第一个扇区的512个字节的内容清空,可以用grub-install  /dev/sda  修复 执行 grub-install /dev/sda 命令修复,再查看 发现内容已修复 例:如果/boot/grub/下的文件全部被删除,首先进入救援模式,进行切根操作,然后用命令grub-insta

#26 Linux kernel(内核)详解与uname、lsmod、modinfo、depmod、insmod、rmmod、modprobe...命令用法

Linux kernel: 内核设计流派: 单内核设计,但是充分借鉴了微内核体系设计的优点,为内核引入了模块化机制,内核高度模块化: 内核被模块化之后,一些最为基本最为重要的内容,被编译到内核核心:而其他更多的功能则以模块的方式来提供:而且支持动态装载和卸载各内核模块: 内核的组成部分: kernel:内核核心文件,一般为bzimage,经过压缩处理的镜像文件:通常内核核心文件保存在/boot/目录下,名称为vmlinuz-version-release kernel object(ko):内核

在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

实验环境:Ubnuntu 64位(推荐使用14.04)+Xshell 阿里云现在提供的云服务器很好用的,用来编译内核性能也不错.本文介绍最基本的内核编译方法,为了方便,所有操作均在root用户下进行. 如果不是root用户可以使用su命令切换到root用户. 注:使用xshell的时候最好把这一项给关闭了(工具——选项——高级) 一.环境准备 1.准备linux源码和补丁,可以在官网(http://www.kernel.org)上下载,这里我们下载4.5版本. 不过阿里提供了http://mir

Linux的启动流程(CentOS 6)

前言 Linux启动的过程在实际生产中有着至关重要的作用.试想一下,如果我们在实际生产中服务器因为某一个服务出了问题,而不能启动,这时我们应该怎么办.如果我们了解Linux的详细启动过程,知道是在哪一个环节出了问题,我们就能够进入到相应的环节,排除掉相应的问题,从而解决实际生产中的问题. 同时,我们在这里提出一个问题,有谁知道Windows的启动过程呢?如果启动过程出了问题,我们该怎么办呢?恐怕答案只有重启系统了吧-- Linux 系统的启动过程对于管理员来说是完全透明的,了解了Linux的启动

Gentoo安装详解(二)-- 编译内核

编译内核: 安装内核源码: 选择内核:如gentoo-sources emerge gentoo-sources ls -l /usr/src/linux 手动编译内核: cd /usr/src/linux make menuconfig 必须启用的选项: 显卡:Xorg/Configuration 声卡:ALSA 网卡:根据具体网卡芯片型号,查看wiki. 无线网卡芯片驱动查询:Linux Wireless 其他选项根据需要添加,不了解保持默认即可. 编译内核与模块: make && m