静一夜花开半夏 發表於 2023-7-14 00:00:00

ubuntu下kvm 命令行安装64位ubuntu报"Couldn't find hvm kernel for Ubuntu tree."的问题分析

<p>
        <strong>1.安装ubuntu时使用的virt-install的配置:</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_399182">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">virt-</code><code class="bash functions">install</code> <code class="bash plain">\</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">--name test4 \</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">--</code><code class="bash functions">ram</code> <code class="bash plain">1024 \</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">--disk path=</code><code class="bash plain">/data/01_ubuntu/ubuntu4</code><code class="bash plain">.img,size=6 \</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">--vcpus 1 \</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">--hvm \</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash plain">--os-</code><code class="bash functions">type</code> <code class="bash plain">linux \</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="bash plain">--network network=default \</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="bash plain">--os-variant ubuntuquantal \</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="bash plain">--graphics none \</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="bash plain">--console pty,target_type=serial \</code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="bash plain">--location </code><code class="bash plain">/data/00_osfile/ubuntu-16</code><code class="bash plain">.04.1-server-amd64.iso \</code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                        <code class="bash plain">--extra-args </code><code class="bash string">'console=ttyS0,115200n8 serial'</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        报错如下:</p>
<p>
        ERROR Couldn't find hvm kernel for Ubuntu tree.<br>
        Domain installation does not appear to have been successful.</p>
<p>
        通过查资料发现,virt-install可以开debug模式的,加入--debug选项即可</p>
<p>
        <strong>2.virt-install的debug模式得到的结果:</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_542346">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain"> DEBUG (urlfetcher:268) </code><code class="bash functions">local</code> <code class="bash plain">hasFile: Couldn't </code><code class="bash functions">find</code> <code class="bash plain">/var/lib/libvirt/boot/virtinstmnt</code><code class="bash plain">.xPL9y1</code><code class="bash plain">/current/images/MANIFEST</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain"> DEBUG (urlfetcher:89) Fetching URI: </code><code class="bash plain">/var/lib/libvirt/boot/virtinstmnt</code><code class="bash plain">.xPL9y1</code><code class="bash plain">/install/netboot/version</code><code class="bash plain">.info</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">Retrieving </code><code class="bash functions">file</code> <code class="bash plain">version.info... | 58 B 00:00:00 </code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain"> DEBUG (urlfetcher:1164) Didn't </code><code class="bash functions">find</code> <code class="bash plain">any known codename </code><code class="bash keyword">in</code> <code class="bash plain">the URL string</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain"> DEBUG (urlfetcher:511) Detected distro name=Ubuntu osvariant=linux</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain"> DEBUG (urlfetcher:268) </code><code class="bash functions">local</code> <code class="bash plain">hasFile: Couldn't </code><code class="bash functions">find</code> <code class="bash plain">/var/lib/libvirt/boot/virtinstmnt</code><code class="bash plain">.xPL9y1</code><code class="bash plain">/install/netboot/ubuntu-installer/i386/linux</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        这里就可以看出问题了,明明是64位的操作系统,为什么去找./install/netboot/ubuntu-install/i386/linux的路径</p>
<p>
        我们去看看iso文件中正确的路径是什么:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_780009">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$</code><code class="bash functions">mount</code> <code class="bash plain">/data/00_osfile/ubuntu-16</code><code class="bash plain">.04.1-server-amd64.iso </code><code class="bash plain">/mnt</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash functions">mount</code><code class="bash plain">: </code><code class="bash plain">/dev/loop2</code> <code class="bash plain">is write-protected, mounting </code><code class="bash functions">read</code><code class="bash plain">-only</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">$</code><code class="bash functions">ls</code> <code class="bash plain">/mnt/install/netboot/ubuntu-installer/amd64/linux</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">/mnt/install/netboot/ubuntu-installer/amd64/linux</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        基本确定,如果将路径的i386改为amd64,virt-install安装就没有问题。</p>
