闂傚倸鍊搁崐鎼佸磹閹间礁纾圭€瑰嫭鍣磋ぐ鎺戠倞鐟滃繘寮抽敃鍌涚厱妞ゎ厽鍨垫禍婵嬫煕濞嗗繒绠抽柍褜鍓欑粻宥夊磿闁单鍥敍濠婂懐鐒奸柣搴秵閸嬩焦绂嶅⿰鍫熺厸闁告劑鍔岄埀顒傛暬楠炲繘鍩勯崘褏绠氬銈嗗姂閸婃洟寮搁幋婢㈠酣宕惰闊剟鏌熼鐣屾噰妞ゃ垺妫冨畷鐔煎Ω閵夈倕顥氶柣鐔哥矊缁绘帡宕氶幒鎾剁瘈婵﹩鍓涢娲⒑閹稿孩鐓ラ柛妯荤矒瀹曟垿骞樼紒妯绘珖闂侀€炲苯澧撮柟顕€绠栭弫鎾绘偐閼碱剦鍚嬫俊鐐€栧Λ浣规叏閵堝鏁婇柡鍥ュ灪閳锋帒霉閿濆懏鎲哥紒澶屽劋娣囧﹪顢曢姀鈥充淮闂佽鍠氶崑銈夊极閸愵喖纾兼慨妯块哺閻擄綁姊绘担鍝ョШ婵☆偄娼¢幃鐐烘晝閸屾稑浜楅梺闈涱槴閺呮粓鎮¢悢鍏肩厸闁搞儮鏅涙禒婊堟煃瑜滈崜娆忥耿闁秴鐒垫い鎺嶈兌閸熸煡鏌熼崙銈嗗     婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i姀鐘差棌闁轰礁锕弻鈥愁吋鎼粹€崇闂傚倸鍋嗛崹閬嶅Φ閸曨垰鍐€闁靛ě鍛帎缂傚倷娴囩紙浼村磹濠靛钃熼柨婵嗩槹閺呮煡鏌涘☉鍗炴灍闁圭兘浜堕幃妤冩喆閸曨剛顦ㄩ梺缁樻惈缁绘繂顕f繝姘亜閻炴稈鈧厖澹曞┑鐐村灦椤忎即骞嬮敃鈧壕鍧楁煛閸モ晛鏋旂紒鐘荤畺閺岀喓鈧稒岣块幊鍐煟韫囧﹥娅婇柡宀嬬秮楠炴ḿ鈧潧鎲¢崚娑㈡⒑閸濆嫭婀伴柣鈺婂灦閻涱噣宕堕鈧粈鍌炴煕濠靛嫬鍔滈柡鍛偢濮婄粯鎷呴搹鐟扮闂佺懓鎲¢幃鍌炪€侀弽銊ョ窞濠电姴瀛╃紞搴♀攽閻愬弶鈻曞ù婊勭矒楠炴垿鎳滈悙閫涚盎闂佽宕樺▔娑欑濠婂啠鏀介柍鈺佸暞閵囨繃鎱ㄦ繝鍛仩闁瑰弶鎸冲畷鐔碱敇閻旂ǹ鏅搁梺璇叉唉椤煤閻斾赴缂氱憸鏃堛€佸璺何ㄩ柨鏂垮⒔閻﹀牓姊洪幖鐐插姌闁告柨绉撮埢宥夊閵堝棌鎷洪柣鐘充航閸斿苯鈻嶉幇鐗堢厵闁告垯鍊栫€氾拷

45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:启动Hiweed硬盘的步骤

启动Hiweed硬盘的步骤

2016-08-30 05:02:15 来源:www.45fan.com 【

启动Hiweed硬盘的步骤

 

1. Hiweed 简介

Hiweed 是 www.hiweed.com 的成员根据 Linux 的发行版 xubuntu 专为中国用户修改的一个 Linux 版本。在其中加入了 LumaQQ、Gaim、Firefox 中文版,并且删除了一些不常用的软件。Hiweed 启动速度快,运行时占用资源少。其宗旨是“解除新手的痛苦,节省老手的时间”。

2. 起因

首先从 http://www.hiweed.com/ 下载了 Hiweed 的 ISO 文件,但是我又没有 CD 刻录机,所以只能想为法从硬盘来启动它。

根据 http://www.hiweed.com/node/96 的文档说明,Hiweed 确实可以从硬盘来启动。虽然也可以起动 Hiweed,但是毕竟里面提供的那个启动文件是对于 Ubuntu 的。而且,在上面的那个网址中下载的文件,用它们在我的电脑上从硬盘启动 Hiweed 之后,分辨率只能是 640x480 (我是在我的 845GVSR 主板的台式机上试验的)。是否能用 Hiweed 的 ISO 里面提供的文件来实现硬盘启动呢?

3. 分析

将 ISO 中的 casper 目录及内容复制到硬盘的某个盘的根目录下(分区的格式最好是 FAT32)。casper 目录中有个 600MB 左右的 filesystem.squashfs 文件,这就是整个 LiveCD 的主体文件(注1)。 其中还有一个 initrd.gz 文件和一个 vmlinuz 文件,这两个是启动时需要的关键文件(注2)。

