close

#建立usb磁區
fdisk /dev/sdb
n->p->1->enter->+500M
n->p->2->enter->+1000M
n->p->3->enter->enter
w
#usb格式化
mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb3
mkswap /dev/sdb2
#掛載usb
mkdir /mnt/{boot,sysroot}
mount /dev/sdb1 /mnt/boot/
mount /dev/sdb3 /mnt/sysroot/./
#建立系統目錄結構
rpm -ivh --root=/mnt/sysroot/ setup-2.8.14-20.el6_4.1.noarch.rpm
rpm -ivh --root=/mnt/sysroot/ --nodeps filesystem-2.4.30-3.el6.x86_64.rpm
#安裝所需程式
yum install --installroot=/mnt/sysroot/ --releasever=/ bash coreutils vim-minimal vim-enhanced iputils util-linux tar rpm man openssh-clients gawk sed grep findutils mlocate shadow-utils passwd SysVinit ncurses procps which net-tools util-linux parted nfs-utils initscripts bzip2 gzip iptables openssh-server rsyslog
#建立環境變數
cp -rf /etc/skel/.bash* /mnt/sysroot/root/
#定制支持usb存儲啟動的ramdisk(initrd文件)
dracut -f --add-drivers usb-storage /mnt/boot/initrd.img `uname -r`
#從真機上拷貝vmlinuz到usblinux對應目錄
cp /boot/vmlinuz-2.6.32-573.el6.x86_64 /mnt/boot/vmlinuz
#從真機上拷貝內核模塊到usblinux對應目錄
cp -rf /lib/modules/2.6.32-573.el6.x86_64/ /mnt/sysroot/lib/modules/
#安裝grub包,用--nodeps脫離依賴性
rpm -ivh --nodeps --root=/mnt/sysroot/ grub-0.97-94.el6.x86_64.rpm
cp -rf /mnt/sysroot/boot/* /mnt/boot/
#grub-install安裝到/dev/sdb
grub-install --root-directory=/mnt --recheck /dev/sdb
cp /boot/grub/splash.xpm.gz /mnt/boot/grub/
#刪除(fd0)及(hd1)
vi /mnt/boot/grub/device.map

vi /mnt/boot/grub/grub.conf
default=0
timeout=-1

splashimage=(hd0,0)/grub/splash.xpm.gz

title usblinux
root (hd0,0)
kernel /vmlinuz ro root=/dev/sda3
initrd /initrd.img

cp /etc/passwd /mnt/sysroot/etc/
chroot /mnt/sysroot/
pwconv
grpconv
passwd root
vi /etc/fstab
/dev/sda1 /boot ext4 defaults 0 0
/dev/sda3 / ext4 defaults 0 0
/dev/sda2 swap swap 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
tmpfs /dev/shm tmpfs defaults 0 0
exit


讓usblinux支持網絡
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /mnt/sysroot/etc/sysconfig/network-scripts/
cp /etc/sysconfig/network /mnt/sysroot/etc/sysconfig/

但重啟後還會有一個錯誤信息:
(會有一個usb_storage的報錯信息,但此信息沒有影響,是mkinitrd --with usb_storage時造成的)

如果一定要除掉這句報錯,可以手工修改initrd文件

# cd /tmp
# cp /usb/boot/initrd.img /tmp/initrd.img.gz
# gunzip initrd.img.gz
# cpio -i --make-directories < initrd.img
# rm initrd.img
# vim init --打開,刪除以下的幾行
echo "loading usb-storage.ko module"
insmod /lib/usb-storage.ko
echo waiting for dirver initialization
stabilized /proc/bus/usb/devices
echo waiting for driver initializtin

# find . | cpio -c -o > ../initrd.img
# gzip -9 ../initrd.img
# cp ../initrd.mg.gz /usb/boot/initrd.img
 

arrow
arrow
    文章標籤
    linux
    全站熱搜

    龍之家族 發表在 痞客邦 留言(0) 人氣()