<p>
        debug模式剩余的log:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_650553">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                        <div class="line number15 index14 alt2">
                                                                15</div>
                                                        <div class="line number16 index15 alt1">
                                                                16</div>
                                                        <div class="line number17 index16 alt2">
                                                                17</div>
                                                        <div class="line number18 index17 alt1">
                                                                18</div>
                                                        <div class="line number19 index18 alt2">
                                                                19</div>
                                                        <div class="line number20 index19 alt1">
                                                                20</div>
                                                        <div class="line number21 index20 alt2">
                                                                21</div>
                                                        <div class="line number22 index21 alt1">
                                                                22</div>
                                                        <div class="line number23 index22 alt2">
                                                                23</div>
                                                        <div class="line number24 index23 alt1">
                                                                24</div>
                                                        <div class="line number25 index24 alt2">
                                                                25</div>
                                                        <div class="line number26 index25 alt1">
                                                                26</div>
                                                        <div class="line number27 index26 alt2">
                                                                27</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain"> DEBUG (urlfetcher:320) Cleaning up </code><code class="bash functions">mount</code> <code class="bash plain">at </code><code class="bash plain">/var/lib/libvirt/boot/virtinstmnt</code><code class="bash plain">.xPL9y1</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain"> DEBUG (cli:305) File </code><code class="bash string">"/usr/share/virt-manager/virt-install"</code><code class="bash plain">, line 1077, </code><code class="bash keyword">in</code> <code class="bash plain">&lt;module&gt;</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">sys.</code><code class="bash functions">exit</code><code class="bash plain">(main())</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">File </code><code class="bash string">"/usr/share/virt-manager/virt-install"</code><code class="bash plain">, line 1071, </code><code class="bash keyword">in</code> <code class="bash plain">main</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">start_install(guest, continue_inst, options)</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">File </code><code class="bash string">"/usr/share/virt-manager/virt-install"</code><code class="bash plain">, line 775, </code><code class="bash keyword">in</code> <code class="bash plain">start_install</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash plain">fail(e, do_exit=False)</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="bash plain">File </code><code class="bash string">"/usr/share/virt-manager/virtinst/cli.py"</code><code class="bash plain">, line 305, </code><code class="bash keyword">in</code> <code class="bash plain">fail</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="bash plain">logging.debug(</code><code class="bash string">""</code><code class="bash plain">.</code><code class="bash functions">join</code><code class="bash plain">(traceback.format_stack()))</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="bash plain"> ERROR (cli:306) Couldn't </code><code class="bash functions">find</code> <code class="bash plain">hvm kernel </code><code class="bash keyword">for</code> <code class="bash plain">Ubuntu tree.</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="bash plain"> DEBUG (cli:308) </code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="bash plain">Traceback (most recent call last):</code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                        <code class="bash plain">File </code><code class="bash string">"/usr/share/virt-manager/virt-install"</code><code class="bash plain">, line 747, </code><code class="bash keyword">in</code> <code class="bash plain">start_install</code>
</div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="bash plain">dom = guest.start_install(meter=meter, noboot=options.noreboot)</code>
</div>
                                                                <div class="line number15 index14 alt2">
                                                                        <code class="bash plain">File </code><code class="bash string">"/usr/share/virt-manager/virtinst/guest.py"</code><code class="bash plain">, line 491, </code><code class="bash keyword">in</code> <code class="bash plain">start_install</code>
</div>
                                                                <div class="line number16 index15 alt1">
                                                                        <code class="bash plain">self._prepare_install(meter, dry)</code>
</div>
                                                                <div class="line number17 index16 alt2">
                                                                        <code class="bash plain">File </code><code class="bash string">"/usr/share/virt-manager/virtinst/guest.py"</code><code class="bash plain">, line 304, </code><code class="bash keyword">in</code> <code class="bash plain">_prepare_install</code>
</div>
                                                                <div class="line number18 index17 alt1">
                                                                        <code class="bash plain">self.installer.prepare(self, meter)</code>
</div>
                                                                <div class="line number19 index18 alt2">
                                                                        <code class="bash plain">File </code><code class="bash string">"/usr/share/virt-manager/virtinst/installer.py"</code><code class="bash plain">, line 200, </code><code class="bash keyword">in</code> <code class="bash plain">prepare</code>
</div>
                                                                <div class="line number20 index19 alt1">
                                                                        <code class="bash plain">self._prepare(guest, meter)</code>
</div>
                                                                <div class="line number21 index20 alt2">
                                                                        <code class="bash plain">File </code><code class="bash string">"/usr/share/virt-manager/virtinst/distroinstaller.py"</code><code class="bash plain">, line 451, </code><code class="bash keyword">in</code> <code class="bash plain">_prepare</code>
</div>
                                                                <div class="line number22 index21 alt1">
                                                                        <code class="bash plain">self._prepare_kernel_url(guest, fetcher)</code>
</div>
                                                                <div class="line number23 index22 alt2">
                                                                        <code class="bash plain">File </code><code class="bash string">"/usr/share/virt-manager/virtinst/distroinstaller.py"</code><code class="bash plain">, line 360, </code><code class="bash keyword">in</code> <code class="bash plain">_prepare_kernel_url</code>
</div>
                                                                <div class="line number24 index23 alt1">
                                                                        <code class="bash plain">kernel, initrd, args = store.acquireKernel(guest)</code>