要从硬盘启动,还需要 Grub(注3)。在 Grub 的 menu.lst 里面添加如下说明(我将 casper 目录放在 D 盘,Grub 里面是 (hd0,4) 表示):

title Hiweed

kernel (hd0,4)/casper/vmlinuz boot=casper ramdisk_size=1048576 root=/dev/ram rw quiet splash --

initrd (hd0,4)/casper/initrd.gz

从光盘复制出来的这两个文件本来是为 Hiweed 从光盘启动而制做的,所以直接想用来实现硬盘启动是不行的。这样从硬盘启动,到达 "Mounting root file system..." 时,由于找不到放在光盘中的 casper 目录,所以无法继续启动。其实我们只要把启动脚本中从光盘寻找 casper 目录改成让它从硬盘寻找就行了。

4. 实现

initrd.gz 在 WinXP 中用 WinRAR 就可以解开它。解开后得到一个 15MB 左右的 initrd 文件,这是一个 cpio 打包的文件(注4)。其中含有 Linux 启动时最基本的配置脚本和一些基本的可执行文件。

cpio 打包的文件在 Linux 下用以下命令解压:

cpio -idvm < initrd

“initrd”是要解压的文件的名称。在解压后的所有文件中有个 scripts 目录,其下有个 casper 文件。这个就是启动时首先读取的脚本。我们需要修改的内容也在这里面。用文本编辑器打开它,找到 “find_cd()”这里,有如下代码:

find_cd() {

mounted=

for sysblock in $(echo /sys/block/* | tr ' ' '/n' | grep -v loop | grep -v ram); do

devname=$(sys2dev "${sysblock}")

fstype=$(get_fstype "${devname}")

if /lib/udev/cdrom_id ${devname} > /dev/null; then

mount -t ${fstype} -o ro "$devname" $mountpoint || continue

if casper_path $mountpoint; then

echo $(casper_path $mountpoint)

return

else

umount $mountpoint

fi

elif is_usb_device "$sysblock"; then

for dev in $(subdevices "${sysblock}"); do

devname=$(sys2dev "${dev}")

fstype=$(get_fstype "${devname}")

case ${fstype} in

vfat|iso9660|udf)

mount -t ${fstype} -o ro "${devname}" $mountpoint || continue

if casper_path $mountpoint; then

echo $(casper_path $mountpoint)

return

else

umount $mountpoint

fi

;;

esac

done

elif [ "${fstype}" = "squashfs" ]; then

# This is an ugly hack situation, the block device has

# a squashfs image directly on it. It's hopefully

# casper, so take it and run with it.

ln -s "${devname}" "${devname}.${fstype}"

echo "${devname}.${fstype}"

return

fi

done

}

从上面的代码来看,其实红色字的部分应该也可以实现从硬盘启动的,不知道为什么不行。没关系,我们只要它从硬盘开始搜索 casper 目录的位置的代码就行了。把这些上面这些代码的蓝色部分都注释掉(在此行代码最前面加上 # 号,就像上面绿色部分一样)。完成之后保存。然后再用 cpio 打包回去就行了。

但是,要用 cpio 解开又打包,那就得装有 Linux 才行。其实在 WinXP 下同样也可以完成这样的修改。

这个经过 cpio 打包的 initrd 文件且没有被压缩,所以可以直接编辑它的内容。在 cpio 打包好的文件中,各各内含在里面的文件有一定的上下文关系,如果增加或减少了里面的内容,就会导致修改位置后面的一些文件与原来标记的位置不符,所以无法被正常读龋但是只要能保持原来在里面的文件的位置关系,还是可以修改某些内容的。

在 WinXP 下用 UltraEdit 之类的编辑器打开,搜索到 find_cd() 代码的位置。修改时不能增加或减少字节,同时又要使相应的行被注释。每行代码前面都有很多空格,只要选其中一个空格,把它改成“#”,就可以达到目的了。完成之后用 zip 压缩,改名为 initrd.gz 替换掉原来那个就可以从硬盘启动了。启动时的引导界面和用光盘启动的一模一样。

5. 疑问

上面 find_cd() 的代码中,红色的部分应该也可以让程序搜索硬盘从而从硬盘启动的。

if /lib/udev/cdrom_id ${devname} > /dev/null; then # 如果设备是光驱,就加载这个设备看看是否有相关文件

elif is_usb_device "$sysblock"; then # 如果设备不是 USB 设备,就加载这个设备看看是否有相关文件

为什么代码中只保留红色部分时可以从硬盘启动,而代码全部保留时就不能?即使简单的把 is_usb_device() 的返回值都改成 1 也不行。

 

6. 参考文献

注1 http://squashfs.sourceforge.net/

注2 http://soft.yesky.com/os/lin/217/2145217.shtml

注3 http://dreammengjian.blog.hexun.com/3961110_d.html

注4 http://www.gnu.org/software/cpio/

 

 

本文地址:http://www.45fan.com/a/question/69561.html
Tags: 简单 启动 Hiweed
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部