14

I recently downloaded archlinux, but as embarrassing as it is I simply don't think I am installing it correctly. When I do my version of the install and hook it up to the Raspberry Pi, the screen remains black.

I have never installed a .tar.gz to a SD, I have found this: http://archlinuxarm.org/platforms/armv6/raspberry-pi

But I'm not on linux. Any Help/link to instructions would be Great!

4
  • 4
    The instructions require you to create an ext4 partition, which is not possible on OS X (at least without additional software).
    – Milliways
    Commented Oct 26, 2014 at 11:33
  • Thank you for clearing that up, and recommended additional software?
    – user20088
    Commented Oct 26, 2014 at 11:40
  • Is this possible with a windows pc?
    – user20088
    Commented Oct 26, 2014 at 13:36
  • @DawidvanderHoven I would run a linux live distribution, such as SysrescueCD, on VirtualBox (free) and create ext4 partition. Commented Oct 27, 2014 at 15:32

4 Answers 4

11

I just ran into this issue myself. I found two ways to create the SD card using the .tar.gz images provided by ArchLinuxARM, provided you have a USB SD card reader.

Method 1: Raspberry Pi + USB card reader + 1 additional SD card

This method requires an additional SD card and a USB card reader. It uses Linux on your Raspberry Pi to build an new SD card that can boot into ArchLinux.

  1. Connect an external USB card reader to Raspberry Pi.
  2. Plug the SD card that you want to install ArchLinux onto into the external USB card reader.
  3. Boot your Raspberry Pi using Raspbian, as Raspbian has an image you can write to an SD card from OSX or Windows.
  4. Install bsdtar using: sudo apt-get install bsdtar

  5. Follow the ArchLinuxARM instructions for Raspberry Pi. Make sure you do everything as the root user. To become root on Raspbian, run sudo -s.

Method 2: VMWare + USB card reader

This method does not require an additional USB card, but it does require you to have installed Linux on a VMWare.

  1. Start Linux on VMWare
  2. Connect an external USB card reader to the computer running VMWare. VMWare will ask you if you want to connect it to your Linux instance, which is what you want.
  3. Follow the ArchLinuxARM instructions for Raspberry Pi.

I was able to build an SD card running ArchLinux on my Mac running VMWare Fusion. I imagine this also works with Virtual Box though I did not try. I imagine it works on Windows but, again, I did not try.

You should also know that VMWare is not able to access the Mac's built in SD card reader, hence the need for a USB card reader. Perhaps on Windows VMWare can access the built-in card reader, making the external USB card reader unnecessary.

Notes

The above two methods did work, but it took several tries for me to get it to work. Here are some of the issues I ran into:

  • I had an intermittent failure while using bsdtar to extract image. Using journalctl -kf I was able to see a reset occurring in the USB system. I was able to git rid of this reset by connecting my unpowered USB card reader to a USB hub, rather that connecting it directly to my Raspberry Pi (method 1) or Mac (method 2).
  • Using method 2, I kept getting an error about pathnames not being able to be converted from UTF-8 to the current locale. I then realized my current locale was not set to UTF-8, so I fixed this issue by running localectl set-locale LANG=en_US.UTF-8 and then logging out and back into Linux.

When booting the Raspberry Pi into Arch, I highly recommend using a USB serial cable, like the USB to TTL Serial Cable from Adafruit or any FTDI based USB to serial cable. This will allow you to see the entire boot process of the Raspberry Pi, which is a key debugging tool when trying to use a new OS on Raspberry Pi.

1
  • Method 1 worked for me. @Dawid_van_der_hoven - please remember to mark the question as solved if it worked for you.
    – Jan
    Commented Jun 28, 2015 at 14:21
2

Step by step Procedure

Following the Arch Linux Raspberry Pi 3 Installation Guide, it is possible to abstract the steps necessary to do this on macOS without any virtualization. It is a matter of understanding what is going on and knowing macOS tools (which are just enough different than GNU tools be be a pain).

A quick look at which filesystems are necessary: mkfs.vfat is just mkfs.fat, which can be FAT12, FAT16, or FAT32.

diskutil listFilesystems
-------------------------------------------------------------------------------
PERSONALITY                     USER VISIBLE NAME
-------------------------------------------------------------------------------
Case-sensitive APFS             APFS (Case-sensitive)
  (or) APFSX
APFS                            APFS
  (or) APFSI
ExFAT                           ExFAT
Free Space                      Freier Speicherplatz
  (or) FREE
MS-DOS                          MS-DOS (FAT)
MS-DOS FAT12                    MS-DOS (FAT12)
MS-DOS FAT16                    MS-DOS (FAT16)
MS-DOS FAT32                    MS-DOS (FAT32)
  (or) FAT32
HFS+                            Mac OS Extended
Case-sensitive HFS+             Mac OS Extended (Case-sensitive)
  (or) HFSX
Case-sensitive Journaled HFS+   Mac OS Extended (Case-sensitive, Journaled)
  (or) JHFSX
Journaled HFS+                  Mac OS Extended (Journaled)
  (or) JHFS+
ZFS                             ZFS Dataset

Indicates that MS-DOS FAT 32 is supported. But EXT 4 is not.

Install mkfs.ext4 brew install e2fsprogs. This will not add support to the Disk Utility, but it allow you to make an EXT4 partition. You will also need to mount it to extract the Arch Linux tar to it, so also get yourself brew cask install osxfuse && brew install ext4fuse.

Acquire the necessary Arch Linux ARM tar.gz here https://archlinuxarm.org/about/downloads

wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-3-latest.tar.gz
wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-3-latest.tar.gz.md5

Find SD Card Device Node

diskutil list
... 
(internal)
...
/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                                                   *64.1 GB    disk2

Setup BOOT partition.

Apply FAT 32 Filesystem to my sd card like in step 3 of the guide. The diskutil help does not make it obvious how to run something like mkfs.vfat. diskutil partitionDisk -h is somewhat useful. Unlike on Linux, you do not need to unmount your SD card, because diskutil partitionDisk will do it automatically.

                       /dev/node  PARTSCHEME FS LABEL SIZE (R=remainder, 100%)
diskutil partitionDisk /dev/disk2 MBR FAT32 BOOT 100M FAT32 ROOT R

(replace disk2 with the device node of your sd card)

macOS will automount the new partition at /Volumes/BOOT, so skip the mount step.

Setup ROOT partition.

Caveat: I am using EXT 3 instead of EXT 4, the non-journaled variant, because the FUSE implementation does not support writing to journaled EXT yet, and I could not find the no_journal option mentioned here: https://github.com/gerard/ext4fuse/wiki/Write-Support. As soon as it gets implemented, an EXT 4 write on MacOS will be possible.

$(brew --prefix e2fsprogs)/sbin/mkfs.ext3 /dev/disk2s2
$(brew --prefix ext4fuse)/bin/ext4fuse /dev/disk2s2 /Volumes/ROOT -o allow_other

Extract ArchLinuxARM-rpi-3-latest.tar.gzdirectly to the mount point. MacOS is closely related to BSD, so tar on macOS is bsdtar.

tar -xpvf ArchLinuxARM-rpi-3-latest.tar.gz -C /Volumes/ROOT

Now we just expanded everything to root, but the boot stuff needs to be on the BOOT partition. Move it over. You could use mv or be safer with rsync

mv /Volumes/ROOT/boot/* /Volumes/BOOT/

Flush out the kernel buffers to disk.

sync

Unmount and you are good to go. (which probably flushes out the buffers anyway)

# unmountDisk unmounts both ROOT and BOOT
diskutil unmountDisk /Volumes/ROOT
5
  • I ran into "Could not open /dev/disk2s2: Permission denied" However, diskutil unmountDisk force /dev/disk2 worked. Also I had to sudo sh to do this.
    – Olsonist
    Commented Oct 8, 2020 at 2:34
  • ext4fuse would not run but finding the ID for Benjamin Fleischer, rebooting in recovery, opening a terminal and running 'spctl kext-consent add 3T5GSNBU6W' got it to run.
    – Olsonist
    Commented Oct 8, 2020 at 3:15
  • mount now says ext4fuse@osxfuse0 on /Volumes/ROOT (osxfuse, synchronous) /dev/disk2s1 on /Volumes/BOOT (msdos, local, nodev, nosuid, noowners) which is nice.
    – Olsonist
    Commented Oct 8, 2020 at 3:33
  • However, at this point bsdtar fails. In fact echo hello >/VOLUMES/ROOT/world fails with sh-3.2# echo hello >/VOLUMES/ROOT/world sh: /VOLUMES/ROOT/world: Is a directory. So close, so far.
    – Olsonist
    Commented Oct 8, 2020 at 4:19
  • When I run the first command under setup root partition, it fails stating that the resource is busy. After a unmount it still says this.
    – Dylan
    Commented Dec 17, 2020 at 18:38
1

I've been in the same situation, wanting to run Arch on my Pi with only the MacBook without Linux.

Requirements: USB Stick + SD Card + Live Linux

If you haven't got a USB SD card reader, you can write a Debian live image (or any favorite LIVE distro) to the USB stick, on macOS, using, for example, balenaEtcher or the dd utility from Terminal, then you can run Linux in RAM of your MacBook/iMac without any data loss (but be careful because if you do not use the Arch Linux installation commands in the correct way something could go wrong). So in this solution, you will not need any external USB card reader. Hope it helps someone.

1

Solution is similar to what's listed on Arch for ARM's website except you have to use the corresponding mac utilities

This solution doesnt work yet without downloading Paragon, sorry.

  1. Run diskutil list and find your SD card - It will be listed as (external, physical) and show your SD card's size.
  2. Start gdisk via sudo gdisk /dev/diskX(Replace X with your SD card location.)
  3. At the gdisk prompt, delete existing partitions: Type o. This will clear out any partitions on the drive. Then type p to list partitions. There should be no partitions left.
  4. Type n, then 1 for the first partition on the drive, press ENTER to accept the default first sector, then type +100M for the last sector.
  5. Enter 0700 for partition type. Output should read 'Changed type of partition to 'Microsoft basic data'
  6. Type n again and 2 for the second partition on the drive, and then press ENTER twice to accept the default first and last sector. This time the partition type code is 8300. Output should read 'Changed type of partition to 'Linux filesystem''
  7. Write the partition table and exit by typing w.
  8. Create a directory to boot from mkdir boot
  9. Unmount disk diskutil unmountDisk diskX (to avoid "Resource busy" error)
  10. Now create a FAT filesystem: sudo newfs_exfat /dev/diskXs1 and mount the new boot partition via sudo mount -t exfat /dev/diskXs1 boot
  11. Install e2fsprogs (unless installed) brew install e2fsprogs and create the ext4 filesystem for the root partition: sudo /usr/local/opt/e2fsprogs/sbin/mkfs.ext2 /dev/diskXs2 and mount it via Paragon extFS for Mac.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.