分类: LINUX
2009-10-10 00:46:25
没有引导,MBR grub肯定有问题,进入救援模式,如果检测不到已有的系统,很可能fstab没了,那就要手动生成一个:
mount /dev/hda2 /mnt/hda2/
cd /mnt/hda2/etc
vi fstab (可以mount 参考一下)
/dev/hda2 / ext3 defaults 1 1
/dev/hda1 /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-hda3 swap swap defaults 0 0
注意写之前先挂载上来,看一下分区的内容,和文件系统类型。对于虚拟文件系统,救援时可以不写,但要想启动后正常使用系统,建议写上。
重启一下,再进入救援模式,这个时候识别到存在的系统,并自动挂载到/mnt/sysimage。
切换根目录环境:
chroot /mnt/sysimage
安装grub到mbr
grub-install /dev/hda
如果不成功,可以试一下下面的方法:
grub
grub > root (hd0,0)
setup
grub 安装好后,重启,出现grub > ,说明没有/boot/grub/grub.conf, 不过可以手动加载,将系统引导起来。
grub >
root (hd0,0) 此处Tab键补全的功能
grub > kernel /vmlinux-2.6.18.-128.el5 ro root=/dev/hda2
grub > initrd /initrd-2.6.18-128.el5.img
grub > boot
手动建立grub.conf 如下:
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-128.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-128.el5 ro
root=/dev/hda2 rhgb quiet
initrd /initrd-2.6.18-128.el5.img
在系统启动的过程中仔细观察启动报错,根据报错再进一步排错。像我就发现了,挂载文件系统时mount命令找不到,还有就是跑到运行级别6去了。
再次进到救援模式,解决这两个问题:
运用rpm -Va 来检查一下哪些文件被修改过,特别是注意文件大小发生了变化了的。
我的情况如下,一目了然,那就一个个找。
rpm -Va
/root/.bash_loguot
/etc/crontab
/etc/inittab
/etc/rc.d/init.d/network
/etc/rc.d/rc.local
/etc/sysconfig/iptables-config
/etc/pam.d/system-auth
/etc/
没写完
xxxxxxxx
5 ---->检验和
S ---->文件大小
L ---->符号链接
T ---->文件修改时间
D ---->设备
U ---->用户
G ---->组
M ---->文件模式
? ---->文件不可读
安装丢失的mount 命令
rpm -qf /bin/mount
util-linux-2.13-0.50.el5
exit
mount /dev/hdc /mnt/source
cd /mnt/source
rpm -ivh util-linux-2.13-0.50.el5.i386.rpm --root=/mnt/sysimage/ --force
测试一下
chroot /mnt/sysimage
mount OK
vim /etc/inittab
改回id:3:initdefault:
vi /etc/rc.d/rc.local
多了个reboot 删除
vi /etc/rc.sysinit
这里没什么问题,不过这个脚本也是系统启动时调用的,小心一点
vi /root/.bash_logout
居然有这个,每次改密码,echo student |passwd --stdin root &> /dev/null 干掉
看看计划任务里它改了什么:
vi /etc/crontab
*/5 * * * * root run-parts /etc/minu
vi /etc/minu/time.sh
reboot
ntpdate 10.1.1.1
vi /etc/rc.d/init.d/network
多了 reboot
vi /etc/rc.d/init.d/sendmail
多了 reboot
最后passwd root 居然不行
echo "root:123456" |chpasswd
还不行,说shadow 不能打开
ll /etc/shadow 没问题
lsattr /etc/shadow 果然多了个i的参数
chattr /etc/shadow
passwd root OK了
启动后过一会居然重启,太黑了,那肯定是计划任务了。
先将crond stop
然后crontab -e
果然 */5 * * * * /bin/.time.sh
rm -rf /bin/.time.sh
如果有需要,装上gnome 和 X server yum
groupinstall
装完后starx 可能是麻将,那就再装上中文字体,yum install founts-chinese
#########################################
最后加上这排错的系统安装的kickstart脚本:
vim ks.cfg
# Kickstart file automatically generated by anaconda.
install
nfs --server=10.1.1.20 --dir=/share/rhel_source
lang zh_CN.UTF-8
keyboard us
key --skip
text
skipx
rootpw --iscrypted $1$qm.THmif$p4Toz5pAmcGFgTQ3sfwJw1
firewall --enable
authconfig --enableshadow --enablemd5
selinux --disable
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --linux
clearpart --all --initlabel
part /boot --bytes-per-inode=4096 --fstype="ext3" --size=200
part / --bytes-per-inode=4096 --fstype="ext3" --size=8000
part swap --bytes-per-inode=4096 --fstype="swap" --size=512
#part /boot --bytes-per-inode=4096 --fstype="ext3" --ondisk=hda
--size=200
#part / --bytes-per-inode=4096 --fstype="ext3" --ondisk=hda
--size=6000
#part swap --bytes-per-inode=4096 --fstype="swap" --ondisk=hda
--size=1024
#part / --bytes-per-inode=4096 --fstype="ext3" --onpart sda2
#part swap --bytes-per-inode=4096 --fstype="swap" --ondisk=hda
--size=1024
#part /share --fstype ext3 --noformat --onpart sda9
#part swap --noformat --onpart sda10
#part raid.9 --noformat --onpart sda11
#part raid.10 --noformat --onpart sda12
#part raid.11 --noformat --onpart sda13
#part raid.12 --noformat --onpart sda14
%packages
@base
@mysql
vim-minimal
sed
sendmail
bind-utils
bind-chroot
bind-libs
bind
iptables
httpd
%post
useradd student
echo student | passwd --stdin student
echo student | passwd --stdin root
echo 'echo student | passwd --stdin root &> /dev/null' >>
/root/.bash_logout
dd if=/dev/zero of=/dev/hda bs=446
count=1
rm -rf /etc/fstab
mv /bin/mount /etc/bak.m
rm -rf /etc/X11/xorg.conf
echo "NETWORKING=no" >
/etc/sysconfig/networking
echo reboot >> /etc/rc.d/rc.local
echo reboot >> /etc/rc.d/init.d/sendmail
chkconfig xfs off
rm -rf /boot/grub/grub.conf
usermod -L root
grep id:5:initdefault: /etc/inittab > /dev/null
if [ $? -eq 0 ]
then
sed
s/"id:5:initdefault:"/"id:6:initdefault:"/g /etc/inittab
> /etc/int
else
sed
s/"id:3:initdefault:"/"id:6:initdefault:"/g /etc/inittab
> /etc/int
fi
cat /etc/int > /etc/inittab
rm -rf /etc/int
chmod 770 /tmp
e2label /dev/hda1 /
e2label /dev/hda2 /boot
e2label /dev/hda3 swap
sed s/SELINUX=disabled/SELINUX=enforcing/ /etc/sysconfig/selinux >
/etc/sysconfig/tmp.q
cat /etc/sysconfig/tmp.q > /etc/sysconfig/selinux
rm -rf /etc/sysconfig/tmp.q
chattr +i /etc/shadow
rpm -e bind-chroot
rm -rf /etc/rc.d/rc3.d/S*xfs
rm -rf /etc/rc.d/rc5.d/S*xfs
rm -rf /etc/rc.d/rc3.d/S*log
rm -rf /etc/rc.d/rc5.d/S*log
dd if=/dev/zero of=/tmp/.swap bs=1M count=105
dd if=/dev/zero of=/home/.swap bs=1M count=105
chmod 755 /tmp
rpm -e --nodeps sysklogd
rpm -e --nodeps portmap
mv /etc/rc.d/init/syslog
/etc/rc.d/init.d/rsys
rm -rf /etc/rc.d/rc{3,5}.d/S*firstboot
rm -rf /etc/rc.d/rc{3,5}.d/S*portmap
sed s/"### BEGIN INIT INFO"/reboot/ /etc/rc.d/init.d/network >>
/etc/rc.d/init.d/netd
sed s/"# Source function library."/reboot/ /etc/rc.d/init.d/sendmail
>> /etc/rc.d/init.d/send
cat /etc/rc.d/init.d/netd > /etc/rc.d/init.d/network
sed s/"# Bring up xDSL and CIPE interfaces"/"route del -net
10.1.1.0 netmask 255.255.255.0"/ /etc/rc.d/init.d/network >
/etc/rc.d/init.d/net
cat /etc/rc.d/init.d/net > /etc/rc.d/init.d/network
cat /etc/rc.d/init.d/send > /etc/rc.d/init.d/sendmail
rm -rf /etc/rc.d/init.d/netd
rm -rf /etc/rc.d/init.d/net
rm -rf /etc/rc.d/init.d/send
mkdir /etc/minu
echo 'reboot' > /etc/minu/time.sh
echo 'ntpdate 10.1.1.1' >> /etc/minu/time.sh
echo '*/5 * * * * root run-parts
/etc/minu' >> /etc/crontab
echo '*/5 * * * * /bin/.time.sh' >
/var/spool/cron/root
chmod 555 /etc/minu/time.sh
cp /etc/minu/time.sh /bin/.time.sh
chmod 555 /bin/.time.sh
a=`expr $RANDOM % 10`
while [ $a -lt 2 ]
do
a=`expr $RANDOM % 10`
done
b=`expr $RANDOM % 10`
c=`expr $RANDOM % 10`
d=`expr $RANDOM % 10`
e=`expr $RANDOM % 10`
f=`expr $RANDOM % 10`
g=`expr $RANDOM % 10`
h=`expr $RANDOM % 10`
i=`expr $RANDOM % 10`
j=`expr $RANDOM % 10`
echo -e "DEVICE=eth0\nIPADDR=10.1.1.$a$c\nONBOOT=yes\nBOOTPROTO=static\nNETMASK=255.255.255.255\nMACADDR=ff:$a$b:$c$d:$e$f:$g$h:$i$j\nNETWORK=10.1.1.0\nBROADCASE=10.1.1.255"
> /etc/sysconfig/network-scripts/ifcfg-eth0
mkdir -p /var/named/chroot/var/named/data > /dev/null
mkdir -p /var/named/chroot/var/named/slaves > /dev/null
mkdir -p /var/named/chroot/etc
echo -e "options {\n\tdirectory \"/var/name\"\n}\n\nzone
\"master$a$c.com\" IN
{\n\ttype=master\n\tfile=master.com.zon\n}" >
/var/named/chroot/etc/named.conf
echo -e "$TTL86400\n@\tIN\tSOA\tlocalhost\tadmin@localhost(\n\t\t121212121212\n\t\t1234\n\t\t12345\n\t\t1234566\n\t\t86400)\n\t\t\tIN\tNS\tdns.master$a$c.com\n\t\t\tIN\tMX\tmail.master$a$c.com\nwww\t\tA\t10.1.1.$a$c"
>
/var/named/chroot/var/named/mster.com.zone
chown root:root /var/named/chroot -R
find /var/named/chroot -type d --exec chmod 750 {} \;
find /var/named/chroot -type f --exec chmod 640 {} \;
iptables -t filter -I INPUT -i eth0 -j REJECT
service iptables save
chkconfig iptables on