the Website of Timothy McCabe Follower of Christ; Student of Epistemology, Apologetics, and Theology
Home Good News Proofs Questions Presentations Software More

Installing Arch Linux on Mac in Parallels

In January of 2020, I had need to set up an Arch Linux GUI environment on my MacBook Pro in Parallels. I knew virtually nothing about Linux, or operating systems in general for that matter. Every computer I had ever used came with an OS. That was pretty much all I knew about them. It was so ridiculously difficult that I figured other people out there may be struggling with the same problem, and they may benefit from my own experience.

I just followed your 177-step Arch install guide... and I give you praise because it's the only one that worked for me.. but now I think I need to combine tylenol, ibuprofen and a 30 minute break. Mike

Below you'll find a comprehensive, step-by-step guide for exactly how I set up Arch Linux on my MacBook Pro in Parallels. There won't be much in the way of explanation of what any of it means. Just the steps laid out. This is mostly because I don't really know what some of it means. But at the foot of this page you can find some good resources that will tell you what a lot of it means if that interests you. I myself just wanted it up and running, with a GUI, so if you're in those same shoes, just follow this step-by-step, word-for-word, and hopefully it will work for you as well.


  1. Download the latest Arch ISO. This guide is based on the following image:
  2. Open Parallels Control Center.
  3. Select File > New.
  4. Choose “Install Windows or another OS from a DVD or image file.”
  5. Continue.
  6. Choose Manually.
  7. Drag the ISO you just downloaded onto the “Drag the image file here” spot. It will say “Unable to detect operating system.”
  8. Continue.
  9. Select “More Linux” > “Other Linux.”
  10. Ok.
  11. Choose a name for your new virtual device, like “Arch.”
  12. Check the “Customize settings before installation” box.
  13. Create.
  14. In the configuration box, select “Options.”
  15. Select “Sharing” in the top menu.
  16. Change “Home folder only” to “All disks.”
  17. Check the “Shared Profile” box.
  18. Select “Hardware” in the top menu.
  19. Move the Memory slider to 4GB.
  20. Close the Configuration window.
  21. Continue.
  22. When the VM boot window displays, instead of selecting any of the options, hit the TAB button on your keyboard.
  23. Hit the spacebar once and then type: “cow_spacesize=10G”
  24. Enter.
  25. The command prompt should display. Type in the following (without the hashtag at the front):
    # nano /etc/pacman.d/mirrorlist
  26. Follow the nano editor’s usage directions (which should display at the bottom of the screen) in order to move about five local mirrors (mirrors that are local to your location) to the top of the list. This way, when stuff downloads to your machine, it won't download all the way from the other side of the universe, which would take a really long time. Arrows move your cursor, CTRL-k cuts a line, CTRL-u pastes it. When you’re done, CTRL-x attempts to close the nano editor. Hit SHIFT-Y to say that you would like to save, and ENTER finishes.
  27. Now we're going to partition the hard drive:
    # gdisk /dev/sda
    # p
    # n
    # +1G
    # n
    # +5G
    # 8200
    # n
    # +20G
    # n
    # w
    # Y
    # mkfs -t ext4 /dev/sda1
    # mkfs -t ext4 /dev/sda3
    # mkfs -t ext4 /dev/sda4
    # mkswap /dev/sda2
    # swapon /dev/sda2
    # mount /dev/sda3 /mnt
    # cd /mnt
    # mkdir boot home
    # mount /dev/sda1 boot
    # mount /dev/sda4 home
    # nano /etc/resolv.conf
  28. Add these nameservers to the top of the nameserver list:
  29. CTRL-x. SHIFT-Y. Enter. Now look up a thing that we're going to need to reference:
    # ip link
  30. Using the second set of data displayed, find the correct service domain and put it into the following line.
    # sudo systemctl enable [email protected]enp0s5.service
    # ping
  31. You should get a response from Google. If you don’t, you can try these three commands:
    # sudo systemctl start dhcpcd
    # sudo systemctl enable dhcpcd
    # sudo dhcpcd
  32. Once you are able to get a response from Google when pinging, continue.
    # pacstrap -i /mnt base base-devel
    # genfstab -p /mnt >> /mnt/etc/fstab
    # more /mnt/etc/fstab
    # pacstrap -i /mnt syslinux gptfdisk linux linux-headers nano networkmanager linux-firmware dhcpcd
    # arch-chroot /mnt
    # nano /etc/locale.conf
  33. Type the following into the nano editor.
  34. CTRL-x. SHIFT-Y. Enter. Now make sure it knows what language you speak.
    # nano /etc/locale.gen
  35. Uncomment the following lines by removing the hashtags in front of them (because of course you live in the US and speak English):
    #en_US.UTF-8 UTF-8
    #en_US ISO-8859-1
  36. CTRL-x. SHIFT-Y. Enter. Now set your time clock. If you don't live on the US east coast, stop typing after "zoneinfo/" and hit TAB a few times and see what happens:
    # locale-gen
    # ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
    # nano /etc/hostname
  37. Type in the one-word, lowercase name of your VM. It can be absolutely anything you want, but you should probably make it something meaningful. Maybe “archlinux”. I’m going to assume you used “archlinux” and show you how to set up your hosts file if you did. If you didn’t, set up the hosts file with the name you actually used.
  38. CTRL-x. SHIFT-Y. Enter. Now change the hosts file.
    # nano /etc/hosts
  39. Type in the following with your VM name to the nano editor. localhost archlinux.localdomain archlinux
  40. CTRL-x. SHIFT-Y. Enter. Now update some things and change some stuff:
    # syslinux-install_update -i -a -m
    # cd /boot/syslinux
    # cp /usr/lib/syslinux/bios/menu.c32 .
    # cp /usr/lib/syslinux/bios/vesamenu.c32 .
    # cp /usr/lib/syslinux/bios/chain.c32 .
    # cp /usr/lib/syslinux/bios/hdt.c32 .
    # cp /usr/lib/syslinux/bios/reboot.c32 .
    # cp /usr/lib/syslinux/bios/poweroff.c32 .
    # cp /usr/lib/syslinux/bios/libutil.c32 .
    # cp /usr/lib/syslinux/bios/libcom32.c32 .
    # mkinitcpio -p linux
    # passwd
  41. Type in the new password for the root account (not your regular user account) for the new Arch Linux VM. Then we'll do more cool stuff:
    # exit
    # cd /
    # umount /mnt/boot
    # umount /mnt/home
    # swapoff /dev/sda2
    # umount /mnt
    # sgdisk /dev/sda --attributes=1:set:2
    # reboot
  42. Let the system reboot. When it’s complete, it will ask you to log in. Log in as "root."
    # root
  43. Type in the root password that you created a couple of steps ago. Now update your mirrorlist again:
    # nano /etc/pacman.d/mirrorlist
  44. Move the local mirrors to the top of the list again.
  45. CTRL-x. SHIFT-Y. Enter. Then edit your nameservers again:
    # nano /etc/resolv.conf
  46. Add these nameservers to the top of the nameserver list:
  47. CTRL-x. SHIFT-Y. Enter. Then look up that thing again:
    # ip link
  48. Using the second set of data displayed from that command above, find the correct service domain and put it into the following line.
    # sudo systemctl enable [email protected]enp0s5.service
    # ping
    # dhcpcd
    # ping
  49. Hopefully, you’re receiving data from Google. Next, create your own user account. We'll pretend your name is Josh because... why wouldn't it be?
    # useradd --home-dir /home/josh --create-home josh
    # passwd josh
    # nano /etc/sudoers
  50. Once the nano editor opens, find the line that reads:
    root ALL=(ALL) ALL
  51. Under that line, add the following line just like it:
    josh ALL=(ALL) ALL
  52. CTRL-x. SHIFT-Y. Enter. Now do some more stuff:
    # exit
    # ip link show
    # sudo systemctl enable [email protected]enp0s5.service
    # sudo nano /etc/resolv.conf.head
  53. Add these nameservers to the empty text file:
  54. CTRL-x. SHIFT-Y. Enter. Now install a bunch more stuff and then reboot:
    # sudo pacman -S xorg-server xorg-xinit xorg-apps
    # sudo pacman -S xorg-iceauth xorg-sessreg xorg-xcmsdb xorg-xbacklight xorg-xgamma xorg-xhost xorg-xinput xorg-xmodmap xorg-xrandr xorg-xrdb xorg-xrefresh xorg-xset xorg-xsetroot mesa-libgl xterm
    # sudo pacman -S xf86-video-vesa
    # sudo pacman -S xfce4 xfce4-goodies sddm
    # sudo reboot
    # ping
  55. Hopefully, that last ping -- the one after reboot -- just worked right off-the-bat and you're getting data from Install some more stuff and then test GUI functionality:
    # sudo pacman -S xorg-twm xorg-xclock
    # startx
  56. Here you can see a very simplistic GUI. In the first terminal, type the following:
    # exit
  57. You should be out of the GUI again now. Install some more stuff and restart:
    # sudo pacman -S ttf-liberation noto-fonts ttf-roboto ttf-anonymous-pro
    # sudo pacman -S ttf-hack ttf-inconsolata noto-fonts-emoji powerline-fonts
    # sudo pacman -S adobe-source-code-pro-fonts ttf-fira-mono ttf-fira-code
    # sudo pacman -S ttf-ubuntu-font-family ttf-dejavu ttf-freefont
    # sudo pacman -S ttf-droid terminus-font ttf-font-awesome
    # sudo pacman -S gnome gnome-extra
    # sudo systemctl enable gdm
    # sudo reboot
  58. The new GUI should automatically boot up. This should happen from now on. Open terminal again manually in your GUI. Install some important apps:
    # sudo pacman -S chromium
    # sudo pacman -S firefox
    # sudo pacman -S opera
    # sudo pacman -S flashplugin
    # gsettings set org.gnome.desktop.wm.preferences button-layout ":minimize,maximize,close"
  59. Still in the terminal, clean up some font cache problems:
    # sudo rm /var/cache/fontconfig/*
    # rm ~/.cache/fontconfig/*
  60. Now install Parallels Tools so you can copy between your operating systems and so you can share directories and stuff. Parallels Tools just worked right for me first try, so I will just link to another source for instructions for installing Parallels Tools.
  61. In the future, to run a full system update, do this in the terminal:
    # pacman -Syu

