1. Baixe o Fortect e instale-o em seu computador
2. Inicie o programa e clique em "Digitalizar"
3. Clique em "Reparar" para corrigir quaisquer problemas encontrados
Acelere o desempenho do seu computador agora com este simples download.
ambiente de construção Primeiro você precisa instalar as dependências do compilador aprimorado (base-devel) e os cabeçalhos opcionais do Linux. Você deve então usar o código-fonte na versão do kernel em que deseja que o módulo possa ser executado. Você pode tentar usar cada uma das melhores fontes do novo kernel, mas é muito provável que o módulo compilado definitivamente não seja carregado.
</p>
<div>
<div> Quase </p>
<div>
<div></p>
<div style="box-shadow: rgba(0, 0, 0, 0.18) 0px 2px 4px;padding:20px 10px 20px 10px;">
<p><h2 id=" 2"><span class="ez-toc-section" id="Como_faco_para_criar_um_modulo_Linux"></span>Como faço para criar um módulo Linux?<span class="ez-toc-section-end"></span></h2>
<p>$ make -C <path_to_kernel_src> M=$PWD.$ produzir -C /lib/modules/`uname -r`/build M=$PWD.$ make -C /lib/modules/`uname -r`/build M=$PWD modules_install.</p>
</div>
<p>é hora de começar a codificar. Esta descrição. apresenta conceitos práticos tudo na web junto com o núcleo do tema de programação. Nestas poucas páginas eles criam e lançam um conjunto completo completo (se Relativamente inútil) é claro, e veja alguns códigos relativamente naturais comuns a todos os módulos. O desenvolvimento de tal experiência pode ser descrito como um fator importante na inovação de qualquer projeto piloto modular. para Evite executar muitos contatos ao mesmo tempo, este capítulo apenas mascara os módulos, não Mencionar uma classe de dispositivo específica.</p>
<p><iframe style="margin-top:20px; margin-bottom:20px; display: block; margin: 0 auto;" width="560" height="315" src="https://www.youtube.com/embed/CWihl19mJig" frameborder="0" allow="acelerômetro; reprodução automática; mídia criptografada; giroscópio; picture-in-picture " allowfullscreen></iframe></p>
<p>Todos os elementos muito importantes do kernel (funções, variáveis, arquivos de cabeçalho, macros) que são, na verdade, injetados Ele é frequentemente descrito na seção de ajuda no final do capítulo.</p>
<div><div style="background: rgba(156, 156, 156, 0.07);margin:20px 0 20px 0;padding:20px 10px 20px 10px;border: solid 1px rgba(0,0,0,0.03);text-align: left;"><h2><span class="ez-toc-section" id="Aprovado_Fortect-2"></span>Aprovado: <a href="https://www.fortect.com/go/route-wki.php?channel=wki&d=t&adgroup=windowsdiary.com" target="_blank" rel="nofollow">Fortect</a><span class="ez-toc-section-end"></span></h2>
<p><a href="https://www.fortect.com/go/route-wki.php?channel=wki&d=t&adgroup=windowsdiary.com" target="_blank" rel="nofollow">Fortect</a> é a ferramenta de reparo de PC mais popular e eficaz do mundo. Milhões de pessoas confiam nele para manter seus sistemas funcionando de forma rápida, suave e livre de erros. Com sua interface de usuário simples e mecanismo de verificação poderoso, o <a href="https://www.fortect.com/go/route-wki.php?channel=wki&d=t&adgroup=windowsdiary.com" target="_blank" rel="nofollow">Fortect</a> localiza e corrige rapidamente uma ampla gama de problemas do Windows, desde instabilidade do sistema e problemas de segurança até gerenciamento de memória e gargalos de desempenho.</p>
<li>1. Baixe o <a href="https://www.fortect.com/go/route-wki.php?channel=wki&d=t&adgroup=windowsdiary.com" target="_blank" rel="nofollow">Fortect</a> e instale-o em seu computador</li>
<li>2. Inicie o programa e clique em "Digitalizar"</li>
<li>3. Clique em "Reparar" para corrigir quaisquer problemas encontrados</li>
<br><a href="https://www.fortect.com/go/route-wki.php?channel=wki&d=t&adgroup=windowsdiary.com" target="_blank" rel="nofollow" alt="download"><img src="/wp-content/download3.png" style="width:340px;"></a></div></p>
<p>Comece com este capítulo</a> <a> </a> <a> </a> <a> </a> <a> </a> <a> </a> <a> presente Módulos de exemplo quando você precisa explicar conceitos de programação. (Todos esses exemplos podem estar disponíveis em Site FTP da O’Reilly, descrito no elemento 1.) Construir, baixar e corrigir esses exemplos é praticamente uma boa maneira de melhorar sua compreensão O funcionamento dos drivers também interage completamente com o kernel.</p>
<p></p>
<div style="box-shadow: rgba(0, 0, nought, 0.18) 0px 2px 4px;padding:20px 10px 20px 10px;">
<p><h2 id="4"><span class="ez-toc-section" id="Como_posso_adicionar_um_modulo_de_kernel_do_Linux"></span>Como posso adicionar um módulo de kernel do Linux?<span class="ez-toc-section-end"></span></h2>
<p>Eu vou dizer edite o arquivo /etc/modules e adicione os detalhes deste módulo (excluindo as extensões .ko) à sua própria chamada.Copie o módulo para a pasta apropriada em /lib/modules/`uname -r`/kernel/drivers;Inicie o depmod.Neste ponto, reiniciei e, assim, lsmod | executou grep module_name para se certificar de que o módulo foi carregado com frequência visitando startup.</p>
</div>
<p>Os exemplos devem funcionar com praticamente qualquer versão 2.6.x, sem mencionar os kernels relacionados. dos serviços de distribuição, no entanto, recomendamos que você obtenha o kernel “principal” mais útil imediatamente. por <a></a> <a></a> <a></a> Kernel.org espelha a rede de telefonia móvel celular e a instala em seu sistema. fornecedores os Kernels poderiam ser fortemente corrigidos e se desviarem da linha central; Às vezes, o provedor protege Altere a API do kernel para ser entendida pelos drivers de dispositivo. Se você estiver escrevendo um driver que pode funcionar Em uma distribuição específica, você provavelmente desejará construir e testar a melhor. grãos de unha encravadas. Mas o objetivo é entender como escrever drivers é um kernel geral do que </p>
<p><img decoding="async" src="http://derekmolloy.ie/wp-content/uploads/2015/04/userspace-kernelspace.png" style="margin-top:20px; margin-bottom:20px; display: block; margin: 4 auto;" alt="criar módulo do kernel"></p>
<p>seja qual for o seu kernel, construir peças de trabalho 2 para .6.x requer que você tenha a árvore do kernel da sua unidade configurada construída e construída. O critério é que seja maior de idade versões anteriores do kernel onde o conjunto atual de arquivos de manchetes foi considerado suficiente.2,6 Mo As ules já estão associadas a arquivos de elementos encontrados em sua árvore de recursos úteis do kernel; resultado uma máquina de carregamento de segmentos mais confiável, mas também o requisito de que esses arquivos de computador objeto estejam especificamente disponíveis. Para Seu trabalho mais importante é obter a árvore de natal do código-fonte do kernel (ou entre kernel.org ou na rede sua corporação é o distribuidor da fonte do kernel), Compile o kernel finalizado e instale-o em seu hive. Para pontos por que veremos mais tarde, o tempo de vida geralmente mais fácil se você realmente obtiver o kernel de destino ao projetar seus módulos de família, embora isso normalmente não seja obrigatório.</p>
<p><img decoding="async" src="/posts/create-kernel-module.png" style="margin-top:20px; margin-bottom:20px; display: block; margin: zero auto;" alt="criar módulo do kernel"></p>
</p>
<a href="https://www.fortect.com/go/route-wki.php?channel=wki&d=t&adgroup=windowsdiary.com" target="_blank" rel="nofollow"> Acelere o desempenho do seu computador agora com este simples download. </a>
<div style="box-shadow: rgba(0, 0, 0, 0.18) 0px 2px 4px;padding:20px 10px 20px 10px;">
<p><h2 id="6"><span class="ez-toc-section" id="Como_faco_um_KO_arquivo"></span>Como faço um .KO arquivo?<span class="ez-toc-section-end"></span></h2>
<p>./foo/ <= contém foo.ko ./bar/ <= contém bar.ko. O registro kbuild de nível superior ficaria assim:#./Kbuild (ou ./makefile): := obj -m foo/ bar/ E execute:$ alcançado -C $KDIR M=$PWD.O</p>
</div>
<p></p>
<div style="box-shadow: rgba(0, 0, 0, 0.18) 0px 2px 4px;padding:20px 10px 20px 10px;">
<p><h2 id="7"><span class="ez-toc-section" id="Como_crio_um_kernel_Linux_motorista"></span>Como crio um kernel Linux motorista?<span class="ez-toc-section-end"></span></h2>
<p>Programe os arquivos do driver fonte, dando especial atenção à interface do kernel.Integre isso no driver do kernel real, incluindo o telefone de código do kernel nativo mais geral para funções do clube.Configure e compile o kernel completamente novo.Teste-o como um driver, um programa de reescrita personalizado.</p>
</div>
<p> </p>
</p>
<p><a href="https://windowsdiary.com/en/create-kernel-module/" class="translate" hreflang="en"><img decoding="async" src="/wp-includes/images/flags/en.png" width="40" height="30"></a> <a href="https://windowsdiary.com/nl/een-gemakkelijke-manier-om-problemen-met-het-bouwen-van-kernelmodules-op-te-lossen/" class="translate" hreflang="nl"><img decoding="async" loading="lazy" src="/wp-includes/images/flags/nl.png" width="40" height="30"></a> <a href="https://windowsdiary.com/ru/%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%be%d0%b9-%d1%81%d0%bf%d0%be%d1%81%d0%be%d0%b1-%d0%b8%d1%81%d0%bf%d1%80%d0%b0%d0%b2%d0%b8%d1%82%d1%8c-%d0%bf%d1%80%d0%be%d0%b1%d0%bb%d0%b5%d0%bc%d1%8b-%d1%81%d0%b1/" class="translate" hreflang="ru"><img decoding="async" loading="lazy" src="/wp-includes/images/flags/ru.png" width="40" height="30"></a> <a href="https://windowsdiary.com/es/una-manera-facil-de-solucionar-problemas-de-creacion-de-modulos-del-kernel/" class="translate" hreflang="es"><img decoding="async" loading="lazy" src="/wp-includes/images/flags/es.png" width="40" height="30"></a> <a href="https://windowsdiary.com/ko/%ec%bb%a4%eb%84%90-%eb%aa%a8%eb%93%88-%eb%b9%8c%eb%93%9c-%eb%ac%b8%ec%a0%9c%eb%a5%bc-%ed%95%b4%ea%b2%b0%ed%95%98%eb%8a%94-%ec%89%ac%ec%9a%b4-%eb%b0%a9%eb%b2%95/" class="translate" hreflang="ko"><img decoding="async" loading="lazy" src="/wp-includes/images/flags/ko.png" width="40" height="30"></a> <a href="https://windowsdiary.com/sv/ett-enkelt-satt-att-atgarda-problem-med-karnmodulbyggnad/" class="translate" hreflang="sv"><img decoding="async" loading="lazy" src="/wp-includes/images/flags/sv.png" width="40" height="30"></a> <a href="https://windowsdiary.com/pl/latwy-sposob-na-bezposrednie-naprawienie-problemow-z-budowaniem-modulu-jadra/" class="translate" hreflang="pl"><img decoding="async" loading="lazy" src="/wp-includes/images/flags/pl.png" width="40" height="30"></a> <a href="https://windowsdiary.com/it/un-modo-semplice-quando-devi-risolvere-i-problemi-di-costruzione-del-modulo-del-kernel/" class="translate" hreflang="it"><img decoding="async" loading="lazy" src="/wp-includes/images/flags/it.png" width="40" height="30"></a> <a href="https://windowsdiary.com/de/eine-einfache-moglichkeit-probleme-beim-erstellen-von-kernelmodulen-zu-beheben/" class="translate" hreflang="de"><img decoding="async" loading="lazy" src="/wp-includes/images/flags/de.png" width="40" height="30"></a> <a href="https://windowsdiary.com/fr/un-moyen-simple-de-resoudre-les-problemes-de-creation-de-modules-du-noyau/" class="translate" hreflang="fr"><img decoding="async" loading="lazy" src="/wp-includes/images/flags/fr.png" width="40" height="30"></a></p>
<div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img decoding="async" loading="lazy" src="https://windowsdiary.com/wp-content/uploads/williamvaux.jpg" width="100" height="100" alt="William Vaux" itemprop="image"></div><div class="saboxplugin-authorname"><a href="https://windowsdiary.com/author/williamvaux/" class="vcard author" rel="author"><span class="fn">William Vaux</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div></div></div><div class="crp_related crp-rounded-thumbs"><h3>Related Posts:</h3><ul><li><a href="https://windowsdiary.com/pt/o-que-faz-com-que-uma-jornada-dificil-contenha-um-sistema-de-arquivos-ufs-e-uma-maneira-de-corrigi-lo/" class="crp_link post-201068"><figure><img loading="lazy" width="150" height="150" src="https://windowsdiary.com/wp-content/uploads/2022/04/disk-contains-a-ufs-file-system-7-150x150.jpg" class="crp_featured crp_thumb crp_thumbnail" alt="disk-contains-a-ufs-file-system" decoding="async" style="" title="O Que Faz Com Que Uma Jornada Difícil Contenha Um Sistema De Arquivos Ufs E Uma Maneira De Corrigi-lo" /></figure><span class="crp_title">O Que Faz Com Que Uma Jornada Difícil Contenha Um…</span></a></li><li><a href="https://windowsdiary.com/pt/uma-maneira-facil-de-corrigir-problemas-de-sistema-de-arquivos-estendidos/" class="crp_link post-198691"><figure><img loading="lazy" width="150" height="150" src="https://windowsdiary.com/wp-content/uploads/2022/04/mount-extended-file-system-8-150x150.jpg" class="crp_featured crp_thumb crp_thumbnail" alt="mount-extended-file-system" decoding="async" style="" title="Uma Maneira Fácil De Corrigir Problemas De Sistema De Arquivos Estendidos" /></figure><span class="crp_title">Uma Maneira Fácil De Corrigir Problemas De Sistema…</span></a></li><li><a href="https://windowsdiary.com/pt/nao-foi-possivel-encontrar-uma-maneira-melhor-de-corrigir-problemas-com-a-equipe-do-oracle-linux-up2date/" class="crp_link post-194365"><figure><img loading="lazy" width="150" height="150" src="https://windowsdiary.com/wp-content/uploads/2022/04/oracle-linux-up2date-command-not-found-3-150x150.png" class="crp_featured crp_thumb crp_thumbnail" alt="oracle-linux-up2date-command-not-found" decoding="async" style="" title="Não Foi Possível Encontrar Uma Maneira Melhor De Corrigir Problemas Com A Equipe Do Oracle Linux Up2date" /></figure><span class="crp_title">Não Foi Possível Encontrar Uma Maneira Melhor De…</span></a></li><li><a href="https://windowsdiary.com/pt/uma-maneira-facil-de-corrigir-problemas-de-redefinicao-de-fabrica-no-windows-vista-home-basic/" class="crp_link post-199753"><figure><img loading="lazy" width="150" height="150" src="https://windowsdiary.com/wp-content/uploads/2022/04/how-to-restore-windows-vista-home-basic-to-factory-settings-4-150x150.jpg" class="crp_featured crp_thumb crp_thumbnail" alt="how-to-restore-windows-vista-home-basic-to-factory-settings" decoding="async" style="" title="Uma Maneira Fácil De Corrigir Problemas De Redefinição De Fábrica No Windows Vista Home Basic" /></figure><span class="crp_title">Uma Maneira Fácil De Corrigir Problemas De…</span></a></li><li><a href="https://windowsdiary.com/pt/uma-maneira-facil-de-corrigir-problemas-nao-encontrados-no-my-template-cnf/" class="crp_link post-204488"><figure><img loading="lazy" width="150" height="150" src="https://windowsdiary.com/wp-content/uploads/2022/05/my-template-cnf-not-found-9-150x150.png" class="crp_featured crp_thumb crp_thumbnail" alt="my-template-cnf-not-found" decoding="async" style="" title="Uma Maneira Fácil De Corrigir Problemas Não Encontrados No My-template.cnf" /></figure><span class="crp_title">Uma Maneira Fácil De Corrigir Problemas Não…</span></a></li><li><a href="https://windowsdiary.com/pt/uma-maneira-facil-de-corrigir-qualquer-configuracao-do-windows-update-server/" class="crp_link post-197147"><figure><img loading="lazy" width="150" height="150" src="https://windowsdiary.com/wp-content/uploads/2022/04/how-to-configure-windows-update-server-7-150x150.png" class="crp_featured crp_thumb crp_thumbnail" alt="how-to-configure-windows-update-server" decoding="async" style="" title="Uma Maneira Fácil De Corrigir Qualquer Configuração Do Windows Update Server" /></figure><span class="crp_title">Uma Maneira Fácil De Corrigir Qualquer Configuração…</span></a></li></ul><div class="crp_clear"></div></div>
</div><!-- .entry-content -->
</article><!-- #post-182002 -->
</main><!-- #main -->
</div><!-- #primary -->
<aside id="secondary" class="featured-sidebar widget-area">
<section id="search-2" class="fbox swidgets-wrap widget widget_search"><form role="search" method="get" class="search-form" action="https://windowsdiary.com/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Search …" value="" name="s" />
</label>
<input type="submit" class="search-submit" value="Search" />
</form></section>
<section id="recent-posts-2" class="fbox swidgets-wrap widget widget_recent_entries">
<div class="swidget"><div class="sidebar-title-border"><h3 class="widget-title">Recent Posts</h3></div></div>
<ul>
<li>
<a href="https://windowsdiary.com/pt/resolvendo-seu-erro-atual-do-steam-voce-nao-tem-espaco-suficiente-em-disco/">Resolvendo Seu Erro Atual Do Steam, Você Não Tem Espaço Suficiente Em Disco</a>
</li>
<li>
<a href="https://windowsdiary.com/sv/pci-kompatibelt-antivirusfelsokningstips/">PCI-kompatibelt Antivirusfelsökningstips</a>
</li>
<li>
<a href="https://windowsdiary.com/nl/stappen-om-geheugenlekken-in-backend-weergaven-op-te-lossen/">Stappen Om Geheugenlekken In Backend-weergaven Op Te Lossen</a>
</li>
<li>
<a href="https://windowsdiary.com/nl/stappen-die-itunes-repareren-in-de-veilige-modus-op-mac/">Stappen Die ITunes Repareren In De Veilige Modus Op Mac</a>
</li>
<li>
<a href="https://windowsdiary.com/ko/photoshop-cs4%eb%a5%bc-%ec%84%a4%ec%b9%98%ed%95%a0-%eb%95%8c-%ec%98%a4%eb%a5%98-1603%ec%9d%84-%ec%88%98%ec%a0%95%ed%95%98%eb%8a%94-%eb%b0%a9%eb%b2%95%ec%9d%80-%eb%ac%b4%ec%97%87%ec%9e%85%eb%8b%88/">Photoshop CS4를 설치할 때 오류 1603을 수정하는 방법은 무엇입니까?</a>
</li>
</ul>
</section></aside><!-- #secondary -->
</div>
</div><!-- #content -->
</div>
<footer id="colophon" class="site-footer clearfix">
<div class="content-wrap">
</div>
<div class="site-info">
©2025 Windows Diary <!-- Delete below lines to remove copyright from footer -->
<span class="footer-info-right">
| Built using WordPress and <a href="https://superbthemes.com/responsiveblogily/">Responsive Blogily</a> theme by Superb
</span>
<!-- Delete above lines to remove copyright from footer -->
</div><!-- .site-info -->
</div>
</footer><!-- #colophon -->
</div><!-- #page -->
<div id="smobile-menu" class="mobile-only"></div>
<div id="mobile-menu-overlay"></div>
<!-- Start of StatCounter Code -->
<script>
<!--
var sc_project=12585252;
var sc_security="fad14f33";
var sc_invisible=1;
</script>
<script type="text/javascript" src="https://www.statcounter.com/counter/counter.js" async></script>
<noscript><div class="statcounter"><a title="web analytics" href="https://statcounter.com/"><img class="statcounter" src="https://c.statcounter.com/12585252/0/fad14f33/1/" alt="web analytics" /></a></div></noscript>
<!-- End of StatCounter Code -->
<script type='text/javascript' id='ez-toc-scroll-scriptjs-js-extra'>
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30","add_request_uri":"","add_self_reference_link":""};
/* ]]> */
</script>
<script type='text/javascript' src='https://windowsdiary.com/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js?ver=2.0.73' id='ez-toc-scroll-scriptjs-js'></script>
<script type='text/javascript' src='https://windowsdiary.com/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js?ver=2.2.1' id='ez-toc-js-cookie-js'></script>
<script type='text/javascript' src='https://windowsdiary.com/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js?ver=1.9.2' id='ez-toc-jquery-sticky-kit-js'></script>
<script type='text/javascript' id='ez-toc-js-js-extra'>
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"1","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>","visibility_hide_by_device":"1","chamomile_theme_is_on":""};
/* ]]> */
</script>
<script type='text/javascript' src='https://windowsdiary.com/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js?ver=2.0.73-1741840033' id='ez-toc-js-js'></script>
<script type='text/javascript' src='https://windowsdiary.com/wp-content/themes/responsiveblogily/js/navigation.js?ver=20170823' id='responsiveblogily-navigation-js'></script>
<script type='text/javascript' src='https://windowsdiary.com/wp-content/themes/responsiveblogily/js/skip-link-focus-fix.js?ver=20170823' id='responsiveblogily-skip-link-focus-fix-js'></script>
<script type='text/javascript' src='https://windowsdiary.com/wp-content/themes/responsiveblogily/js/script.js?ver=20160720' id='responsiveblogily-script-js'></script>
<script type='text/javascript' src='https://windowsdiary.com/wp-content/themes/responsiveblogily/js/jquery.flexslider.js?ver=20150423' id='responsiveblogily-flexslider-js'></script>
<script type='text/javascript' src='https://windowsdiary.com/wp-content/themes/responsiveblogily/js/accessibility.js?ver=20160720' id='responsiveblogily-accessibility-js'></script>
<script>
/(trident|msie)/i.test(navigator.userAgent)&&document.getElementById&&window.addEventListener&&window.addEventListener("hashchange",function(){var t,e=location.hash.substring(1);/^[A-z0-9_-]+$/.test(e)&&(t=document.getElementById(e))&&(/^(?:a|select|input|button|textarea)$/i.test(t.tagName)||(t.tabIndex=-1),t.focus())},!1);
</script>
</body>
</html>