[{"data":1,"prerenderedAt":1532},["ShallowReactive",2],{"content-query-euYwResHoc":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"tags":11,"excerpt":15,"body":25,"_type":1526,"_id":1527,"_source":1528,"_file":1529,"_stem":1530,"_extension":1531},"/blog/hyperv-install-arch","blog",false,"","Installing Arch Linux on Hyper-V","The Linux kernel has been upgraded to version 7 and now uses Rust extensively, delivering major performance improvements. So I'm setting up the latest Arch Linux virtual machine on Hyper-V to give it a try.","2026-07-12 15:27",[12,13,14],"hyper-v","archlinux","linux",{"type":16,"children":17},"root",[18],{"type":19,"tag":20,"props":21,"children":22},"element","p",{},[23],{"type":24,"value":9},"text",{"type":16,"children":26,"toc":1507},[27,31,38,52,59,107,112,133,138,295,300,304,310,315,375,380,400,405,425,430,433,439,444,486,491,505,510,520,523,529,534,539,580,585,616,619,625,646,652,669,695,701,721,734,763,769,793,798,876,941,947,1023,1029,1046,1058,1064,1097,1102,1107,1126,1131,1134,1140,1148,1162,1170,1211,1214,1220,1225,1266,1329,1332,1338,1501],{"type":19,"tag":20,"props":28,"children":29},{},[30],{"type":24,"value":9},{"type":19,"tag":32,"props":33,"children":35},"h2",{"id":34},"installing-arch-linux",[36],{"type":24,"value":37},"Installing Arch Linux",{"type":19,"tag":20,"props":39,"children":40},{},[41,43,50],{"type":24,"value":42},"I chose the official Arch Linux rolling-release image ",{"type":19,"tag":44,"props":45,"children":47},"code",{"className":46},[],[48],{"type":24,"value":49},"archlinux-x86_64.iso",{"type":24,"value":51},", which is about 1.5GB. I went with a minimal installation, which is well suited as a high-performance development server.",{"type":19,"tag":53,"props":54,"children":56},"h3",{"id":55},"key-points-when-creating-the-hyper-v-vm",[57],{"type":24,"value":58},"Key points when creating the Hyper-V VM",{"type":19,"tag":60,"props":61,"children":62},"ul",{},[63,80,97],{"type":19,"tag":64,"props":65,"children":66},"li",{},[67,73,75],{"type":19,"tag":68,"props":69,"children":70},"strong",{},[71],{"type":24,"value":72},"Generation",{"type":24,"value":74},": Select ",{"type":19,"tag":68,"props":76,"children":77},{},[78],{"type":24,"value":79},"Generation 2 (Gen 2)",{"type":19,"tag":64,"props":81,"children":82},{},[83,88,90,95],{"type":19,"tag":68,"props":84,"children":85},{},[86],{"type":24,"value":87},"Secure Boot",{"type":24,"value":89},": Make sure to ",{"type":19,"tag":68,"props":91,"children":92},{},[93],{"type":24,"value":94},"uncheck \"Enable Secure Boot\"",{"type":24,"value":96}," in the VM settings, otherwise it won't boot",{"type":19,"tag":64,"props":98,"children":99},{},[100,105],{"type":19,"tag":68,"props":101,"children":102},{},[103],{"type":24,"value":104},"Network",{"type":24,"value":106},": Use the default network first, then switch to an internal network later",{"type":19,"tag":20,"props":108,"children":109},{},[110],{"type":24,"value":111},"After starting the VM, you'll enter the command-line Live environment. The official installer script is recommended:",{"type":19,"tag":113,"props":114,"children":118},"pre",{"className":115,"code":116,"language":117,"meta":7,"style":7},"language-bash shiki shiki-themes solarized-light github-dark monokai","archinstall\n","bash",[119],{"type":19,"tag":44,"props":120,"children":121},{"__ignoreMap":7},[122],{"type":19,"tag":123,"props":124,"children":127},"span",{"class":125,"line":126},"line",1,[128],{"type":19,"tag":123,"props":129,"children":131},{"style":130},"--shiki-default:#268BD2;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E",[132],{"type":24,"value":116},{"type":19,"tag":20,"props":134,"children":135},{},[136],{"type":24,"value":137},"Key options to choose:",{"type":19,"tag":139,"props":140,"children":141},"table",{},[142,161],{"type":19,"tag":143,"props":144,"children":145},"thead",{},[146],{"type":19,"tag":147,"props":148,"children":149},"tr",{},[150,156],{"type":19,"tag":151,"props":152,"children":153},"th",{},[154],{"type":24,"value":155},"Option",{"type":19,"tag":151,"props":157,"children":158},{},[159],{"type":24,"value":160},"Recommended value",{"type":19,"tag":162,"props":163,"children":164},"tbody",{},[165,187,206,240,253,276],{"type":19,"tag":147,"props":166,"children":167},{},[168,174],{"type":19,"tag":169,"props":170,"children":171},"td",{},[172],{"type":24,"value":173},"Mirror",{"type":19,"tag":169,"props":175,"children":176},{},[177,179,185],{"type":24,"value":178},"Users in China should pick the Tsinghua / USTC mirror under ",{"type":19,"tag":44,"props":180,"children":182},{"className":181},[],[183],{"type":24,"value":184},"China",{"type":24,"value":186}," to speed up downloads",{"type":19,"tag":147,"props":188,"children":189},{},[190,195],{"type":19,"tag":169,"props":191,"children":192},{},[193],{"type":24,"value":194},"Disk partitioning",{"type":19,"tag":169,"props":196,"children":197},{},[198,200],{"type":24,"value":199},"Choose ",{"type":19,"tag":44,"props":201,"children":203},{"className":202},[],[204],{"type":24,"value":205},"Best-effort default partition layout",{"type":19,"tag":147,"props":207,"children":208},{},[209,214],{"type":19,"tag":169,"props":210,"children":211},{},[212],{"type":24,"value":213},"File system",{"type":19,"tag":169,"props":215,"children":216},{},[217,223,225,231,233,238],{"type":19,"tag":44,"props":218,"children":220},{"className":219},[],[221],{"type":24,"value":222},"ext4",{"type":24,"value":224}," (stable) or ",{"type":19,"tag":44,"props":226,"children":228},{"className":227},[],[229],{"type":24,"value":230},"btrfs",{"type":24,"value":232}," (supports snapshots); ",{"type":19,"tag":44,"props":234,"children":236},{"className":235},[],[237],{"type":24,"value":222},{"type":24,"value":239}," is preferred for VMs",{"type":19,"tag":147,"props":241,"children":242},{},[243,248],{"type":19,"tag":169,"props":244,"children":245},{},[246],{"type":24,"value":247},"Users",{"type":19,"tag":169,"props":249,"children":250},{},[251],{"type":24,"value":252},"Set a password for the root user, then add a regular user and make it a sudo user",{"type":19,"tag":147,"props":254,"children":255},{},[256,261],{"type":19,"tag":169,"props":257,"children":258},{},[259],{"type":24,"value":260},"Profile",{"type":19,"tag":169,"props":262,"children":263},{},[264,265,274],{"type":24,"value":199},{"type":19,"tag":68,"props":266,"children":267},{},[268],{"type":19,"tag":44,"props":269,"children":271},{"className":270},[],[272],{"type":24,"value":273},"Minimal",{"type":24,"value":275}," (headless, high performance)",{"type":19,"tag":147,"props":277,"children":278},{},[279,284],{"type":19,"tag":169,"props":280,"children":281},{},[282],{"type":24,"value":283},"Network configuration",{"type":19,"tag":169,"props":285,"children":286},{},[287,289],{"type":24,"value":288},"Keep the default ",{"type":19,"tag":44,"props":290,"children":292},{"className":291},[],[293],{"type":24,"value":294},"NetworkManager",{"type":19,"tag":20,"props":296,"children":297},{},[298],{"type":24,"value":299},"After installation completes, remove the ISO image and reboot into the new system.",{"type":19,"tag":301,"props":302,"children":303},"hr",{},[],{"type":19,"tag":32,"props":305,"children":307},{"id":306},"installing-ssh",[308],{"type":24,"value":309},"Installing SSH",{"type":19,"tag":20,"props":311,"children":312},{},[313],{"type":24,"value":314},"Once in Arch, install and start SSH:",{"type":19,"tag":113,"props":316,"children":318},{"className":115,"code":317,"language":117,"meta":7,"style":7},"sudo pacman -S openssh\nsudo systemctl enable sshd --now\n",[319],{"type":19,"tag":44,"props":320,"children":321},{"__ignoreMap":7},[322,347],{"type":19,"tag":123,"props":323,"children":324},{"class":125,"line":126},[325,330,336,342],{"type":19,"tag":123,"props":326,"children":327},{"style":130},[328],{"type":24,"value":329},"sudo",{"type":19,"tag":123,"props":331,"children":333},{"style":332},"--shiki-default:#2AA198;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74",[334],{"type":24,"value":335}," pacman",{"type":19,"tag":123,"props":337,"children":339},{"style":338},"--shiki-default:#CB4B16;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF",[340],{"type":24,"value":341}," -S",{"type":19,"tag":123,"props":343,"children":344},{"style":332},[345],{"type":24,"value":346}," openssh\n",{"type":19,"tag":123,"props":348,"children":350},{"class":125,"line":349},2,[351,355,360,365,370],{"type":19,"tag":123,"props":352,"children":353},{"style":130},[354],{"type":24,"value":329},{"type":19,"tag":123,"props":356,"children":357},{"style":332},[358],{"type":24,"value":359}," systemctl",{"type":19,"tag":123,"props":361,"children":362},{"style":332},[363],{"type":24,"value":364}," enable",{"type":19,"tag":123,"props":366,"children":367},{"style":332},[368],{"type":24,"value":369}," sshd",{"type":19,"tag":123,"props":371,"children":372},{"style":338},[373],{"type":24,"value":374}," --now\n",{"type":19,"tag":20,"props":376,"children":377},{},[378],{"type":24,"value":379},"Check the IP address:",{"type":19,"tag":113,"props":381,"children":383},{"className":115,"code":382,"language":117,"meta":7,"style":7},"ip a\n",[384],{"type":19,"tag":44,"props":385,"children":386},{"__ignoreMap":7},[387],{"type":19,"tag":123,"props":388,"children":389},{"class":125,"line":126},[390,395],{"type":19,"tag":123,"props":391,"children":392},{"style":130},[393],{"type":24,"value":394},"ip",{"type":19,"tag":123,"props":396,"children":397},{"style":332},[398],{"type":24,"value":399}," a\n",{"type":19,"tag":20,"props":401,"children":402},{},[403],{"type":24,"value":404},"Then connect from a Windows terminal:",{"type":19,"tag":113,"props":406,"children":408},{"className":115,"code":407,"language":117,"meta":7,"style":7},"ssh username@IP_ADDRESS\n",[409],{"type":19,"tag":44,"props":410,"children":411},{"__ignoreMap":7},[412],{"type":19,"tag":123,"props":413,"children":414},{"class":125,"line":126},[415,420],{"type":19,"tag":123,"props":416,"children":417},{"style":130},[418],{"type":24,"value":419},"ssh",{"type":19,"tag":123,"props":421,"children":422},{"style":332},[423],{"type":24,"value":424}," username@IP_ADDRESS\n",{"type":19,"tag":20,"props":426,"children":427},{},[428],{"type":24,"value":429},"You should be able to connect normally at this point. However, if you're using the default Hyper-V network, the VM's IP may change after a reboot, so it's recommended to configure a static IP.",{"type":19,"tag":301,"props":431,"children":432},{},[],{"type":19,"tag":32,"props":434,"children":436},{"id":435},"creating-a-hyper-v-internal-network",[437],{"type":24,"value":438},"Creating a Hyper-V Internal Network",{"type":19,"tag":20,"props":440,"children":441},{},[442],{"type":24,"value":443},"Open:",{"type":19,"tag":113,"props":445,"children":448},{"className":446,"code":447,"language":24,"meta":7,"style":7},"language-text shiki shiki-themes solarized-light github-dark monokai","Hyper-V Manager\n→ Virtual Switch Manager\n→ New Virtual Switch\n→ Internal\n",[449],{"type":19,"tag":44,"props":450,"children":451},{"__ignoreMap":7},[452,460,468,477],{"type":19,"tag":123,"props":453,"children":454},{"class":125,"line":126},[455],{"type":19,"tag":123,"props":456,"children":457},{},[458],{"type":24,"value":459},"Hyper-V Manager\n",{"type":19,"tag":123,"props":461,"children":462},{"class":125,"line":349},[463],{"type":19,"tag":123,"props":464,"children":465},{},[466],{"type":24,"value":467},"→ Virtual Switch Manager\n",{"type":19,"tag":123,"props":469,"children":471},{"class":125,"line":470},3,[472],{"type":19,"tag":123,"props":473,"children":474},{},[475],{"type":24,"value":476},"→ New Virtual Switch\n",{"type":19,"tag":123,"props":478,"children":480},{"class":125,"line":479},4,[481],{"type":19,"tag":123,"props":482,"children":483},{},[484],{"type":24,"value":485},"→ Internal\n",{"type":19,"tag":20,"props":487,"children":488},{},[489],{"type":24,"value":490},"For example, name it:",{"type":19,"tag":113,"props":492,"children":494},{"className":446,"code":493,"language":24,"meta":7,"style":7},"VM-Internal\n",[495],{"type":19,"tag":44,"props":496,"children":497},{"__ignoreMap":7},[498],{"type":19,"tag":123,"props":499,"children":500},{"class":125,"line":126},[501],{"type":19,"tag":123,"props":502,"children":503},{},[504],{"type":24,"value":493},{"type":19,"tag":20,"props":506,"children":507},{},[508],{"type":24,"value":509},"After creation, you also need to go into the VM settings and switch the network adapter to this new virtual switch.",{"type":19,"tag":20,"props":511,"children":512},{},[513,518],{"type":19,"tag":68,"props":514,"children":515},{},[516],{"type":24,"value":517},"Note",{"type":24,"value":519},": Switching the network will immediately drop the existing SSH connection, so it's recommended to finish the Windows-side network configuration first, then switch the VM's network.",{"type":19,"tag":301,"props":521,"children":522},{},[],{"type":19,"tag":32,"props":524,"children":526},{"id":525},"configuring-windows-nat",[527],{"type":24,"value":528},"Configuring Windows NAT",{"type":19,"tag":20,"props":530,"children":531},{},[532],{"type":24,"value":533},"Open PowerShell as Administrator:",{"type":19,"tag":20,"props":535,"children":536},{},[537],{"type":24,"value":538},"Configure the gateway address for the virtual network adapter created by Hyper-V:",{"type":19,"tag":113,"props":540,"children":544},{"className":541,"code":542,"language":543,"meta":7,"style":7},"language-powershell shiki shiki-themes solarized-light github-dark monokai","New-NetIPAddress `\n  -IPAddress 192.168.100.1 `\n  -PrefixLength 24 `\n  -InterfaceAlias \"vEthernet (VM-Internal)\"\n","powershell",[545],{"type":19,"tag":44,"props":546,"children":547},{"__ignoreMap":7},[548,556,564,572],{"type":19,"tag":123,"props":549,"children":550},{"class":125,"line":126},[551],{"type":19,"tag":123,"props":552,"children":553},{},[554],{"type":24,"value":555},"New-NetIPAddress `\n",{"type":19,"tag":123,"props":557,"children":558},{"class":125,"line":349},[559],{"type":19,"tag":123,"props":560,"children":561},{},[562],{"type":24,"value":563},"  -IPAddress 192.168.100.1 `\n",{"type":19,"tag":123,"props":565,"children":566},{"class":125,"line":470},[567],{"type":19,"tag":123,"props":568,"children":569},{},[570],{"type":24,"value":571},"  -PrefixLength 24 `\n",{"type":19,"tag":123,"props":573,"children":574},{"class":125,"line":479},[575],{"type":19,"tag":123,"props":576,"children":577},{},[578],{"type":24,"value":579},"  -InterfaceAlias \"vEthernet (VM-Internal)\"\n",{"type":19,"tag":20,"props":581,"children":582},{},[583],{"type":24,"value":584},"Create the NAT:",{"type":19,"tag":113,"props":586,"children":588},{"className":541,"code":587,"language":543,"meta":7,"style":7},"New-NetNat `\n  -Name \"VM-NAT\" `\n  -InternalIPInterfaceAddressPrefix \"192.168.100.0/24\"\n",[589],{"type":19,"tag":44,"props":590,"children":591},{"__ignoreMap":7},[592,600,608],{"type":19,"tag":123,"props":593,"children":594},{"class":125,"line":126},[595],{"type":19,"tag":123,"props":596,"children":597},{},[598],{"type":24,"value":599},"New-NetNat `\n",{"type":19,"tag":123,"props":601,"children":602},{"class":125,"line":349},[603],{"type":19,"tag":123,"props":604,"children":605},{},[606],{"type":24,"value":607},"  -Name \"VM-NAT\" `\n",{"type":19,"tag":123,"props":609,"children":610},{"class":125,"line":470},[611],{"type":19,"tag":123,"props":612,"children":613},{},[614],{"type":24,"value":615},"  -InternalIPInterfaceAddressPrefix \"192.168.100.0/24\"\n",{"type":19,"tag":301,"props":617,"children":618},{},[],{"type":19,"tag":32,"props":620,"children":622},{"id":621},"configuring-a-static-ip-on-arch-linux",[623],{"type":24,"value":624},"Configuring a Static IP on Arch Linux",{"type":19,"tag":20,"props":626,"children":627},{},[628,630,636,638,644],{"type":24,"value":629},"Arch Linux uses ",{"type":19,"tag":44,"props":631,"children":633},{"className":632},[],[634],{"type":24,"value":635},"systemd-networkd",{"type":24,"value":637}," to manage networking, and configuration files live in ",{"type":19,"tag":44,"props":639,"children":641},{"className":640},[],[642],{"type":24,"value":643},"/etc/systemd/network/",{"type":24,"value":645},".",{"type":19,"tag":53,"props":647,"children":649},{"id":648},"_1-check-the-network-interface-name",[650],{"type":24,"value":651},"1. Check the network interface name",{"type":19,"tag":113,"props":653,"children":654},{"className":115,"code":382,"language":117,"meta":7,"style":7},[655],{"type":19,"tag":44,"props":656,"children":657},{"__ignoreMap":7},[658],{"type":19,"tag":123,"props":659,"children":660},{"class":125,"line":126},[661,665],{"type":19,"tag":123,"props":662,"children":663},{"style":130},[664],{"type":24,"value":394},{"type":19,"tag":123,"props":666,"children":667},{"style":332},[668],{"type":24,"value":399},{"type":19,"tag":20,"props":670,"children":671},{},[672,674,680,682,688,689],{"type":24,"value":673},"Common names: ",{"type":19,"tag":44,"props":675,"children":677},{"className":676},[],[678],{"type":24,"value":679},"eth0",{"type":24,"value":681},", ",{"type":19,"tag":44,"props":683,"children":685},{"className":684},[],[686],{"type":24,"value":687},"ens160",{"type":24,"value":681},{"type":19,"tag":44,"props":690,"children":692},{"className":691},[],[693],{"type":24,"value":694},"enp0s3",{"type":19,"tag":53,"props":696,"children":698},{"id":697},"_2-inspect-and-clean-up-existing-configuration",[699],{"type":24,"value":700},"2. Inspect and clean up existing configuration",{"type":19,"tag":113,"props":702,"children":704},{"className":115,"code":703,"language":117,"meta":7,"style":7},"ls /etc/systemd/network/\n",[705],{"type":19,"tag":44,"props":706,"children":707},{"__ignoreMap":7},[708],{"type":19,"tag":123,"props":709,"children":710},{"class":125,"line":126},[711,716],{"type":19,"tag":123,"props":712,"children":713},{"style":130},[714],{"type":24,"value":715},"ls",{"type":19,"tag":123,"props":717,"children":718},{"style":332},[719],{"type":24,"value":720}," /etc/systemd/network/\n",{"type":19,"tag":20,"props":722,"children":723},{},[724,726,732],{"type":24,"value":725},"If a DHCP config file exists (e.g. ",{"type":19,"tag":44,"props":727,"children":729},{"className":728},[],[730],{"type":24,"value":731},"10-eth0.network",{"type":24,"value":733},"), delete or back it up first to avoid conflicts with the static config (systemd loads files in filename order and matches the first one):",{"type":19,"tag":113,"props":735,"children":737},{"className":115,"code":736,"language":117,"meta":7,"style":7},"sudo mv /etc/systemd/network/10-eth0.network /etc/systemd/network/10-eth0.network.bak\n",[738],{"type":19,"tag":44,"props":739,"children":740},{"__ignoreMap":7},[741],{"type":19,"tag":123,"props":742,"children":743},{"class":125,"line":126},[744,748,753,758],{"type":19,"tag":123,"props":745,"children":746},{"style":130},[747],{"type":24,"value":329},{"type":19,"tag":123,"props":749,"children":750},{"style":332},[751],{"type":24,"value":752}," mv",{"type":19,"tag":123,"props":754,"children":755},{"style":332},[756],{"type":24,"value":757}," /etc/systemd/network/10-eth0.network",{"type":19,"tag":123,"props":759,"children":760},{"style":332},[761],{"type":24,"value":762}," /etc/systemd/network/10-eth0.network.bak\n",{"type":19,"tag":53,"props":764,"children":766},{"id":765},"_3-create-the-static-ip-config-file",[767],{"type":24,"value":768},"3. Create the static IP config file",{"type":19,"tag":113,"props":770,"children":772},{"className":115,"code":771,"language":117,"meta":7,"style":7},"sudo vim /etc/systemd/network/20-wired.network\n",[773],{"type":19,"tag":44,"props":774,"children":775},{"__ignoreMap":7},[776],{"type":19,"tag":123,"props":777,"children":778},{"class":125,"line":126},[779,783,788],{"type":19,"tag":123,"props":780,"children":781},{"style":130},[782],{"type":24,"value":329},{"type":19,"tag":123,"props":784,"children":785},{"style":332},[786],{"type":24,"value":787}," vim",{"type":19,"tag":123,"props":789,"children":790},{"style":332},[791],{"type":24,"value":792}," /etc/systemd/network/20-wired.network\n",{"type":19,"tag":20,"props":794,"children":795},{},[796],{"type":24,"value":797},"Write the following content (adjust the IP according to your setup):",{"type":19,"tag":113,"props":799,"children":803},{"className":800,"code":801,"language":802,"meta":7,"style":7},"language-ini shiki shiki-themes solarized-light github-dark monokai","[Match]\nName=eth0\n\n[Network]\nAddress=192.168.100.10/24\nGateway=192.168.100.1\nDNS=1.1.1.1\nDNS=8.8.8.8\n","ini",[804],{"type":19,"tag":44,"props":805,"children":806},{"__ignoreMap":7},[807,815,823,832,840,849,858,867],{"type":19,"tag":123,"props":808,"children":809},{"class":125,"line":126},[810],{"type":19,"tag":123,"props":811,"children":812},{},[813],{"type":24,"value":814},"[Match]\n",{"type":19,"tag":123,"props":816,"children":817},{"class":125,"line":349},[818],{"type":19,"tag":123,"props":819,"children":820},{},[821],{"type":24,"value":822},"Name=eth0\n",{"type":19,"tag":123,"props":824,"children":825},{"class":125,"line":470},[826],{"type":19,"tag":123,"props":827,"children":829},{"emptyLinePlaceholder":828},true,[830],{"type":24,"value":831},"\n",{"type":19,"tag":123,"props":833,"children":834},{"class":125,"line":479},[835],{"type":19,"tag":123,"props":836,"children":837},{},[838],{"type":24,"value":839},"[Network]\n",{"type":19,"tag":123,"props":841,"children":843},{"class":125,"line":842},5,[844],{"type":19,"tag":123,"props":845,"children":846},{},[847],{"type":24,"value":848},"Address=192.168.100.10/24\n",{"type":19,"tag":123,"props":850,"children":852},{"class":125,"line":851},6,[853],{"type":19,"tag":123,"props":854,"children":855},{},[856],{"type":24,"value":857},"Gateway=192.168.100.1\n",{"type":19,"tag":123,"props":859,"children":861},{"class":125,"line":860},7,[862],{"type":19,"tag":123,"props":863,"children":864},{},[865],{"type":24,"value":866},"DNS=1.1.1.1\n",{"type":19,"tag":123,"props":868,"children":870},{"class":125,"line":869},8,[871],{"type":19,"tag":123,"props":872,"children":873},{},[874],{"type":24,"value":875},"DNS=8.8.8.8\n",{"type":19,"tag":877,"props":878,"children":879},"blockquote",{},[880,890],{"type":19,"tag":20,"props":881,"children":882},{},[883,888],{"type":19,"tag":68,"props":884,"children":885},{},[886],{"type":24,"value":887},"Important",{"type":24,"value":889},":",{"type":19,"tag":60,"props":891,"children":892},{},[893,904,923],{"type":19,"tag":64,"props":894,"children":895},{},[896,902],{"type":19,"tag":44,"props":897,"children":899},{"className":898},[],[900],{"type":24,"value":901},"Name",{"type":24,"value":903}," must match the interface name exactly",{"type":19,"tag":64,"props":905,"children":906},{},[907,909,915,917],{"type":24,"value":908},"Use the ",{"type":19,"tag":44,"props":910,"children":912},{"className":911},[],[913],{"type":24,"value":914},"/24",{"type":24,"value":916}," format for the subnet mask, not ",{"type":19,"tag":44,"props":918,"children":920},{"className":919},[],[921],{"type":24,"value":922},"255.255.255.0",{"type":19,"tag":64,"props":924,"children":925},{},[926,939],{"type":19,"tag":68,"props":927,"children":928},{},[929,931,937],{"type":24,"value":930},"Do not add any ",{"type":19,"tag":44,"props":932,"children":934},{"className":933},[],[935],{"type":24,"value":936},"#",{"type":24,"value":938}," comments or non-ASCII characters",{"type":24,"value":940},", otherwise systemd-networkd may fail to parse the file",{"type":19,"tag":53,"props":942,"children":944},{"id":943},"_4-enable-and-restart-the-network-service",[945],{"type":24,"value":946},"4. Enable and restart the network service",{"type":19,"tag":113,"props":948,"children":950},{"className":115,"code":949,"language":117,"meta":7,"style":7},"sudo systemctl enable systemd-networkd --now\nsudo systemctl enable systemd-resolved --now\nsudo systemctl restart systemd-networkd\n",[951],{"type":19,"tag":44,"props":952,"children":953},{"__ignoreMap":7},[954,978,1002],{"type":19,"tag":123,"props":955,"children":956},{"class":125,"line":126},[957,961,965,969,974],{"type":19,"tag":123,"props":958,"children":959},{"style":130},[960],{"type":24,"value":329},{"type":19,"tag":123,"props":962,"children":963},{"style":332},[964],{"type":24,"value":359},{"type":19,"tag":123,"props":966,"children":967},{"style":332},[968],{"type":24,"value":364},{"type":19,"tag":123,"props":970,"children":971},{"style":332},[972],{"type":24,"value":973}," systemd-networkd",{"type":19,"tag":123,"props":975,"children":976},{"style":338},[977],{"type":24,"value":374},{"type":19,"tag":123,"props":979,"children":980},{"class":125,"line":349},[981,985,989,993,998],{"type":19,"tag":123,"props":982,"children":983},{"style":130},[984],{"type":24,"value":329},{"type":19,"tag":123,"props":986,"children":987},{"style":332},[988],{"type":24,"value":359},{"type":19,"tag":123,"props":990,"children":991},{"style":332},[992],{"type":24,"value":364},{"type":19,"tag":123,"props":994,"children":995},{"style":332},[996],{"type":24,"value":997}," systemd-resolved",{"type":19,"tag":123,"props":999,"children":1000},{"style":338},[1001],{"type":24,"value":374},{"type":19,"tag":123,"props":1003,"children":1004},{"class":125,"line":470},[1005,1009,1013,1018],{"type":19,"tag":123,"props":1006,"children":1007},{"style":130},[1008],{"type":24,"value":329},{"type":19,"tag":123,"props":1010,"children":1011},{"style":332},[1012],{"type":24,"value":359},{"type":19,"tag":123,"props":1014,"children":1015},{"style":332},[1016],{"type":24,"value":1017}," restart",{"type":19,"tag":123,"props":1019,"children":1020},{"style":332},[1021],{"type":24,"value":1022}," systemd-networkd\n",{"type":19,"tag":53,"props":1024,"children":1026},{"id":1025},"_5-confirm-the-ip",[1027],{"type":24,"value":1028},"5. Confirm the IP",{"type":19,"tag":113,"props":1030,"children":1031},{"className":115,"code":382,"language":117,"meta":7,"style":7},[1032],{"type":19,"tag":44,"props":1033,"children":1034},{"__ignoreMap":7},[1035],{"type":19,"tag":123,"props":1036,"children":1037},{"class":125,"line":126},[1038,1042],{"type":19,"tag":123,"props":1039,"children":1040},{"style":130},[1041],{"type":24,"value":394},{"type":19,"tag":123,"props":1043,"children":1044},{"style":332},[1045],{"type":24,"value":399},{"type":19,"tag":20,"props":1047,"children":1048},{},[1049,1051,1057],{"type":24,"value":1050},"It should now show ",{"type":19,"tag":44,"props":1052,"children":1054},{"className":1053},[],[1055],{"type":24,"value":1056},"inet 192.168.100.10/24",{"type":24,"value":645},{"type":19,"tag":53,"props":1059,"children":1061},{"id":1060},"_6-test-the-network",[1062],{"type":24,"value":1063},"6. Test the network",{"type":19,"tag":113,"props":1065,"children":1067},{"className":115,"code":1066,"language":117,"meta":7,"style":7},"ping 1.1.1.1\nping google.com\n",[1068],{"type":19,"tag":44,"props":1069,"children":1070},{"__ignoreMap":7},[1071,1085],{"type":19,"tag":123,"props":1072,"children":1073},{"class":125,"line":126},[1074,1079],{"type":19,"tag":123,"props":1075,"children":1076},{"style":130},[1077],{"type":24,"value":1078},"ping",{"type":19,"tag":123,"props":1080,"children":1082},{"style":1081},"--shiki-default:#D33682;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF",[1083],{"type":24,"value":1084}," 1.1.1.1\n",{"type":19,"tag":123,"props":1086,"children":1087},{"class":125,"line":349},[1088,1092],{"type":19,"tag":123,"props":1089,"children":1090},{"style":130},[1091],{"type":24,"value":1078},{"type":19,"tag":123,"props":1093,"children":1094},{"style":332},[1095],{"type":24,"value":1096}," google.com\n",{"type":19,"tag":20,"props":1098,"children":1099},{},[1100],{"type":24,"value":1101},"If you can reach the internet normally, the NAT and DNS configuration are working.",{"type":19,"tag":20,"props":1103,"children":1104},{},[1105],{"type":24,"value":1106},"From now on you can connect using the fixed address:",{"type":19,"tag":113,"props":1108,"children":1110},{"className":115,"code":1109,"language":117,"meta":7,"style":7},"ssh username@192.168.100.10\n",[1111],{"type":19,"tag":44,"props":1112,"children":1113},{"__ignoreMap":7},[1114],{"type":19,"tag":123,"props":1115,"children":1116},{"class":125,"line":126},[1117,1121],{"type":19,"tag":123,"props":1118,"children":1119},{"style":130},[1120],{"type":24,"value":419},{"type":19,"tag":123,"props":1122,"children":1123},{"style":332},[1124],{"type":24,"value":1125}," username@192.168.100.10\n",{"type":19,"tag":20,"props":1127,"children":1128},{},[1129],{"type":24,"value":1130},"without worrying about the IP changing.",{"type":19,"tag":301,"props":1132,"children":1133},{},[],{"type":19,"tag":32,"props":1135,"children":1137},{"id":1136},"configuring-passwordless-login",[1138],{"type":24,"value":1139},"Configuring Passwordless Login",{"type":19,"tag":60,"props":1141,"children":1142},{},[1143],{"type":19,"tag":64,"props":1144,"children":1145},{},[1146],{"type":24,"value":1147},"Generate an SSH key pair on Windows (skip this if you've already generated one before):",{"type":19,"tag":113,"props":1149,"children":1151},{"className":541,"code":1150,"language":543,"meta":7,"style":7},"ssh-keygen -t rsa -b 4096\n",[1152],{"type":19,"tag":44,"props":1153,"children":1154},{"__ignoreMap":7},[1155],{"type":19,"tag":123,"props":1156,"children":1157},{"class":125,"line":126},[1158],{"type":19,"tag":123,"props":1159,"children":1160},{},[1161],{"type":24,"value":1150},{"type":19,"tag":60,"props":1163,"children":1164},{},[1165],{"type":19,"tag":64,"props":1166,"children":1167},{},[1168],{"type":24,"value":1169},"Copy the public key to Arch Linux:",{"type":19,"tag":113,"props":1171,"children":1173},{"className":115,"code":1172,"language":117,"meta":7,"style":7},"cat ~/.ssh/id_rsa.pub | ssh username@192.168.100.10 \"mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys\"\n",[1174],{"type":19,"tag":44,"props":1175,"children":1176},{"__ignoreMap":7},[1177],{"type":19,"tag":123,"props":1178,"children":1179},{"class":125,"line":126},[1180,1185,1190,1196,1201,1206],{"type":19,"tag":123,"props":1181,"children":1182},{"style":130},[1183],{"type":24,"value":1184},"cat",{"type":19,"tag":123,"props":1186,"children":1187},{"style":332},[1188],{"type":24,"value":1189}," ~/.ssh/id_rsa.pub",{"type":19,"tag":123,"props":1191,"children":1193},{"style":1192},"--shiki-default:#859900;--shiki-dark:#F97583;--shiki-sepia:#F92672",[1194],{"type":24,"value":1195}," |",{"type":19,"tag":123,"props":1197,"children":1198},{"style":130},[1199],{"type":24,"value":1200}," ssh",{"type":19,"tag":123,"props":1202,"children":1203},{"style":332},[1204],{"type":24,"value":1205}," username@192.168.100.10",{"type":19,"tag":123,"props":1207,"children":1208},{"style":332},[1209],{"type":24,"value":1210}," \"mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys\"\n",{"type":19,"tag":301,"props":1212,"children":1213},{},[],{"type":19,"tag":32,"props":1215,"children":1217},{"id":1216},"bonus-installing-basic-tools",[1218],{"type":24,"value":1219},"Bonus: Installing Basic Tools",{"type":19,"tag":20,"props":1221,"children":1222},{},[1223],{"type":24,"value":1224},"A minimal system lacks some common tools, so it's recommended to install them:",{"type":19,"tag":113,"props":1226,"children":1228},{"className":115,"code":1227,"language":117,"meta":7,"style":7},"sudo pacman -S git less vim fish\n",[1229],{"type":19,"tag":44,"props":1230,"children":1231},{"__ignoreMap":7},[1232],{"type":19,"tag":123,"props":1233,"children":1234},{"class":125,"line":126},[1235,1239,1243,1247,1252,1257,1261],{"type":19,"tag":123,"props":1236,"children":1237},{"style":130},[1238],{"type":24,"value":329},{"type":19,"tag":123,"props":1240,"children":1241},{"style":332},[1242],{"type":24,"value":335},{"type":19,"tag":123,"props":1244,"children":1245},{"style":338},[1246],{"type":24,"value":341},{"type":19,"tag":123,"props":1248,"children":1249},{"style":332},[1250],{"type":24,"value":1251}," git",{"type":19,"tag":123,"props":1253,"children":1254},{"style":332},[1255],{"type":24,"value":1256}," less",{"type":19,"tag":123,"props":1258,"children":1259},{"style":332},[1260],{"type":24,"value":787},{"type":19,"tag":123,"props":1262,"children":1263},{"style":332},[1264],{"type":24,"value":1265}," fish\n",{"type":19,"tag":60,"props":1267,"children":1268},{},[1269,1280,1299,1318],{"type":19,"tag":64,"props":1270,"children":1271},{},[1272,1278],{"type":19,"tag":44,"props":1273,"children":1275},{"className":1274},[],[1276],{"type":24,"value":1277},"git",{"type":24,"value":1279},": version control",{"type":19,"tag":64,"props":1281,"children":1282},{},[1283,1289,1291,1297],{"type":19,"tag":44,"props":1284,"children":1286},{"className":1285},[],[1287],{"type":24,"value":1288},"less",{"type":24,"value":1290},": Git pager (otherwise ",{"type":19,"tag":44,"props":1292,"children":1294},{"className":1293},[],[1295],{"type":24,"value":1296},"git log",{"type":24,"value":1298}," will error out)",{"type":19,"tag":64,"props":1300,"children":1301},{},[1302,1308,1310,1316],{"type":19,"tag":44,"props":1303,"children":1305},{"className":1304},[],[1306],{"type":24,"value":1307},"vim",{"type":24,"value":1309}," or ",{"type":19,"tag":44,"props":1311,"children":1313},{"className":1312},[],[1314],{"type":24,"value":1315},"nano",{"type":24,"value":1317},": text editor",{"type":19,"tag":64,"props":1319,"children":1320},{},[1321,1327],{"type":19,"tag":44,"props":1322,"children":1324},{"className":1323},[],[1325],{"type":24,"value":1326},"fish",{"type":24,"value":1328},": a friendly interactive shell (optional)",{"type":19,"tag":301,"props":1330,"children":1331},{},[],{"type":19,"tag":32,"props":1333,"children":1335},{"id":1334},"faq",[1336],{"type":24,"value":1337},"FAQ",{"type":19,"tag":139,"props":1339,"children":1340},{},[1341,1357],{"type":19,"tag":143,"props":1342,"children":1343},{},[1344],{"type":19,"tag":147,"props":1345,"children":1346},{},[1347,1352],{"type":19,"tag":151,"props":1348,"children":1349},{},[1350],{"type":24,"value":1351},"Problem",{"type":19,"tag":151,"props":1353,"children":1354},{},[1355],{"type":24,"value":1356},"Solution",{"type":19,"tag":162,"props":1358,"children":1359},{},[1360,1376,1392,1429,1469],{"type":19,"tag":147,"props":1361,"children":1362},{},[1363,1371],{"type":19,"tag":169,"props":1364,"children":1365},{},[1366],{"type":19,"tag":68,"props":1367,"children":1368},{},[1369],{"type":24,"value":1370},"Still boots into the installer after reboot",{"type":19,"tag":169,"props":1372,"children":1373},{},[1374],{"type":24,"value":1375},"Remove the ISO image from the VM",{"type":19,"tag":147,"props":1377,"children":1378},{},[1379,1387],{"type":19,"tag":169,"props":1380,"children":1381},{},[1382],{"type":19,"tag":68,"props":1383,"children":1384},{},[1385],{"type":24,"value":1386},"Doesn't boot into the system after reboot",{"type":19,"tag":169,"props":1388,"children":1389},{},[1390],{"type":24,"value":1391},"Move the disk to the first position in the boot order",{"type":19,"tag":147,"props":1393,"children":1394},{},[1395,1403],{"type":19,"tag":169,"props":1396,"children":1397},{},[1398],{"type":19,"tag":68,"props":1399,"children":1400},{},[1401],{"type":24,"value":1402},"Static IP not taking effect",{"type":19,"tag":169,"props":1404,"children":1405},{},[1406,1408,1414,1416,1422,1424],{"type":24,"value":1407},"Check for conflicting ",{"type":19,"tag":44,"props":1409,"children":1411},{"className":1410},[],[1412],{"type":24,"value":1413},".network",{"type":24,"value":1415}," files (e.g. files prefixed with ",{"type":19,"tag":44,"props":1417,"children":1419},{"className":1418},[],[1420],{"type":24,"value":1421},"10-",{"type":24,"value":1423}," have higher priority); remove the conflicting file and restart ",{"type":19,"tag":44,"props":1425,"children":1427},{"className":1426},[],[1428],{"type":24,"value":635},{"type":19,"tag":147,"props":1430,"children":1431},{},[1432,1451],{"type":19,"tag":169,"props":1433,"children":1434},{},[1435],{"type":19,"tag":68,"props":1436,"children":1437},{},[1438,1443,1445],{"type":19,"tag":44,"props":1439,"children":1441},{"className":1440},[],[1442],{"type":24,"value":1296},{"type":24,"value":1444}," errors with ",{"type":19,"tag":44,"props":1446,"children":1448},{"className":1447},[],[1449],{"type":24,"value":1450},"cannot run less",{"type":19,"tag":169,"props":1452,"children":1453},{},[1454,1456,1461,1463],{"type":24,"value":1455},"Install ",{"type":19,"tag":44,"props":1457,"children":1459},{"className":1458},[],[1460],{"type":24,"value":1288},{"type":24,"value":1462},": ",{"type":19,"tag":44,"props":1464,"children":1466},{"className":1465},[],[1467],{"type":24,"value":1468},"sudo pacman -S less",{"type":19,"tag":147,"props":1470,"children":1471},{},[1472,1488],{"type":19,"tag":169,"props":1473,"children":1474},{},[1475],{"type":19,"tag":68,"props":1476,"children":1477},{},[1478,1480,1486],{"type":24,"value":1479},"No network but ",{"type":19,"tag":44,"props":1481,"children":1483},{"className":1482},[],[1484],{"type":24,"value":1485},"ip a",{"type":24,"value":1487}," shows an IP",{"type":19,"tag":169,"props":1489,"children":1490},{},[1491,1493,1499],{"type":24,"value":1492},"Check the DNS configuration and make sure ",{"type":19,"tag":44,"props":1494,"children":1496},{"className":1495},[],[1497],{"type":24,"value":1498},"systemd-resolved",{"type":24,"value":1500}," is enabled",{"type":19,"tag":1502,"props":1503,"children":1504},"style",{},[1505],{"type":24,"value":1506},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":7,"searchDepth":349,"depth":349,"links":1508},[1509,1512,1513,1514,1515,1523,1524,1525],{"id":34,"depth":349,"text":37,"children":1510},[1511],{"id":55,"depth":470,"text":58},{"id":306,"depth":349,"text":309},{"id":435,"depth":349,"text":438},{"id":525,"depth":349,"text":528},{"id":621,"depth":349,"text":624,"children":1516},[1517,1518,1519,1520,1521,1522],{"id":648,"depth":470,"text":651},{"id":697,"depth":470,"text":700},{"id":765,"depth":470,"text":768},{"id":943,"depth":470,"text":946},{"id":1025,"depth":470,"text":1028},{"id":1060,"depth":470,"text":1063},{"id":1136,"depth":349,"text":1139},{"id":1216,"depth":349,"text":1219},{"id":1334,"depth":349,"text":1337},"markdown","content:blog:971.hyperv-install-arch.md","content","blog/971.hyperv-install-arch.md","blog/971.hyperv-install-arch","md",1783843573820]