全部博文(2759)
分类: LINUX
2013-04-02 09:05:37
原文地址:linux学习心得(三) 作者:s270768095
先进入单用户模式,用密令init 1,再输入mount -n -o remount,rw / 即可解除只读状态
怎样进入linux单用户模式进行操作!
---- 与紧急修复模式只能加载本机Linux上的文件系统不同,单用户模式是在本机Linux内核引导启动后进入的一个运行级别(运行级别是1),可以做内核升级、设备安装等维护工作。在系统维护时,系统管理员往往要进入单用户模式来维护系统,进入紧急修复模式是在Linux不能启动时不得已而采用的系统维护方法。
---- Linux内核自行启动之后,通过启动程序init来完成自己的引导过程,所以,init进程始终是第一个进程,进程编号始终为1。Init程序有着许多重要的职责,如启动Getty、实施运行级别和调用子进程等,是Linux系统中必不可少的程序之一。
---- 下面提到的进入单用户模式的方法,实质都是向init程序请求运行级别1,达到进入单用户模式的目的。
---- 1.Init程序
---- 系统正在运行时,在命令行上用程序Init可以更改运行级别(/sbin/telinit只是程序Init的符号链接,同样可以使用),进入单用户模式用如下命令:
---- #init 1
---- 因为是在一个正在运行的系统上,且只有Root用户才有权限执行Init命令,所以此种方式虽然在系统维护时经常用到,但对口令恢复的意义不大。
---- 2. 修改默认运行级别
---- /etc/inittab文件是系统运行级别的配置文件,每当启动init进程时,init程序都会读取/etc/inittab文件中的相应配置并运行。
---- 在Linux系统启动时,/etc/inittab文件中有如下一行指定了默认的运行级别,通常的运行级别是3或5。
---- id:3:initdefault:
---- 要使系统启动后进入单用户模式,只要把上面一行中的3改为1就可以了。
---- id:1:initdefault:
---- 3. 启动盘引导
---- 在Linux系统启动时,Init读取/etc/inittab配置进入默认运行级别,但也可以为内核指定一个启动参数,内核将依此参数设定特定设备和环境变量等,对于不能接受解释的参数将传递给内核启动后的第一个程序,即Init程序,Init程序据此参数启动进入非默认运行级别,如指定参数为1或 single进入运行级别1,即单用户模式。内核启动参数的指定可通过在系统启动软盘、多重启动管理器或程序Loadlin等的执行过程中指定。
---- 在系统维护或内核更新时,常用到当前Linux系统的启动盘,在系统安装时会提示用户制作一张启动盘,在系统安装完成后也可以制作,下面是一个简单示例。
---- 在软驱中放入软盘,用uname命令查看系统内核版本号,然后用Mkbootdisk命令创建引导盘,输入的命令如下:
---- #uname Cr
---- 2.4.7-10
---- #mkbootdisk Cdevice /dev/fd0 2.4.7-10
---- 以启动盘引导,在boot提示符下以"linux "的语法形式输入如下参数之一,即可引导进入单用户模式如下:
---- boot: linux 1
---- boot: linux single
---- 4. 多重启动管理器
---- 多重启动管理器是一个能在系统启动时用来选择加载某个操作系统的引导程序,它可以载入操作系统的内核和初始化操作系统(如Linux或FreeBSD),或者把引导权交给操作系统(如DOS或Windows)来完成引导。Intel兼容PC机上的多重启动管理器有LILO和GRUB等,Alpha PC机上使用MILO,Sparc兼容的工作站是用SILO。
---- 在多重启动管理器中为Linux内核指定启动参数引导进入单用户模式。以Intel兼容PC机上的Linux为例,如果安装的是LILO,在LILO引导画面,按Ctrl+X键切换入命令行,在LILO提示符下输入与启动盘引导Boot提示符下相同的参数之一,即可引导进入单用户模式:
---- 在RedHat Linux 7.2以后,多重启动管理器开始用GRUB代替LILO,它比LILO具有更多的优势,是LILO的替代品。下面是GRUB引导进入单用户模式的过程。
在出现GRUB引导画面时,按字母e键,进入GRUB编辑状态。
按↑键或↓键选择相应的引导项,并再接字母e键进入命令行编辑。
在出现的命令行上添加"1"或single,并按键,返回GRUB编辑状态。
按字母b键,引导进入单用户模式。
---- 从上可以看出多重启动管理器对Linux系统启动和维护的重要性,所以建议在安装Linux时也安装好多重启动管理器,便于将来系统的维护,哪怕是主机上只安装了Linux一个操作系统。
---- 5. loadlin引导
---- loadlin是一个能在DOS下启动Linux核心的装载程序,可从DOS引导进入Linux或安装Linux系统等。如果没有安装多重启动管理器或者配置有误不能进入Linux的话,常常会用到这个程序。
---- 在loadlin的启动命令中添加single参数就可以进入单用户模式。如果主机上安装有Windows 9x系统,在系统启动时按F8进入MS-DOS,运行loadlin程序引导进入单用户模式。下面是一次启动实例,该主机上没有安装Windows 9x,也没有安装DOS。
以Windows 98安装光盘引导启动,在"Microsoft Windows 98 Startup Menu"上选择第2项:"start computer with CD-ROM support."。
进入MS-DOS后,在光驱中换入RedHat Linux安装光盘。
在命令行上分别输入如下命令引导Linux单用户模式,假设Linux根文件系统在分区/dev/hda5上:
A:>d:
D:>cd dosutils
D:DOSUTILS>loadlin autobootvmlinuz root=/dev/hda5 ro single
---- 在启动盘引导的boot提示符下,在LILO和GRUB等启动管理器的命令行下,以及在Loadlin程序上都可以配置很多参数引导进入系统,对系统维护很重要,可以参考BootPrompt-HowTo。
---- 上面提到的方法,都需要对/etc/passwd、/etc/inittab等Linux文件进行读写,但在正常情况,只有root用户登录进去才可以读写。那么在不能正常登录进系统时,又如何能对这些文件进行读写呢?
---- 除了可以在紧急修复模式、单用户模式下读写Linux文件外,采用下面的方法也不失为良策:
通过Linux系统软盘引导启动,就能进入Linux系统;
通过Linux系统光盘进入,如DemoLinux;
在DOS/Windows下读写Linux文件,几乎所有版本的DOS/Windows都不提供对Linux文件系统的支持,但借助不少软件可以实现,如FSDext2、Ext2fsnt、Ext2ifs、Ext2 tools、Ltools和Explore2fs等,还有Microsoft IFS Kit;
通过第二硬盘。
---- 上面提到的种种Linux口令恢复方法,读者可以结合自己的实际情况,选择一种最简单易行的方法来恢复自己的Linux口令。从中可以看出,他人通过在本地重启系统很容易获取Linux口令,所以为了加强系统安全,有必要在启动管理器(如LILO和GRUB)及BIOS中设置口令,使他人不能轻易得逞,更重要的是加强安全管理工作。
.o 就相当于windows里的obj文件
OBJ是目标文件。
是源程序编译后的产物。
OBJ文件链接后就生成EXE文件。
.a 是好多个.o合在一起,用于静态连接
.so 是shared object,用于动态连接的,和dll差不多
试试这个:在你的/boot/gurb/goru.conf中修改你所生成的kernel段:
kernel (hd0,0)/boot/vmlinuz-2.4.19-16mdk root=/LABEL处修改为:
kernel (hd0,0)/boot/vmlinuz-2.4.19-16mdk root=/dev/hda1
save and exit,重启一下看看能不能进入系统。
是redhat linux吧,用label 加载root dev 必须 有这个选项
File systems
--->Miscellaneous filesystems
---><*> UFS file system support (read only)
如果没有错误的话, 下面开始修改grub配置文件(不要告诉我你用的lilo)
在/boot目录下,执行以下命令:
# new-kernel-pkg --mkinitrd --depmod --install2.6.10(这时候你的/boot下会生成一个initrd-2.4.18.img,并且你的grub.conf文件也作了相应更改)
# df (查看根目录在那个分区,下一步要用到。注意,这里根分区不时boot的那个50M的分区,而一般是你最大的那个分区,也就是“/”,千万不要搞错哦。我的为 /dev/hda3)
# vi /grub/grub.conf
进入grub.conf文件,找到如下信息:
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.10)
root (hd0,0)
kernel /vmlinuz-2.6.10 ro root= LABEL=/
initrd /initrd-2.6.10.img
做两处修改:
(1) 将default=1改为default=0(不改的话也可以,只不过重启之后会默认进入2.4内核)
(2) 将kernel行的“LABEL=/”换成根目录所在的分区(上一步查看的就是)
此步很重要,修改错误将可能导致进不去系统,我把我修改后的grub.conf文件列出来,不明之处,可以对照修改:
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.10)
root (hd0,0)
kernel /vmlinuz-2.6.10 ro root=/dev/hda2
initrd /initrd-2.6.10.img
title Red Hat Linux (2.4.20-8)
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img
1. 充电自检-》coms-》硬盘-》mdr(引导程序)-》grub(引导程序,找boot地址)
2. boot-》内核文件-》加载到内存
3. 硬件驱动
/etc 配置文件,最重要
/bin binary 二进制文件 命令
/sbin 系统文件命令
/usr 应用程序
/var log日志文件
/home 用户的主目录
/root 管理员root的目录
/lib 库文件和模块文件,, 还有部分内核驱动
/boot 启动文件和内核文件
/mnt usp接口文件
/media cdrom
/tmp 临时文件
/dev 设备文件
/proc 物理内存和内核参数的一个映像
/lost+found 恢复文件
/opt 空的操作
/misc
/initrd
Du –H 文件名
Id 用户名
剪切 dd
复制 yy
粘贴 p
恢复 U退一步 u按一下退一步
/ 是 vi编辑器的模式搜索命令 键入 / 后 屏幕的底部会出现一行 同
时一个斜扛会出现在底行的行首上 且光标被放置在斜扛之后 此时 您可
以在光标位置键入你需要搜索的模式 输入完成并按下 ENTER键后 编辑器
将开始从光标所在的位置起向文件尾部搜索你键入的模式 如果输入的模式
被找到 光标将停留在找到的模式上 在找到一个匹配的模式后 如果您还
需要搜索下一个匹配的模式 使用命令 n 即可 如果需要找到上一个匹配
的模式 则使用 N 命令即可
此外 ? 命令也是模式搜索命令 与 / 的区别在于 / 是从光标当
前所在位置向文件尾部搜索 而 ? 命令则是由光标当前所在位置向文件头
部搜索
文本替换操作需要使用末行模式进行操作 即所有文本替换操作命令均以 :
开头
当需要查看一个文本文件的头部或尾部时 head 命令及 tail 命令可以非常方
便的完成该操作 head 命令用于查看一个文本文件的开头部分 而 tail 命令
则用于显示文本文件的末尾几行 这两个命令举例如下
head example.txt 显示文件 example.txt 的前十行内容
head -n 20 example.txt 显示文件 example.txt 的前二十行内容
tail example.txt 显示文件 example.txt 的后十行内容
tail -n 20 example.txt 显示文件 example.txt 的后二十行内容
tail -f example.txt 显示文件 example.txt的后十行内容 并在文
件内容增加后 自动显示新增的文件内容
注意
最后一条命令非常有用 尤其在监控日志文件时 可以在屏幕上一直显示新
增的日志信息
Finger
finger 的常用参数如下
-s 显示用户的注册名 实际姓名 终端名称 写状态 停滞时间 登
时间等信息
-l 除了用-s 选项显示的信息外 还显示用户主目录 登录 shell 邮
状态等信息 以及用户主目录下的.plan .project 和.forward 文件
内容
-p 除了不显示.plan文件和.project文件以外与-l选项相同
Echo $0
Ps –p $$