{"id":4625,"date":"2024-05-28T15:45:07","date_gmt":"2024-05-28T07:45:07","guid":{"rendered":"https:\/\/benson80.eu.org\/?p=4625"},"modified":"2024-05-29T16:10:14","modified_gmt":"2024-05-29T08:10:14","slug":"%e6%a8%a1%e6%8b%9fmultipass%e7%94%a8powershell%e4%b8%80%e9%94%ae%e5%bc%80%e5%90%afubuntu%e8%99%9a%e6%8b%9f%e6%9c%ba","status":"publish","type":"post","link":"https:\/\/benson80.eu.org\/?p=4625","title":{"rendered":"\u6a21\u62dfmultipass\u7528PowerShell\u4e00\u952e\u5f00\u542fUbuntu\u865a\u62df\u673a"},"content":{"rendered":"\n<p>Multipass\u662fCanonical\uff08Ubuntu\u7684\u6bcd\u516c\u53f8\uff09\u5f00\u53d1\u7684\u4e00\u6b3e\u8f7b\u91cf\u7ea7\u865a\u62df\u673a\u7ba1\u7406\u5de5\u5177\uff0c\u53ef\u5728\u684c\u9762\u64cd\u4f5c\u7cfb\u7edf\u4e0a\u5feb\u901f\u90e8\u7f72\u548c\u7ba1\u7406\u865a\u62df\u673a\u3002\u5b83\u4e3a\u5f00\u53d1\u4eba\u5458\u548c\u7cfb\u7edf\u7ba1\u7406\u5458\u63d0\u4f9b\u4e86\u4e00\u79cd\u7b80\u5355\u800c\u5f3a\u5927\u7684\u65b9\u5f0f\u6765\u521b\u5efa\u3001\u542f\u52a8\u548c\u7ba1\u7406\u865a\u62df\u673a\u5b9e\u4f8b\uff0c\u800c\u65e0\u9700\u6df1\u5165\u4e86\u89e3\u865a\u62df\u5316\u6280\u672f\u7684\u7ec6\u8282\u3002Multipass\u5141\u8bb8\u7528\u6237\u4f7f\u7528\u547d\u4ee4\u884c\u6216\u56fe\u5f62\u7528\u6237\u754c\u9762\uff08GUI\uff09\u521b\u5efa\u548c\u7ba1\u7406\u865a\u62df\u673a\uff0c\u4f7f\u5f97\u5728\u672c\u5730\u6216\u4e91\u7aef\u8f7b\u677e\u6784\u5efa\u548c\u6d4b\u8bd5\u591a\u79cd\u73af\u5883\u6210\u4e3a\u53ef\u80fd\u3002<\/p>\n\n\n\n<p>\u76ee\u524d\uff0c\u6211\u5df2\u7ecf\u5b8c\u6210\u4e86\u4e00\u6bb5 PowerShell \u811a\u672c\u7684\u7f16\u5199\uff0c\u8be5\u811a\u672c\u53ef\u4ee5\u6a21\u62df Multipass \u7684\u529f\u80fd\uff0c\u5b9e\u73b0\u4e86\u4e00\u952e\u5f00\u542f\u865a\u62df\u673a\u7684\u64cd\u4f5c\u3002<\/p>\n\n\n\n<p>\u9996\u5148\u4ece<a href=\"https:\/\/cloud-images.ubuntu.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Ubuntu Cloud Images<\/a>\u5b98\u7f51\u4e0b\u8f7d\u4e91\u955c\u50cf\u6587\u4ef6\uff0c\u76ee\u524d\u4ee5Ubuntu Server 24.04\u4e3a\u4f8b<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"703\" src=\"https:\/\/benson80.eu.org\/wp-content\/uploads\/2024\/05\/image-15.png\" alt=\"\" class=\"wp-image-4628\" srcset=\"https:\/\/benson80.eu.org\/wp-content\/uploads\/2024\/05\/image-15.png 940w, https:\/\/benson80.eu.org\/wp-content\/uploads\/2024\/05\/image-15-300x224.png 300w, https:\/\/benson80.eu.org\/wp-content\/uploads\/2024\/05\/image-15-768x574.png 768w, https:\/\/benson80.eu.org\/wp-content\/uploads\/2024\/05\/image-15-401x300.png 401w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"822\" height=\"887\" src=\"https:\/\/benson80.eu.org\/wp-content\/uploads\/2024\/05\/image-16.png\" alt=\"\" class=\"wp-image-4630\" srcset=\"https:\/\/benson80.eu.org\/wp-content\/uploads\/2024\/05\/image-16.png 822w, https:\/\/benson80.eu.org\/wp-content\/uploads\/2024\/05\/image-16-278x300.png 278w, https:\/\/benson80.eu.org\/wp-content\/uploads\/2024\/05\/image-16-768x829.png 768w\" sizes=\"auto, (max-width: 822px) 100vw, 822px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u91cd\u7f6e\u5bc6\u7801<\/h2>\n\n\n\n<p>sudo apt install libguestfs-tools<\/p>\n\n\n\n<p>virt-customize -a noble-server-cloudimg-amd64.img &#8211;root-password password:123456<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7136\u540e\u628aimg\u6587\u4ef6\u8f6c\u6362\u6210vhdx\u6587\u4ef6<\/h2>\n\n\n\n<p>\u5728Windows\u4e0a\u7684WSL\uff08Windows Subsystem for Linux\uff09\u4e2d\u5b89\u88c5qemu-img<br>sudo apt update<\/p>\n\n\n\n<p>sudo apt install qemu-utils<\/p>\n\n\n\n<p>qemu-img &#8211;version<\/p>\n\n\n\n<p>\u6253\u5f00FinalShell\u628aUbuntu\u4e91\u955c\u50cf\u6587\u4ef6noble-server-cloudimg-amd64.img\u4e0a\u4f20\u5230root\u76ee\u5f55\u4e0b<\/p>\n\n\n\n<p>qemu-img convert -p -f qcow2 -O vhdx noble-server-cloudimg-amd64.img noble-server-cloudimg-amd64.vhdx<\/p>\n\n\n\n<p>\u628avhdx\u6587\u4ef6\u4fdd\u5b58\u5230\u4e0ePS\uff08PowerShell\uff09\u4ee3\u7801\u76f8\u540c\u7684\u76ee\u5f55\u4e2d\u3002<\/p>\n\n\n\n<p>mkdir -p seed-config<\/p>\n\n\n\n<p>\u65b0\u5efa<strong>meta-data<\/strong>\u548c<strong>user-data<\/strong>\u8fd92\u4e2a\u6587\u4ef6\uff1a<\/p>\n\n\n\n<p><strong>meta-data<\/strong>\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p>instance-id: iid-local01<br>local-hostname: ubuntu-vm<\/p>\n\n\n\n<p><strong>user-data<\/strong>\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em>#cloud-config<\/em><br>users:<br>  - name: ubuntu<br>    groups:<br>      - sudo<br>    homedir: \/home\/ubuntu<br>    lock_passwd: false<br>    shell: \/bin\/bash<br>package_update: true<br>package_upgrade: true<br>packages:<br>  - openssh-server  <em># \u786e\u4fdd\u5b89\u88c5 SSH \u670d\u52a1\u5668<\/em><br>package_reboot_if_required: false<br>write_files:<br>  - path: \/etc\/netplan\/50-cloud-init.yaml<br>    content: |<br>      network:<br>        version: 2<br>        ethernets:<br>          eth0:<br>            dhcp4: true<br>          eth1:<br>            dhcp4: false<br>            addresses:<br>              - 192.168.218.110\/24<br>  - path: \/etc\/systemd\/resolved.conf<br>    content: |<br>      [Resolve]<br>      DNS=8.8.8.8 8.8.4.4<br>      DNSStubListener=no<br>runcmd:<br>  - sed -i 's\/#\\?PermitRootLogin .*\/PermitRootLogin yes\/' \/etc\/ssh\/sshd_config<br>  - sed -i 's\/#\\?PasswordAuthentication .*\/PasswordAuthentication yes\/' \/etc\/ssh\/sshd_config<br>  - sed -i 's\/#\\?KbdInteractiveAuthentication .*\/#KbdInteractiveAuthentication no\/' \/etc\/ssh\/sshd_config<br>  - echo 'ubuntu:123456' | chpasswd<br>  - chmod 600 \/etc\/netplan\/50-cloud-init.yaml  <em># \u8bbe\u7f6e Netplan \u914d\u7f6e\u6587\u4ef6\u7684\u6743\u9650<\/em><br>  - netplan apply  <em># \u5e94\u7528 Netplan \u914d\u7f6e<\/em><br>  - systemctl enable ssh  <em># \u786e\u4fdd SSH \u670d\u52a1\u5728\u542f\u52a8\u65f6\u81ea\u52a8\u542f\u52a8<\/em><br>  - systemctl restart ssh  <em># \u91cd\u542f SSH \u670d\u52a1\u4f7f\u66f4\u6539\u751f\u6548<\/em><\/pre>\n\n\n\n<p>\u5bfc\u51faseed.iso<\/p>\n\n\n\n<p>genisoimage -output seed.iso -volid cidata -joliet -rock seed-config\/user-data seed-config\/meta-data<\/p>\n\n\n\n<p>\u4e0b\u8f7dseed.iso\u5e76\u5c06\u5176\u653e\u7f6e\u5230\u4e0ePS\uff08PowerShell\uff09\u4ee3\u7801\u76f8\u540c\u7684\u76ee\u5f55\u4e2d\u3002<\/p>\n\n\n\n<p>\u6700\u540e\u9644\u4e0a\u521b\u5efa\u548c\u542f\u52a8 Hyper-V \u865a\u62df\u673a\u7684PS\u4ee3\u7801\uff1a<\/p>\n\n\n\n<p><a href=\"https:\/\/raw.githubusercontent.com\/Benson80\/Ubuntu-Cloud-VM\/main\/startsx.ps1\">https:\/\/raw.githubusercontent.com\/Benson80\/Ubuntu-Cloud-VM\/main\/startsx.ps1<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"554\" height=\"169\" src=\"https:\/\/benson80.eu.org\/wp-content\/uploads\/2024\/05\/image-17.png\" alt=\"\" class=\"wp-image-4677\" srcset=\"https:\/\/benson80.eu.org\/wp-content\/uploads\/2024\/05\/image-17.png 554w, https:\/\/benson80.eu.org\/wp-content\/uploads\/2024\/05\/image-17-300x92.png 300w, https:\/\/benson80.eu.org\/wp-content\/uploads\/2024\/05\/image-17-421x128.png 421w\" sizes=\"auto, (max-width: 554px) 100vw, 554px\" \/><\/figure>\n\n\n\n<p>\u4f60\u53ef\u4ee5\u901a\u8fc7\u547d\u4ee4\u884c\u542f\u52a8\u865a\u62df\u673a\uff0c\u4ee5\u521b\u5efa\u5177\u6709\u7279\u5b9a\u914d\u7f6e\u7684\u865a\u62df\u73af\u5883\u3002\u4f8b\u5982\uff0c\u901a\u8fc7\u8f93\u5165&#8221;startsx -n vm1 -c 4 -m 4 -d 100&#8243;\u6765\u542f\u52a8\u4e00\u4e2a\u540d\u4e3a&#8221;vm1&#8243;\u7684\u865a\u62df\u673a\uff0c\u8be5\u865a\u62df\u673a\u914d\u7f6e\u4e3a\u62e5\u67094\u4e2a\u6838\u5fc3\u7684CPU\u30014GB\u7684\u5185\u5b58\u548c100GB\u7684\u865a\u62df\u786c\u76d8\u3002\u800c\u5982\u679c\u53ea\u8f93\u5165&#8221;startsx -n \u865a\u62df\u673a\u540d\u79f0&#8221;\uff0c\u5219\u9ed8\u8ba4\u521b\u5efa\u4e00\u4e2a1\u6838\u5fc3CPU\u30011GB\u5185\u5b58\u548c5GB\u786c\u76d8\u5927\u5c0f\u7684\u865a\u62df\u673a\u3002<\/p>\n\n\n\n<p>\u6dfb\u52a0\u7cfb\u7edf\u73af\u5883\u53d8\u91cf\u4ee3\u7801\uff1a<\/p>\n\n\n\n<p><a href=\"https:\/\/raw.githubusercontent.com\/Benson80\/Ubuntu-Cloud-VM\/main\/UpdatePath.ps1\">https:\/\/raw.githubusercontent.com\/Benson80\/Ubuntu-Cloud-VM\/main\/UpdatePath.ps1<\/a><\/p>\n\n\n\n<p>\u5220\u9664 known_hosts \u6587\u4ef6<\/p>\n\n\n\n<p><a href=\"https:\/\/raw.githubusercontent.com\/Benson80\/Ubuntu-Cloud-VM\/main\/ClearKnownHosts.ps1\">https:\/\/raw.githubusercontent.com\/Benson80\/Ubuntu-Cloud-VM\/main\/ClearKnownHosts.ps1<\/a><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Multipass\u662fCanonical\uff08Ubunt &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,9],"tags":[],"class_list":["post-4625","post","type-post","status-publish","format-standard","hentry","category-linux","category-9"],"_links":{"self":[{"href":"https:\/\/benson80.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/4625","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/benson80.eu.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/benson80.eu.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/benson80.eu.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/benson80.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4625"}],"version-history":[{"count":49,"href":"https:\/\/benson80.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/4625\/revisions"}],"predecessor-version":[{"id":4682,"href":"https:\/\/benson80.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/4625\/revisions\/4682"}],"wp:attachment":[{"href":"https:\/\/benson80.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/benson80.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/benson80.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}