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

"Hell seems designed to punish disobedience and perceived immorality. Would you agree that acting in a certain manner simply because you fear punishment is cowardly and an invalid motivator?"

The coward is the individual who, out of fear, refuses to do what is right. A coward is NOT someone who, out of fear, CHOOSES to do what is right. That man is not being cowardly -- rather, he is being prudent and sensible. Fear is an excellent and perfectly valid motivator toward good works. God uses it frequently and He instructs us, at times, to do likewise. The Book of Proverbs is filled with examples of the wisdom of a proper fear of God...
Continue reading...

"What is your standard of truth? How do you determine what is true?"

1. God Himself is the standard of truth. (John 14:6; Exodus 34:6; 2 Samuel 7:28; Psalm 25:10; Isaiah 65:16; Ephesians 4:21; Titus 1:2; 1 John 5:6) 2. Because of this, when God reveals things to us, we know that what He reveals is true. The Bible stands as an authoritative communication to us from God Himself, and we can often discern truth or falsehood simply by comparing a particular claim with Biblical revelation.
Continue reading...

"Would you explain to me how we know that Matthew 21v22 (where Jesus promises that we will receive anything we ask for in prayer) cannot be taken literally?"

Matthew 21, verse 22 can and should be taken literally. Let's look at the passage in context: And Jesus answered and said to them, "Truly I say to you, if you have faith and do not doubt, you will not only do what was done to the fig tree, but even if you say to this mountain, 'Be taken up and cast into the sea,' it will happen. And all things you ask in prayer, believing, you will receive.
Continue reading...

Atheism is false: a simple proof

Atheism includes any philosophy which claims that no God or gods exist, including any rational or reasoning creator of the universe.
Continue reading...

"If, as you claim, morality is obeying god, how do you know that obeying god is good? Isn't that totally circular?"

If morality is obeying god, then obeying god is morality. If we grant the former, then the latter follows by tautological necessity. Is it circular? Insofar as tautologies are circular, sure. Here is another circular tautology: If 2 + 2 = 4, then 4 = 2 + 2. Totally circular. Malachi 3:18; Romans 4:15, 5:13; 1 John 3:4.
Continue reading...

"Do you truly believe, as your god commands, that homosexuals should be stoned to death (Lev 20:13)?"

Those who practice homosexual behavior definitely deserve to be executed (Leviticus 20:13; Romans 1:22-27). And so do all the rest of us (Exodus 22:20; Psalm 14:3; Romans 1:28-2:8, 3:23; Galatians 5:19-21). The amazing thing is that our perfect God who demands perfect justice for all of our crimes has provided a willing and sinless substitute for us (Romans 3:25; Hebrews 2:17; 1 John 4:10). That would include those who have practiced homosexual behavior (1 Corinthians 6:9-11).
Continue reading...

"Why does the creator of the entire universe get the value of pi wrong (2 Chron 4: 2)?"

God didn't get Pi wrong. Rather, He rounded to the nearest cubit. "Also he made the cast metal sea, ten cubits from brim to brim, circular in form, and its height was five cubits and its circumference thirty cubits." -2 Chronicles 4:2 If we were to write down the whole value of Pi, or in this case, Pi times 10, we would never finish writing. Therefore, whenever anyone, Creator of the universe or not, writes down the value of Pi for us to read, it is always rounded.
Continue reading...

"When did your religion or worldview first begin?"

This question requires a two-pronged answer. When God created man, at the beginning of creation, man recognized God and worshipped Him in the way God ordained. In this sense, the worship of the Christian God and reliance on His grace (which is the essence of Christianity) has been around since the time of the very first man, Adam.
Continue reading...

"In Genesis 9:11-13 It says God has a covenant that he will never submerge the world by flood again and his token of the covenant is the rainbow. But it is scientifically impossible for rainbows to have not existed before this. Please explain?"

To begin with, Genesis 9 does not claim that there were no rainbows before the flood of Noah. It simply says that from the time of Noah onward, the rainbow will be a sign of God's promise. However, it is certainly not impossible for there to have been no rainbows prior to the flood. The Bible states that prior to the creation of Man, the earth was watered by a fine mist that came up from it, and there was no rain yet.
Continue reading...

" and disagree on whether baptism is needed for salvation. Both are Christian and both quote the Bible in support. Who is right and why?"

Water baptism is not a prerequisite for salvation. The apostle Paul, writing in the Book of Romans, chapter 4, focusing in on verses 9-10, provides an argument that the process of physical circumcision, the cutting off of the male foreskin, a practice commanded under the law of Moses, is not necessary to be made acceptable to God. While circumcision and baptism are not to be equated, the argument Paul makes is applicable to both. His argument can be presented as follows: P1.
Continue reading...

"Why did your omniscient and omnipotent god think it was a good idea to use a BOOK to relay his vitally important message to mankind?"

Interestingly enough, the book of Romans informs us that all we need to know about God has been revealed to us individually as part of our created essence, or nature, or being. Romans 1:18-20 For the wrath of God is revealed from heaven against all ungodliness and unrighteousness of men who suppress the truth in unrighteousness, because that which is known about God is evident within them; for God made it evident to them.
Continue reading...

"Are you absolutely sure that the Bible is not a work of Satan, the Father of Lies, appearing under the guise of an angel of light to deceive you? (2 Cor 11:14)"

This is a great example of a nonsensical question. 2 Corinthians 11:14 claims that "Satan disguises himself as an angel of light". John 8:44 states that Satan "is a liar and the father of lies". The question presupposes that 2 Corinthians 11:14 and John 8:4 are in fact true. It then goes on to suggest that if in fact these verses are true, mightn't they also be false? The answer is quite obviously, no.
Continue reading...

"Why does God allow charlatans to use His name to extract money, sex, attention and even their very lives from devout believers, who truly, honestly believe that they are listening to the word of God?"

There are several assumptions made in this question. The first assumption made, is that God actually does this. I'm not convinced that God does do this, because I'm not convinced that these things happen as described. I haven't seen any evidence for it. Granted, this website does not allow for very lengthy questions that could include evidence, but regardless, my point is that I see absolutely no reason to accept the question as asked.
Continue reading...

"Was Jesus crucified at the third hour? Yes: Mark 15:25 No: John 19:14-15. Which would you pick, and why?"

Here are the relevant texts (from the NASB): John 19:14 Now it was the day of preparation for the Passover; it was about the sixth hour. And he said to the Jews, "Behold, your King!" Mark 15:25 It was the third hour when they crucified Him. Sometimes, hand-written copies of the same document will not entirely agree with each other. Copies of the Bible are not immune from this. This verse in John is a case in point.
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...

All articles