</div>
                                                                <div class="line number25 index24 alt2">
                                                                        <code class="bash plain">File </code><code class="bash string">"/usr/share/virt-manager/virtinst/urlfetcher.py"</code><code class="bash plain">, line 603, </code><code class="bash keyword">in</code> <code class="bash plain">acquireKernel</code>
</div>
                                                                <div class="line number26 index25 alt1">
                                                                        <code class="bash plain">{</code><code class="bash string">"distro"</code><code class="bash plain">: self.name, </code><code class="bash string">"type"</code> <code class="bash plain">: self.</code><code class="bash functions">type</code><code class="bash plain">})</code>
</div>
                                                                <div class="line number27 index26 alt2">
                                                                        <code class="bash plain">RuntimeError: Couldn't </code><code class="bash functions">find</code> <code class="bash plain">hvm kernel </code><code class="bash keyword">for</code> <code class="bash plain">Ubuntu tree.</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <strong>3.修改virt-manager代码:</strong></p>
<p>
        通过上面的报错,发现virt-manager使用python写的!正好想看什么源码来自,这个正好!</p>
<p>
        通过对virt-manager这一项目一步步debug,找到问题:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_282513">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                        <div class="line number15 index14 alt2">
                                                                15</div>
                                                        <div class="line number16 index15 alt1">
                                                                16</div>
                                                        <div class="line number17 index16 alt2">
                                                                17</div>
                                                        <div class="line number18 index17 alt1">
                                                                18</div>
                                                        <div class="line number19 index18 alt2">
                                                                19</div>
                                                        <div class="line number20 index19 alt1">
                                                                20</div>
                                                        <div class="line number21 index20 alt2">
                                                                21</div>
                                                        <div class="line number22 index21 alt1">
                                                                22</div>
                                                        <div class="line number23 index22 alt2">
                                                                23</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$</code><code class="bash functions">grep</code> <code class="bash plain">-n -A22 </code><code class="bash string">"class DebianDistro"</code> <code class="bash plain">/usr/share/virt-manager/virtinst/urlfetcher</code><code class="bash plain">.py</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">1076:class DebianDistro(Distro):</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">1077- </code><code class="bash comments"># ex. http://ftp.egr.msu.edu/debian/dists/sarge/main/installer-i386/</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">1078- </code><code class="bash comments"># daily builds: http://d-i.debian.org/daily-images/amd64/</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">1079- name = </code><code class="bash string">"Debian"</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">1080- urldistro = </code><code class="bash string">"debian"</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash plain">1081- os_variant = </code><code class="bash string">"linux"</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="bash plain">1082-</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="bash plain">1083- def __init__(self, *args, **kwargs):</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="bash plain">1084- Distro.__init__(self, *args, **kwargs)</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="bash plain">1085-</code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="bash plain">1086- </code><code class="bash comments"># Pull the tree's arch out of the URL text</code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                        <code class="bash plain">1087- self._treeArch = </code><code class="bash string">'i386'</code>
</div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="bash plain">1088- </code><code class="bash keyword">for</code> <code class="bash plain">pattern </code><code class="bash keyword">in</code> <code class="bash plain">[</code><code class="bash string">"^.*/installer-(\w+)/?$"</code><code class="bash plain">,</code>
</div>
                                                                <div class="line number15 index14 alt2">
                                                                        <code class="bash plain">1089- </code><code class="bash string">"^.*/daily-images/(\w+)/?$"</code><code class="bash plain">]:</code>
</div>
                                                                <div class="line number16 index15 alt1">
                                                                        <code class="bash plain">1090- arch = re.findall(pattern, self.uri)</code>
</div>
                                                                <div class="line number17 index16 alt2">
                                                                        <code class="bash plain">1091- </code><code class="bash keyword">if</code> <code class="bash plain">arch:</code>
</div>
                                                                <div class="line number18 index17 alt1">
                                                                        <code class="bash plain">1092- self._treeArch = arch</code>
</div>
                                                                <div class="line number19 index18 alt2">
                                                                        <code class="bash plain">1093- </code><code class="bash keyword">break</code>
</div>
                                                                <div class="line number20 index19 alt1">
                                                                        <code class="bash plain">1094-</code>
</div>
                                                                <div class="line number21 index20 alt2">
                                                                        <code class="bash plain">1095- self._url_prefix = </code><code class="bash string">'current/images'</code>
</div>
                                                                <div class="line number22 index21 alt1">
                                                                        <code class="bash plain">1096- self._installer_dirname = self.name.lower() + </code><code class="bash string">"-installer"</code>
</div>
                                                                <div class="line number23 index22 alt2">
                                                                        <code class="bash plain">1097- self._set_media_paths()</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        发现基于Debian的系统,__init__方法中self._treeArch初始化时是i386,估计是virt-manager读取ubuntu的iso文件时,出了什么问题,没读出该系统是x86_64类型,将该值改为amd64,就可以了。</p>