World Religions and Cults (volume 2)

In Printed Form

Along with numerous other authors including Don Landis, Bodie Hodge and Roger Patterson, Timothy McCabe contributes analyses of various world religions and cults in this volume from Master Books.

Other Writings

"Is Buddhism compatible with Christianity?"

Buddhism is incompatible with Christianity. Buddhism rejects the concept of a permanent self, or an immortal soul. In Christianity, the concept of "self" and the immortal soul are pervasively important. In Christianity, it is "self" that sins (Ezekiel 18:4), is resurrected (John 5:29, Romans 8:11), and is eternally judged (Matthew 7:23, Revelation 14:11). It is "self" that is offered eternal forgiveness through Jesus Christ (John 3:16).
Continue reading...

"Where is existence going (i.e. eschatology), both immediately and ultimately?"

The Bible states that no one is perfect but God alone (Luke 18:19). As a result, all of us have earned death and condemnation (Romans 6:23). However, in an amazing substitution, God Himself lived the perfect human life in our place, and paid our fine on the cross (2 Corinthians 5:21, Romans 5). Those of us who put our trust in the work He did in our place will be forgiven (Romans 4:5, John 3:18).
Continue reading...

"Did Jesus preach non-violence? He says in Mat 5:39 Whoever smites thee on thy right cheek offer him the other. But in Luke 22:36 he says He that hath no sword, let him sell his garment and buy one. How then can Heb 1:8-12 says he is unchanging?"

