鱼眼 發表於 2008-9-8 18:49:29

FreeBSD系统下创建DVD.iso安装光盘

<p>准备刻一张FreeBSD-7.0-RELEASE的DVD,网上很多介绍都是在Windows下使用什么iso提取工具的,貌似很麻烦。参考了一些FreeBSD高手的实现,我写了一个简单的脚本,主要功能是从3张disc*.iso创建出一个dvd.iso<br />
<br />
1,准备工作:<br />
工作目录 work/ 和 3张disc*.iso, 比如<br />
work/<a href="ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/7.0/7.0-RELEASE-i386-disc1.iso" target="_blank">7.0-RELEASE-i386-disc1.iso</a><br />
work/<a href="ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/7.0/7.0-RELEASE-i386-disc2.iso" target="_blank">7.0-RELEASE-i386-disc2.iso</a><br />
work/<a href="ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/7.0/7.0-RELEASE-i386-disc3.iso" target="_blank">7.0-RELEASE-i386-disc3.iso</a><br />
<br />
2,用以下代码创建脚本文件,比如 mkdvd.sh,放在work目录下。用root用户执行,将在work目录下产生一个7.0-RELEASE-i386-dvd.iso的文件。<br />
<br />
<table style="border-collapse: collapse" bordercolor="#999999" cellspacing="0" cellpadding="0" width="95%" bgcolor="#f1f1f1" border="1">
    <tbody>
      <tr>
            <td>
            <p style="margin: 5px; line-height: 150%"><code><span style="color: rgb(0,0,0)"><font face="新宋体"><span style="color: rgb(0,0,204)">#</span><span style="color: rgb(0,0,204)">!</span><span style="color: rgb(0,0,204)">/</span>bin<span style="color: rgb(0,0,204)">/</span>sh<br />
            <br />
            disc1<span style="color: rgb(0,0,204)">=</span><span style="color: rgb(0,0,204)">`</span>ls <span style="color: rgb(0,0,204)">|</span> grep <span style="color: rgb(255,0,255)">&quot;disc1.iso&quot;</span><span style="color: rgb(255,0,255)">`</span><br />
            disc2<span style="color: rgb(0,0,204)">=</span><span style="color: rgb(0,0,204)">`</span>ls <span style="color: rgb(0,0,204)">|</span> grep <span style="color: rgb(255,0,255)">&quot;disc2.iso&quot;</span><span style="color: rgb(255,0,255)">`</span><br />
            disc3<span style="color: rgb(0,0,204)">=</span><span style="color: rgb(0,0,204)">`</span>ls <span style="color: rgb(0,0,204)">|</span> grep <span style="color: rgb(255,0,255)">&quot;disc3.iso&quot;</span><span style="color: rgb(255,0,255)">`</span><br />
            <br />
            dvd<span style="color: rgb(0,0,204)">=</span><span style="color: rgb(0,0,204)">`</span>echo $disc1 <span style="color: rgb(0,0,204)">|</span> sed <span style="color: rgb(255,0,255)">&quot;s/disc1/dvd/&quot;</span><span style="color: rgb(255,0,255)">`</span><br />
            <br />
            <span style="color: rgb(0,0,204)">#</span><span style="color: rgb(0,0,204)">#</span> Prepare temporary dir to store dvd files<br />
            <span style="color: rgb(0,0,255)">if</span>
                                                                                <span style="color: rgb(255,0,0)">test</span>
                                                                                <span style="color: rgb(0,0,204)">-</span>e tmp <span style="color: rgb(0,0,204)">&</span><span style="color: rgb(0,0,204)">&</span>
                                                                                <span style="color: rgb(255,0,0)">test</span>
                                                                                <span style="color: rgb(0,0,204)">-</span>d tmp<br />
            then<br />
            &nbsp;&nbsp;&nbsp;&nbsp;rm <span style="color: rgb(0,0,204)">-</span>fr tmp<br />
            fi<br />
            mkdir tmp<br />
            <br />
            <span style="color: rgb(0,0,204)">#</span><span style="color: rgb(0,0,204)">#</span> Extract contents of each disc<span style="color: rgb(0,0,204)">*</span><span style="color: rgb(0,0,204)">.</span>iso to temporary dir<br />
            <span style="color: rgb(0,0,255)">for</span> disc in $disc3 $disc2 $disc1<br />
            <span style="color: rgb(0,0,255)">do</span><br />
            &nbsp;&nbsp;&nbsp;&nbsp;mdconfig <span style="color: rgb(0,0,204)">-</span>a <span style="color: rgb(0,0,204)">-</span>f $disc <span style="color: rgb(0,0,204)">-</span>u 66<br />
            &nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0,0,255)">if</span>
                                                                                <span style="color: rgb(255,0,0)">test</span>
                                                                                <span style="color: rgb(0,0,204)">-</span>e <span style="color: rgb(0,0,204)">/</span>dev<span style="color: rgb(0,0,204)">/</span>md66<br />
            &nbsp;&nbsp;&nbsp;&nbsp;then<br />
            &nbsp;&nbsp;&nbsp;&nbsp;echo Extract $disc <span style="color: rgb(0,0,204)">.</span><span style="color: rgb(0,0,204)">.</span><span style="color: rgb(0,0,204)">.</span><br />
            &nbsp;&nbsp;&nbsp;&nbsp;mount <span style="color: rgb(0,0,204)">-</span>t cd9660 <span style="color: rgb(0,0,204)">/</span>dev<span style="color: rgb(0,0,204)">/</span>md66 <span style="color: rgb(0,0,204)">/</span>mnt<br />
            &nbsp;&nbsp;&nbsp;&nbsp;tar <span style="color: rgb(0,0,204)">-</span>cf <span style="color: rgb(0,0,204)">-</span>
                                                                                <span style="color: rgb(0,0,204)">-</span>C <span style="color: rgb(0,0,204)">/</span>mnt <span style="color: rgb(0,0,204)">.</span>
                                                                                <span style="color: rgb(0,0,204)">|</span> tar <span style="color: rgb(0,0,204)">-</span>xf <span style="color: rgb(0,0,204)">-</span>
                                                                                <span style="color: rgb(0,0,204)">-</span>C tmp<span style="color: rgb(0,0,204)">/</span><br />
            &nbsp;&nbsp;&nbsp;&nbsp;umount <span style="color: rgb(0,0,204)">/</span>mnt<br />
            &nbsp;&nbsp;&nbsp;&nbsp;mdconfig <span style="color: rgb(0,0,204)">-</span>d <span style="color: rgb(0,0,204)">-</span>u 66<br />
            &nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0,0,255)">else</span><br />
            &nbsp;&nbsp;&nbsp;&nbsp;echo Can <span style="color: rgb(0,0,255)">not</span> create memory disk<span style="color: rgb(0,0,204)">.</span><br />
            &nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(255,0,0)">exit</span>
                                                                                <span style="color: rgb(0,0,204)">-</span>1<br />
            &nbsp;&nbsp;&nbsp;&nbsp;fi<br />
            done<br />
            <br />
            <span style="color: rgb(0,0,204)">#</span><span style="color: rgb(0,0,204)">#</span>
                                                                                <span style="color: rgb(255,0,0)">Merge</span> index to point to the first disc<br />
            echo <span style="color: rgb(255,0,0)">Merge</span> index <span style="color: rgb(0,0,204)">.</span><span style="color: rgb(0,0,204)">.</span><span style="color: rgb(0,0,204)">.</span><br />
            cd tmp<br />
            cat INDEX <span style="color: rgb(0,0,204)">|</span> sed <span style="color: rgb(255,0,255)">&quot;s/||2/||1/g&quot;</span>
                                                                                <span style="color: rgb(0,0,204)">&gt;</span> index<br />
            cat index <span style="color: rgb(0,0,204)">|</span> sed <span style="color: rgb(255,0,255)">&quot;s/||3/||1/g&quot;</span>
                                                                                <span style="color: rgb(0,0,204)">&gt;</span> INDEX<br />
            cat INDEX <span style="color: rgb(0,0,204)">|</span> sed <span style="color: rgb(255,0,255)">&quot;s/|3/|1/g&quot;</span>
                                                                                <span style="color: rgb(0,0,204)">&gt;</span> index<br />
            mv index INDEX<br />
            cd <span style="color: rgb(0,0,204)">.</span><span style="color: rgb(0,0,204)">.</span><br />
            <br />
            <span style="color: rgb(0,0,204)">#</span><span style="color: rgb(0,0,204)">#</span> Make dvd iso <span style="color: rgb(255,0,0)">file</span><br />
            echo Make $dvd <span style="color: rgb(0,0,204)">.</span><span style="color: rgb(0,0,204)">.</span><span style="color: rgb(0,0,204)">.</span><br />
            mkisofs <span style="color: rgb(0,0,204)">-</span>R <span style="color: rgb(0,0,204)">-</span>no<span style="color: rgb(0,0,204)">-</span>emul<span style="color: rgb(0,0,204)">-</span>boot <span style="color: rgb(0,0,204)">-</span>b boot<span style="color: rgb(0,0,204)">/</span>cdboot <span style="color: rgb(0,0,204)">-</span>o $dvd tmp<br />
            rm <span style="color: rgb(0,0,204)">-</span>fr tmp<br />
            <br />
            <span style="color: rgb(255,0,0)">exit</span> 0</font></span></code></p>
            </td>
      </tr>
    </tbody>
</table>
</p>
頁: [1]
查看完整版本: FreeBSD系统下创建DVD.iso安装光盘