<p>
        再次运行virt-install,成功进入ubuntu安装界面!</p>
<p>
        <strong><span>附:CentOS命令行使用KVM安装64位ubuntu报"Couldn't find hvm kernel for Ubuntu tree."的解决办法</span></strong></p>
<p>
        grep -n -A21 'class DebianDistro' /usr/lib/python2.6/site-packages/virtinst/OSDistro.py 命令可以查看DebianDistro类的__init__方法</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_163485">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                        <div class="line number15 index14 alt2">
                                                                15</div>
                                                        <div class="line number16 index15 alt1">
                                                                16</div>
                                                        <div class="line number17 index16 alt2">
                                                                17</div>
                                                        <div class="line number18 index17 alt1">
                                                                18</div>
                                                        <div class="line number19 index18 alt2">
                                                                19</div>
                                                        <div class="line number20 index19 alt1">
                                                                20</div>
                                                        <div class="line number21 index20 alt2">
                                                                21</div>
                                                        <div class="line number22 index21 alt1">
                                                                22</div>
                                                        <div class="line number23 index22 alt2">
                                                                23</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$</code><code class="bash functions">grep</code> <code class="bash plain">-n -A21 </code><code class="bash string">'class DebianDistro'</code> <code class="bash plain">/usr/lib/python2</code><code class="bash plain">.6</code><code class="bash plain">/site-packages/virtinst/OSDistro</code><code class="bash plain">.py</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">892:class DebianDistro(Distro):</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">893- </code><code class="bash comments"># ex. http://ftp.egr.msu.edu/debian/dists/sarge/main/installer-i386/</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">894- </code><code class="bash comments"># daily builds: http://people.debian.org/~joeyh/d-i/</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">895-</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">896- name = </code><code class="bash string">"Debian"</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash plain">897- os_type = </code><code class="bash string">"linux"</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="bash plain">898-</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="bash plain">899- def __init__(self, uri, arch, vmtype=None, scratchdir=None):</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="bash plain">900- Distro.__init__(self, uri, arch, vmtype, scratchdir)</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="bash plain">901- </code><code class="bash keyword">if</code> <code class="bash plain">uri.count(</code><code class="bash string">"installer-i386"</code><code class="bash plain">):</code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="bash plain">902- self._treeArch = </code><code class="bash string">"i386"</code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                        <code class="bash plain">903- </code><code class="bash keyword">elif</code> <code class="bash plain">uri.count(</code><code class="bash string">"installer-amd64"</code><code class="bash plain">):</code>
</div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="bash plain">904- self._treeArch = </code><code class="bash string">"amd64"</code>
</div>
                                                                <div class="line number15 index14 alt2">
                                                                        <code class="bash plain">905- </code><code class="bash keyword">else</code><code class="bash plain">:</code>
</div>
                                                                <div class="line number16 index15 alt1">
                                                                        <code class="bash plain">906- self._treeArch = </code><code class="bash string">"i386"</code>
</div>
                                                                <div class="line number17 index16 alt2">
                                                                        <code class="bash plain">907-</code>
</div>
                                                                <div class="line number18 index17 alt1">
                                                                        <code class="bash plain">908- </code><code class="bash keyword">if</code> <code class="bash plain">re.match(r</code><code class="bash string">'i86'</code><code class="bash plain">, arch):</code>
</div>
                                                                <div class="line number19 index18 alt2">
                                                                        <code class="bash plain">909- self.arch = </code><code class="bash string">'i386'</code>
</div>
                                                                <div class="line number20 index19 alt1">
                                                                        <code class="bash plain">910-</code>
</div>
                                                                <div class="line number21 index20 alt2">
                                                                        <code class="bash plain">911- self._installer_name = self.name.lower() + </code><code class="bash string">"-"</code> <code class="bash plain">+ </code><code class="bash string">"installer"</code>
</div>
                                                                <div class="line number22 index21 alt1">
                                                                        <code class="bash plain">912- self._prefix = </code><code class="bash string">'current/images'</code>
</div>
                                                                <div class="line number23 index22 alt2">
                                                                        <code class="bash plain">913- self._set_media_paths()</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        改变__init__方法里的else:条件下面的一行,将"i386"改为<span><strong>"amd64"</strong></span>即可</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterjs" id="highlighter_438043">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="js plain">- self._treeArch = </code><code class="js string">'i386'</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="js plain">+ self._treeArch = </code><code class="js string">'amd64'</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        原文链接:http://www.cnblogs.com/ruo-yu/archive/2016/11/30/6117134.html</p>
頁: [1]
查看完整版本: ubuntu下kvm 命令行安装64位ubuntu报"Couldn't find hvm kernel for Ubuntu tree."的问题分析