Enabling swap space的文字畫面 |
尚未結案
|
ksvm
一般會員 發表:29 回覆:42 積分:14 註冊:2004-07-27 發送簡訊給我 |
|
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
http://www.douzhe.com/docs/linux/642.html edHat 7.3 Live in CDROM HowTo
2004-04-23 15:18 pm
作者:knothair
來自:Linux知識寶庫
http://www.douzhe.com/docs/linux/
Contact: 無名 思路:
使用cdrom引導並運行linux,關鍵要解決如下問題:
一:如何把系統運行時候使用的檔系統/dev,/var,/tmp變成可寫。
二:如何改變系統引導順序
基本步驟:
(0) 環境準備
。準備一個PC
大硬碟
光碟燒錄機
128M記憶體
分區如下
/dev/hda1 linux boot ext2
/dev/hda2 linux root ext2
/dev/hda3 linux swap
/dev/hda4 extendend
/dev/hda5 linux root ext2 至少650M以上 。main install安裝。
boot分區在/dev/hda1,
root分區在/dev/hda2,
swap分區在/dev/hda3。
必要的工具,例如mkisofs、cdrecord等。 。test install安裝
一個分區在/dev/hda5,
swap使用/dev/hda3,
只安裝需要放置到CDROM的軟體.
注意:不能破壞主引導磁區,它是通過main inst的lilo引導的 。雙引導配置
重新啟動電腦,此時會進入main install,執行如下步驟:
#mkdir /mnt/lfs
#mount –t ext2 /dev/hda5 /mnt/lfs
# vi /etc/lilo
# /sbin/lilo
——————————————————————
/etc/lilo.conf檔內容如下:
prompt
timeout=50
default=linux
boot=/dev/had
map=/boot/map
install=/boot/boot.b
message=/boot/message
linear image=/boot/vmlinuz-2.4.18-3
label=main_inst
initrd=/boot/initrd-2.4.18-3.img
read-only
append="ramdisk=20480"
root=/dev/hda2 <——main install 的root分區 image =/mnt/lfs/boot/vmlinuz-2.4.18-3
label=test_inst
read-only
append="ramdisk=32768"
root=/dev/hda5 &——test install的root分區
———————————————————————————— 。test install環境調整
重新引導,選擇test install ;
確認test install 能夠自引導並且一切都正常;
然後根據需要,可以做:
刪除不必要的套裝軟體,
安裝用戶應用軟體,
重新編譯內核。等等 (一)配置test install環境 。重新引導,選擇main install ,並執行
#mount –t ext2 /dev/hda5 /mnt/lfs
。配置/var,/dev到ramdisk系統
#vi /mnt/lfs/etc/rc.d/rc.iso
_______________________________
創建/mnt/lfs/etc/rc.d/rc.iso
# /var
mke2fs -q -i 1024 /dev/ram1 16384
mount /dev/ram1 /var -o defaults,rw
cp -a /lib/var / # /dev
mke2fs -q -i 1024 /dev/ram2 16384
mount /dev/ram2 /dev -o rw
cp -a /lib/dev /
(建立這麼大的/dev是因為inode數目的限制,dev下檔特別多)
____________________________________________________
。編輯/mnt/lfs/etc/rc.sysnit
a) 禁止重新mount 根檔系統位元rw
# Remount the root filesystem read-write.
# state=`awk '/(^/dev/root| / / { print $4 }' /proc/mounts`
#[ "$state" != "rw" ] &&
# action $"Remounting root filesystem in read-write mode: " mount -n -o remount,rw /
b) 調用rc.iso腳步
在
# Set the path
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
HOSTNAME=`/bin/hostname`
一節之後,增加如下內容
# To boot from cdrom
. /etc/rc.d/rc.iso
c)禁止啟動交換分區
# Now turn on swap in case we swap to files.
#swapon -a
#action $"Enabling swap space: " /bin/true d)禁止執行fsck
在這個位置
if [ -f /fsckoptions ]; then
fsckoptions=`cat /fsckoptions`
else
fsckoptions=
fi
增加語句,用來控制是否執行fsck
fastboot=yes
fsckoptions= e)禁止mount 其他檔系統
# Mount all other filesystems (except for NFS and /proc, which is already
# mounted). Contrary to standard usage,
# filesystems are NOT unmounted in single user mode.
#action $"Mounting local filesystems: " mount -a -t nonfs,smbfs,ncpfs -O no_netdev
f) 禁止自動執行檔系統檢查
# create the crash indicator flag to warn on crashes, offer fsck with timeout
# touch /.autofsck
。編輯/etc/rc.d/init.d/random
修改如下語句
random_seed=/var/lib/random-seed
為
random_seed=/var/run/random-see 。創建並執行如下腳步,它建立了/var 、/tmp、/dev的範本, 創建/etc/mtab的鏈結
#cd /mnt/lfs
# vi create_iso.sh
# sh create_iso.sh ————————————————————————
#!/bin/sh
echo tmp
rm -fR /mnt/lfs/tmp
ln -s var/tmp /mnt/lfs/tmp ###
echo mtab
touch /mnt/lfs/proc/mounts
rm /mnt/lfs/etc/mtab
ln -s /proc/mounts /mnt/lfs/etc/mtab
###
echo dev
mkdir /mnt/lfs/lib/dev
cp –a /mnt/lfs/dev /mnt/lfs/lib
###
echo var
mv /mnt/lfs/var/lib /mnt/lfs/lib/var-lib
mv /mnt/lfs/var /mnt/lfs/lib
mkdir /mnt/lfs/var
ln -s /lib/var-lib /mnt/lfs/lib/var/lib
for i in `find /mnt/lfs/lib/var/log -type f`; do cat /dev/null > $i; done
rm `find /mnt/lfs/lib/var/lock -type f`
rm `find /mnt/lfs/lib/var/run -type f`
______________________________________________ 。 確認test install環境的正確
重新引導,選擇test install
這時這個install應該象一個cdrom似的。
如果有什麼工作不正常,或者重新引導,選擇main install後進行修復;
或者在test install中執行如下命令後可以進行修復:
mount -o remount,rw / (二) 創建boot image
。重新引導,選擇main install 。產生一個可以啟動的軟碟
# mkbootdisk --mkinitrdargs --with=ide-cd `uname -r` 。按照如下步驟抽取boot.img中的文件
# dd if=/dev/fd0 of=/tmp/cdrom.img bs=1440k count=1
# mkdir /mnt/bootfd
# mount -o loop -t msdos /tmp/cdrom.img /mnt/bootfd
# zcat /mnt/bootfd/initrd.img > /tmp/initrd-cdrom
# mkdir /mnt/initrd
# mount -o loop /tmp/initrd-cdrom /mnt/initrd
。拷貝test install的內核到boot.img文件中
cp /mnt/lfs/boot/zImage /mnt/bootfd
注意:根據實際情況,有可能需要修改zImage的名字
。拷貝cdrom驅動模組到cdrom.img中
#cd /mnt/initrd/lib
#cp /lib/modules/2.4.18-3/kernel/drivers/cdrom/cdrom.o .
#cp /lib/modules/2.4.18-3/kernel/drivers/ide/ide-cd.o .
#cp /lib/modules/2.4.18-3/kernel/fs/nls/nls_iso8859-1.o .
。 編輯linuxrc檔
# vi /mnt/initrd/linuxrc
----------------------------------
#!/bin/nash echo "Loading cdrom module"
insmod /lib/cdrom.o
echo "Loading ide-cd module"
insmod /lib/ide-cd.o
echo "Loading nls_iso8859-1 module"
insmod /lib/nls_iso8859-1.o
echo Mounting /proc filesystem
mount -t proc /proc /proc
echo Creating root device
mkrootdev /dev/root
echo 0x0100 > /proc/sys/kernel/real-root-dev
echo Mounting root filesystem
mount --ro -t iso9660 /dev/root /sysroot
umount /proc
pivot_root /sysroot /sysroot/initrd
---------------------------------------------
。編輯boot.img文件中的syslinux.cfg
# cd /mnt/bootfd
# vi syslinux.cfg
_____________________________________
default linux
label linux
kernel zImage
append initrd=initrd.img root=/dev/hdc rmdisk=32768 ———————————————————————
注意:root= 後面是光碟機設備名稱 。壓縮initrd,並拷貝到boot.img
# umount /mnt/initrd
# gzip -9 < /tmp/initrd-cdrom > /mnt/bootfd/initrd.img 。拷貝boot image檔
# umount /mnt/bootfd
# mv /tmp/cdrom.img /mnt/lfs/boot.img (三) 創建並校驗iso image
。繼續在main install中工作
。創建iso image # cd /root/lfs & 確保其空間足夠存儲iso image
#mkisofs -R -b boot.img -c boot.catalog -o boot.iso /mnt/lfs 。校驗iso image的正確性 a) 通過loop 設備 mount 光碟映象檔
# mkdir /mnt/iso
# mount boot.iso /mnt/iso -o loop -t iso9660
b) 校驗boot.iso 內容正確
c) umount boot.iso
umount /mnt/iso
(四) 刻錄光碟
1) 使用linux來刻錄
刻錄設備的安裝請參考CD-Writing HOWTO。
命令行:
cdrecord -v speed=
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |