Files
pages/2025/03/25/utm.html
2025-12-31 16:00:29 +00:00

331 lines
23 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>在UTM中使用苹果虚拟化的各种尝试 | Mayx的博客</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="在UTM中使用苹果虚拟化的各种尝试" />
<meta name="author" content="mayx" />
<meta property="og:locale" content="zh_CN" />
<meta name="description" content="用官方的方式做非官方的事!" />
<meta property="og:description" content="用官方的方式做非官方的事!" />
<meta property="og:site_name" content="Mayx的博客" />
<meta property="og:type" content="article" />
<meta property="article:published_time" content="2025-03-25T00:00:00+08:00" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="在UTM中使用苹果虚拟化的各种尝试" />
<meta name="google-site-verification" content="huTYdEesm8NaFymixMNqflyCp6Jfvd615j5Wq1i2PHc" />
<meta name="msvalidate.01" content="0ADFCE64B3557DC4DC5F2DC224C5FDDD" />
<meta name="yandex-verification" content="fc0e535abed800be" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"mayx"},"dateModified":"2025-03-25T00:00:00+08:00","datePublished":"2025-03-25T00:00:00+08:00","description":"用官方的方式做非官方的事!","headline":"在UTM中使用苹果虚拟化的各种尝试","mainEntityOfPage":{"@type":"WebPage","@id":"/2025/03/25/utm.html"},"publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://avatars0.githubusercontent.com/u/17966333"},"name":"mayx"},"url":"/2025/03/25/utm.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="canonical" href="https://mabbs.github.io/2025/03/25/utm.html" />
<link type="application/atom+xml" rel="alternate" href="/atom.xml" title="Mayx的博客" />
<link rel="alternate" type="application/rss+xml" title="Mayx的博客(RSS)" href="/rss.xml" />
<link rel="alternate" type="application/json" title="Mayx的博客(JSON Feed)" href="/feed.json" />
<link rel="stylesheet" href="/assets/css/style.css?v=1767196818" />
<!--[if !IE]> -->
<link rel="stylesheet" href="/Live2dHistoire/live2d/css/live2d.css" />
<!-- <![endif]-->
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="Mayx的博客" />
<link rel="webmention" href="https://webmention.io/mabbs.github.io/webmention" />
<link rel="pingback" href="https://webmention.io/mabbs.github.io/xmlrpc" />
<link rel="preconnect" href="https://summary.mayx.eu.org" crossorigin="anonymous" />
<link rel="prefetch" href="https://www.blogsclub.org/badge/mabbs.github.io" as="image" />
<link rel="blogroll" type="text/xml" href="/blogroll.opml" />
<link rel="me" href="https://github.com/Mabbs" />
<script src="/assets/js/jquery.min.js"></script>
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<script>
var lastUpdated = new Date("Thu, 01 Jan 2026 00:00:18 +0800");
var BlogAPI = "https://summary.mayx.eu.org";
</script>
<script src="/assets/js/main.js"></script>
<!--[if !IE]> -->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="async" src="https://www.googletagmanager.com/gtag/js?id=UA-137710294-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-137710294-1');
</script>
<script src="/assets/js/instant.page.js" type="module"></script>
<!-- <![endif]-->
</head>
<body>
<!--[if !IE]> --><noscript><marquee style="top: -15px; position: relative;"><small>发现当前浏览器没有启用JavaScript这不影响你的浏览但可能会有一些功能无法使用……</small></marquee></noscript><!-- <![endif]-->
<!--[if IE]><marquee style="top: -15px; position: relative;"><small>发现当前浏览器为Internet Explorer这不影响你的浏览但可能会有一些功能无法使用……</small></marquee><![endif]-->
<div class="wrapper">
<header class="h-card">
<h1><a class="u-url u-uid p-name" rel="me" href="/">Mayx的博客</a></h1>
<img src="https://avatars0.githubusercontent.com/u/17966333" fetchpriority="high" class="u-photo" alt="Logo" style="width: 90%; max-width: 300px; max-height: 300px;" />
<p class="p-note">Mayx's Home Page</p>
<form action="/search.html">
<input type="text" name="keyword" id="search-input-all" placeholder="Search blog posts.." />&#160;<input type="submit" value="搜索" />
</form>
<br />
<p class="view"><a class="u-url" href="/Mabbs/">About me</a></p>
<ul class="downloads">
<li style="width: 270px; border-right: none;"><a href="/MayxBlog.tgz">Download <strong>TGZ File</strong></a></li>
</ul>
</header>
<section class="h-entry">
<small><time class="date dt-published" datetime="2025-03-25T00:00:00+08:00">25 March 2025</time> - 字数统计2781 - 阅读大约需要9分钟 - Hits: <span id="/2025/03/25/utm.html" class="visitors">Loading...</span></small>
<h1 class="p-name">在UTM中使用苹果虚拟化的各种尝试</h1>
<p class="view">by <a class="p-author h-card" href="//github.com/Mabbs">mayx</a></p>
<div id="outdate" style="display:none;">
<hr /><p>
这是一篇创建于 <span id="outime"></span> 天前的文章,其中的信息可能已经有所发展或是发生改变。
</p>
</div>
<script>
daysold = Math.floor((new Date().getTime() - new Date("Tue, 25 Mar 2025 00:00:00 +0800").getTime()) / (24 * 60 * 60 * 1000));
if (daysold > 90) {
document.getElementById("outdate").style.display = "block";
document.getElementById("outime").innerHTML = daysold;
}
</script>
<hr />
<b>AI摘要</b>
<p id="ai-output">这篇文章讲述了作者在苹果设备的UTM虚拟机环境中尝试使用苹果虚拟化框架进行非传统操作即通过UTM的Virtio GPU和Virtualization.frameworkVZ安装Windows系统。作者首先复制了一个已有的VZUbuntu虚拟机然后尝试使用重装脚本来转换为Windows但遇到黑屏问题。通过安装Windows驱动和调整显示器设置作者成功让Windows在虚拟机中运行且发现VZ在性能上优于HVF。文章最后提到虽然在macOS 12中使用VZ安装Linux存在一些挑战如不支持UEFI和需要手动准备内核但作者仍然成功进行了实验认为苹果的虚拟化技术潜力未被充分利用。作者也指出这些非官方方法可能随着macOS更新而变得不稳定。</p>
<hr />
<ul><li><a href="#起因">起因</a></li><li><a href="#在utm中使用苹果虚拟化框架安装windows">在UTM中使用苹果虚拟化框架安装Windows</a></li><li><a href="#在macos-12中的utm使用苹果虚拟化框架安装linux">在macOS 12中的UTM使用苹果虚拟化框架安装Linux</a></li><li><a href="#感想">感想</a></li></ul>
<hr />
<main class="post-content e-content" role="main"><p>用官方的方式做非官方的事!<!--more--></p>
<h1 id="起因">
<a href="#起因"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 起因
</h1>
<p>在几年前刚<a href="/2023/02/03/mbp.html">收到MacBook Pro</a>的时候,我曾安装过虚拟机软件<a href="https://github.com/utmapp/UTM">UTM</a>。但是因为我的Mac内存很小用虚拟机的体验很差所以就把UTM卸载掉了。不过以前还我还<a href="/2024/06/16/hackintosh.html">装过一台黑苹果</a>在上面也安装了UTM。 </p><p>
最近正好由于某些原因我需要在macOS上安装虚拟机既然有UTM用就继续用UTM了。当然正常情况就是按正常的方式安装系统然后正常的用这并没有什么意思。所以我想整点有意思的事情想试试不太正常的使用UTM😝。</p>
<h1 id="在utm中使用苹果虚拟化框架安装windows">
<a href="#在utm中使用苹果虚拟化框架安装windows"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 在UTM中使用苹果虚拟化框架安装Windows
</h1>
<p>如果用过UTM的话应该知道UTM有很多选项比如底层的虚拟化框架可以用QEMU或者<a href="https://developer.apple.com/documentation/Virtualization">Virtualization.framework</a>VZ而QEMU的后端可以选TCG或者是<a href="https://developer.apple.com/documentation/hypervisor">Hypervisor.framework</a>HVF。它们有很多特色像TCG的兼容性最好可以模拟任何架构的CPU但是性能最差HVF使用硬件虚拟化加速只能运行宿主机架构的程序但是性能比较好而VZ经过了苹果官方优化性能最好。 </p><p>
那么现在我想安装Windows又想有最好的性能那我应该选择VZ吧可是UTM不允许我这样选择如果选择安装Windows就会强制使用QEMU……只有Linux或者macOS在ARM处理器才能使用VZ……那我应该如何绕过这个限制呢 </p><p>
我想起来之前<a href="/2024/11/02/trojan.html">让没用的主机感染木马</a>的文章中使用了<a href="https://github.com/bin456789/reinstall">一键DD/重装脚本</a>把我服务器的Linux系统重装成了Windows系统那么我能不能用相同的方式先按照正常的方式用VZ安装一个Linux系统然后使用这个脚本重装成Windows我觉得理论上应该没问题所以就尝试了一下。 </p><p>
我在这之前已经安装过了一个用了VZ的Ubuntu虚拟机新建比较费时间所以就直接把这个虚拟机复制了一份。然后下载了重装脚本准备重装系统但是看说明现在不能让脚本自己查找系统镜像安装了不过没关系前段时间我下了一份Windows 10的镜像接下来我只需要在镜像所在目录执行</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>python3 <span class="nt">-m</span> http.server
</code></pre></div></div>
<p>开启一个文件服务器,然后在虚拟机中执行</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bash reinstall.sh windows <span class="nt">--image-name</span> <span class="s2">"Windows 10 Pro"</span> <span class="nt">--iso</span> <span class="s2">"http://192.168.64.1:8000/windows.iso"</span>
</code></pre></div></div>
<p>就可以了执行后重启就可以在UTM的虚拟机界面中看到脚本执行的一系列操作。在这期间都很顺利然而在它执行完之后虚拟机的屏幕就黑了而且重启也没有任何变化看来是实验失败了不过也可能是因为苹果整的虚拟显示器在Windows中识别不出来所以显示不出东西因为我看活动监视器中CPU的占用率也在跳变虚拟机应该仍然在运行于是我下载了<a href="https://apps.apple.com/us/app/windows-app/id1295203466">Windows App</a>以前的远程桌面使用虚拟机之前的IP进行连接结果连接成功了😆。看来苹果的虚拟化框架是能运行Windows的嘛居然没有一个人尝试一下。 </p><p>
不过屏幕不能亮是真的没有驱动吗我看了眼设备管理器搜了一下那个没有安装驱动的视频控制器的设备ID“1af4:1050”好像是Virtio GPU这个驱动我记得在<a href="https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/">virtio-win</a>里是有的而且重装脚本也会自动下载这个驱动为什么会没有自动安装呢可能是设备ID和驱动不一致吧……不过不影响我选择更新驱动在列表中选择“Red Hat VirtIO GPU DOD controller”之后UTM的虚拟屏幕中就可以看到画面了虽然分辨率只能是1024*768……不过能用就很不错了。 </p><p>
再接下来我就需要验证一下它的性能是不是最好的我把这个虚拟机的硬盘复制了一份新建了一个使用HVF后端的QEMU虚拟机把这个硬盘挂载上然后使用国际象棋跑分看了一下VZ的跑分相比HVF的跑分高了大概5%-10%,还是挺厉害的。 </p><p>
至于其他方面我看了一眼用HVF的QEMU虚拟机CPU不能显示正确的型号而VZ是可以的另外VZ的SMBIOS信息中也可以看到Apple的字样证明这个Windows确确实实是跑在了苹果的虚拟化框架。不过以上的测试都是基于x86架构的macOS等回头我的Mac Studio到了之后再在ARM架构的macOS上再测一下看看能不能用相同的方式安装如果可以的话说明VZ的虚拟机没什么兼容性的问题UTM应该放开使用VZ安装Windows的选项让我们测测苹果的技术才对。</p>
<h1 id="在macos-12中的utm使用苹果虚拟化框架安装linux">
<a href="#在macos-12中的utm使用苹果虚拟化框架安装linux"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 在macOS 12中的UTM使用苹果虚拟化框架安装Linux
</h1>
<p>虽然在刚刚的测试中用VZ安装Linux就和其他普通的虚拟机安装Linux一样简单但是之前的测试是在macOS 15上测的。现在我遇到了一个新问题我现在有一台2016年的Mac上面运行着macOS 12而且不能用OCLP升级到macOS 15因为不是我的电脑。现在我想在这台电脑上用苹果虚拟化框架安装Linux虽然用QEMU更简单但是感觉没意思。在macOS 12中不支持UEFI bootloader所以我需要手工准备内核镜像之类的东西。 </p><p>
当然从零开始有点难我打算先用QEMU安装一遍Ubuntu Server。在创建虚拟机之后需要注意要把刚创建好的虚拟机的硬盘删掉因为那是qcow2格式的在VZ中只支持img格式的硬盘所以删掉之后需要创建一个“RAW映像”然后按照正常的方式安装系统。 </p><p>
安装好之后从“/boot”目录中把“vmlinuz”和“initrd.img”复制出来作为Linux内核和初始Ramdisk我看说明上要未经压缩的Linux内核映像但是好像是压缩的也能用🤔。随后关机把在QEMU中的硬盘映像复制出来作为根文件系统映像。 </p><p>
至于启动参数,可以看“/boot/grub/grub.cfg”中内核后面跟的那串然后再加上“console=hvc0”因为macOS 12中使用VZ没有虚拟屏幕只能用虚拟串口连接。在一切准备好之后就可以开机了在一串内核信息不停滚动后显示出了登录的提示符实验就成功结束了。 </p><p>
不过这样启动的话在系统中所有对内核以及对initramfs的更新就全都不会生效了毕竟虚拟机根本读不到内核了……这倒是影响不大反正不更新也不是不能用更何况macOS都不打算更新虚拟机不更新又能怎样呢🤣。</p>
<h1 id="感想">
<a href="#感想"><svg class='octicon' viewBox='0 0 16 16' version='1.1' width='16' height='32' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg></a> 感想
</h1>
<p>看来苹果的“不支持”不代表真的不支持想想既然是虚拟机当然就不应该限制系统类型啊毕竟虚拟机虚拟的是硬件又不是软件。不过倒是也能理解苹果不需要声明支持自己的竞品所以也没必要做相应的兼容和测试但居然没见到有人尝试一下也挺奇怪明明用Mac的人也有不少对技术很有探索精神的人啊…… </p><p>
不过随着macOS的更新像这些非官方支持的办法估计也很有可能出问题毕竟苹果并不对这些情况进行任何形式的保障也许以后苹果的哪次更新这个方法就用不了了呢……</p></main>
<small style="display: block">tags: <a rel="category tag" class="p-category" href="/search.html?keyword=%E8%99%9A%E6%8B%9F%E5%8C%96"><em>虚拟化</em></a> - <a rel="category tag" class="p-category" href="/search.html?keyword=%E8%8B%B9%E6%9E%9C"><em>苹果</em></a> - <a rel="category tag" class="p-category" href="/search.html?keyword=UTM"><em>UTM</em></a> <span style="float: right;"><a href="https://gitlab.com/mayx/mayx.gitlab.io/tree/master/_posts/2025-03-25-utm.md">查看原始文件</a></span></small>
<h4 style="border-bottom: 1px solid #e5e5e5;margin: 2em 0 5px;">推荐文章</h4>
<p id="suggest-container">Loading...</p>
<script>
var suggest = $("#suggest-container");
$.get(BlogAPI + "/suggest?id=/2025/03/25/utm.html&update=" + lastUpdated.valueOf(), function (data) {
if (data.length) {
getSearchJSON(function (search) {
suggest.empty();
var searchMap = {};
for (var i = 0; i < search.length; i++) {
searchMap[search[i].url] = search[i];
}
var tooltip = $('<div class="content-tooltip"></div>').appendTo('body').hide();
for (var j = 0; j < data.length; j++) {
var item = searchMap[data[j].id];
if (item) {
var link = $('<a href="' + item.url + '">' + item.title + '</a>');
var contentPreview = item.content.substring(0, 100);
if (item.content.length > 100) {
contentPreview += "……";
}
link.hover(
function(e) {
tooltip.text($(this).data('content'))
.css({
top: e.pageY + 10,
left: e.pageX + 10
})
.show();
},
function() {
tooltip.hide();
}
).mousemove(function(e) {
tooltip.css({
top: e.pageY + 10,
left: e.pageX + 10
});
}).data('content', contentPreview);
suggest.append(link);
suggest.append(' - ' + item.date + '<br />');
}
}
});
} else {
suggest.html("暂无推荐文章……");
}
});
</script>
<br />
<div class="pagination">
<span class="prev">
<a href="/2025/03/22/hifi.html">
上一篇关于HiFi的尝试与探索
</a>
</span>
<br />
<span class="next">
<a href="/2025/04/04/search.html">
下一篇:最近对博客搜索功能的优化记录
</a>
</span>
</div>
<!--[if !IE]> -->
<link rel="stylesheet" href="/assets/css/gitalk.css">
<script src="/assets/js/gitalk.min.js"></script>
<div id="gitalk-container"></div>
<script>
var gitalk = new Gitalk({
clientID: '36557aec4c3cb04f7ac6',
clientSecret: 'ac32993299751cb5a9ba81cf2b171cca65879cdb',
repo: 'mabbs.github.io',
owner: 'Mabbs',
admin: ['Mabbs'],
id: '/2025/03/25/utm', // Ensure uniqueness and length less than 50
distractionFreeMode: false, // Facebook-like distraction free mode
proxy: "https://cors-anywhere.mayx.eu.org/?https://github.com/login/oauth/access_token"
})
gitalk.render('gitalk-container')
</script>
<!-- <![endif]-->
</section>
<!--[if !IE]> -->
<div id="landlord" style="left:5px;bottom:0px;">
<div class="message" style="opacity:0"></div>
<canvas id="live2d" width="500" height="560" class="live2d"></canvas>
<div class="live_talk_input_body">
<form id="live_talk_input_form">
<div class="live_talk_input_name_body" >
<input type="checkbox" id="load_this" />
<input type="hidden" id="post_id" value="/2025/03/25/utm.html" />
<label for="load_this">
<span style="font-size: 11px; color: #fff;">&#160;想问这篇文章</span>
</label>
</div>
<div class="live_talk_input_text_body">
<input name="talk" type="text" class="live_talk_talk white_input" id="AIuserText" autocomplete="off" placeholder="要和我聊什么呀?" />
<button type="submit" class="live_talk_send_btn" id="talk_send">发送</button>
</div>
</form>
</div>
<input name="live_talk" id="live_talk" value="1" type="hidden" />
<div class="live_ico_box" style="display:none;">
<div class="live_ico_item type_info" id="showInfoBtn"></div>
<div class="live_ico_item type_talk" id="showTalkBtn"></div>
<div class="live_ico_item type_music" id="musicButton"></div>
<div class="live_ico_item type_youdu" id="youduButton"></div>
<div class="live_ico_item type_quit" id="hideButton"></div>
<input name="live_statu_val" id="live_statu_val" value="0" type="hidden" />
<audio src="" style="display:none;" id="live2d_bgm" data-bgm="0" preload="none"></audio>
<input id="duType" value="douqilai" type="hidden" />
</div>
</div>
<div id="open_live2d">召唤伊斯特瓦尔</div>
<!-- <![endif]-->
<footer>
<p>
<small>Made with ❤ by Mayx<br />Last updated at 2026-01-01 00:00:18<br /> 总字数614622 - 文章数178 - <a href="/atom.xml" >Atom</a> - <a href="/README.html" >About</a></small>
</p>
</footer>
</div>
<script src="/assets/js/scale.fix.js"></script>
<!--[if !IE]> -->
<script src="/assets/js/main_new.js"></script>
<script src="/Live2dHistoire/live2d/js/live2d.js"></script>
<script src="/Live2dHistoire/live2d/js/message.js"></script>
<!-- <![endif]-->
</body>
</html>