在使用USB安装系统时,发现系统在启动的时候,出现无法启动的原因,主要现象表现为/dev/root not exist.解决方法可以采用针对系统识别的不同结果进行修改,在syslinux.cfg文件中将地址改为指定的设备。如:
ks=hd:sdb1:/ks.cfg.
在ks文件中,你可以将系统安装到sda的设备中,如:
bootloader --location=mbr --boot-drive=sda clearpart --all --drives=sda part /boot --fstype=ext4 --size=500 --ondisk=sda part / --size=8000 --fstype ext4 --ondisk=sda part swap --size=4096 --ondisk=sda
但这样做,对批量的处理来说,可能就比较繁琐了.
我们可以使用以下的方法进行处理,就可以避免手工修改的工作。
syslinux.cfg文件中。
ks=hd:LABEL=Qfong:/ks.cfg(注意LABEL的长度和制作iso时指定LABEL)
在ks文件中,如果不指定分区,系统会默认将bootloader安装在本次引导启动的盘中,也就是USB所在设备,导致无法继续安装,这时候需要指定bootloader –location=mbr –boot-drive=? boot-drive=哪个设备?这个需要做判断了,在ks文件中,使用%pre选项,该选项是在安装前执行的script文件.下面我们将判断哪个设备的script写在下面,供大家参考。
#%include /tmp/partitions #%pre #!/bin/sh # find the first drive that doesn’t have removable media and isn’t USB DIR=”/sys/block” ROOTDRIVE=”” for DEV in sda sdb sdc sdd sde hda hdb hdc hdd hde; do if [ -d $DIR/$DEV ]; then readlink -f $DIR/$DEV/device | grep -q /usb if [ $? -ne 0 ]; then REMOVABLE=`cat $DIR/$DEV/removable` if (( $REMOVABLE == 0 )); then if [ -z $ROOTDRIVE ]; then ROOTDRIVE=$DEV fi fi fi fi done # Check for RAID controller disks if [ -z $ROOTDRIVE ]; then for DEV in c0d0 c0d1 c0d2 c1d0 c1d1 c1d2; do if [ -d $DIR/cciss!$DEV ]; then if [ -z $ROOTDRIVE ]; then ROOTDRIVE=cciss/$DEV fi fi done fi cat << EOF > /tmp/partitions bootloader –location=mbr –driveorder=$ROOTDRIVE clearpart –all –drives=$ROOTDRIVE –initlabel part /boot –fstype=ext3 –size=75 –ondisk=$ROOTDRIVE part / –fstype=ext3 –size=4096 –ondisk=$ROOTDRIVE –asprimary –grow part swap –size=2048 –ondisk=$ROOTDRIVE EOF
按照你写的分区方法 自动识别到分区了
但是 报Unable to read group information from repositories
这个是由于ISO文件编辑过才报出的错误
但是 我用指定盘符的KS文件 安装 就不会报这个错
我觉得还是 没指定到U盘找到ISO文件
希望给与指点 望回复邮件 Sunnynanbing@163.com
万分感谢
无论是采用U盘还是CDROM的方式安装,你将安装分为2个操作,第一个操作就是识别anaconda(包括ks文件和磁盘)。第二个操作是安装所用到的软件仓库。对repo的内容要了解