Continue reading...

"If God is "just is", then why can't the universe "just be"?"

God has made it clear that this is not the case (Genesis 1:1, 2:4; Isaiah 42:5, 45:8, 45:18; Ephesians 3:9; Colossians 1:16; Revelation 4:11, 10:6), and since He is perfectly knowledgeable (Job 37:16; Psalm 147:5; Isaiah 46:9-10; John 21:17; 1 John 3:20), perfectly honest (Exodus 34:6; 2 Samuel 7:28; Psalm 31:5, 57:10; John 1:14, 1:17, 14:6; Ephesians 4:21; Hebrews 6:18), and perfectly sovereign (1 Chronicles 29:14; Job 41:11; Psalm 119:91, 135:6; Ecclesiastes 11:5; Mark 10:27; John 1:3, 5:44;...
Continue reading...

"Why does God change His mind so much? (Gen 6:7; Exd 32:14; Jdg 2:18; 1 Sam 15:35; Jhn 3:10 etc)"

Below are the verses cited in the question. John 3:10 doesn't seem to fit the question, so I assume it was a typo. Nonetheless, the other verses should more than suffice to make the point the questioner intended. Genesis 6:7 The LORD said, "I will blot out man whom I have created from the face of the land, from man to animals to creeping things and to birds of the sky; for I am sorry that I have made them.
Continue reading...

"Brian Dunning from claims that there is no record of a mass Exodus of Jewish slaves out of Egypt. Is this true?"

No. This is not even remotely the case. This would be true only if we were to throw out all record that we have of the exodus of Jews from Egypt, as Brian Dunning seems to do. Let's take a look at some of his outrageous claims. The statement in question comes from an essay on entitled "Did Jewish Slaves Build the Pyramids?" PRESUPPOSITIONS Mr.
Continue reading...

"If God has a "divine plan" for everyone, then does that mean he controls humans and animals to meet his plan?"

Definitely. The Biblical God is in complete control of everything. In the book of Ephesians, we see that God "works all things after the counsel of His will" (Ephesians 1:11; Romans 8:28; 1 Corinthians 12:6; Psalm 135:6).
Continue reading...

"Can god make a rock so big he can't lift it?"

No. The God of the Bible is incapable of numerous things. Essentially, all of these things are summed up in 2 Timothy 2:13 which states that God "cannot deny Himself". The God of scripture is a logical God, which is the only reason why the laws of logic, such as the law of non-contradiction, can be trusted to be universal and invariant.
Continue reading...

"Is rape acceptable or unacceptable in your worldview and why? What do your scriptures (if any) say?"

The God of the Bible condemns rape, and therefore, so do Christians. Beginning in the book of Genesis, we read about God's condemnation of rape: Genesis 34:2-7 (NASB) When Shechem the son of Hamor the Hivite, the prince of the land, saw her, he took her and lay with her by force. He was deeply attracted to Dinah the daughter of Jacob, and he loved the girl and spoke tenderly to her. So Shechem spoke to his father Hamor, saying, "Get me this young girl for a wife.
Continue reading...

"Mr. McCabe, you said "The three persons of the trinity have three distinct roles" , and "There is only One God". Is this a contradiction?"

It is often argued that Trinitarian doctrine is contradictory. How can three be one and one be three, all at the same time? It sounds like bad math. First, we need to recognize what is meant by the label "contradiction". A logical contradiction is something that makes a claim and then also claims its exact negation. A logical contradiction cannot possibly be true. It is impossible for something to both be and not be at the same time and in the same way.
Continue reading...

"How can man be blamed for his inbred sin when he did not ask to be born or even exist?"

Think about your favorite fictional book, or your favorite movie. If you're anything like me, your favorite story probably has a bad guy in it. The bad guy does bad things. And if the story is any good, then at the end of it, the villain either gets thrown in prison, or he's killed by the good guys, or else he turns away from his bad behavior and becomes good.
Continue reading...

"How did polar bears get from the middle east to the polar ice caps, and penguins to Antarctica, and all the strange Australian beasts to Australia, etc., without leaving populations behind?"

The Bible does not tell us the specific answer to this question, and neither does pure logic, therefore there is no official "Christian" answer. This means Christians are free to speculate about questions like this, keeping in mind that such speculations should not overshadow what is really important in our walk with Christ -- namely, what is clearly revealed in scripture.
Continue reading...

"Does the "problem of evil" show that an all-good, all-powerful, all-knowing god cannot exist?"

The "problem of evil" generally goes something like this. 1. If God had all-power over our universe, he would have been able to prevent the wickedness of Adolf Hitler. 2. If God had all-knowledge of our universe, he would have known how to prevent the wickedness of Adolf Hitler. 3. If God were all-good, he would have wanted to prevent the wickedness of Adolf Hitler. 4. Adolf Hitler was wicked in our universe. 5.
Continue reading...

Empiricism is false: a simple proof

Empiricism describes any philosophy which claims that all knowledge originates in experience, denying the validity of both deductive reasoning and divine revelation.
Continue reading...

"Why did God only send Jesus to Palestine at one particular point in history? If God wants everybody to be saved, wouldn’t the gospel have spread a lot faster if he had sent Jesus to every place on earth in all time periods?"

Are you sure that God wants everyone to be saved? There are many Christian philosophers who do indeed claim that this is the case, but it seems to me that this concept contradicts scripture. John 12:39-40 (re Isaiah 6:8-10) For this reason they could not believe, for Isaiah said again, "HE HAS BLINDED THEIR EYES AND HE HARDENED THEIR HEART, SO THAT THEY WOULD NOT SEE WITH THEIR EYES AND PERCEIVE WITH THEIR HEART, AND BE CONVERTED AND I HEAL THEM.
Continue reading...

All articles