1

I am trying to install Ubuntu 16.04 onto an external SSD that will be booted from when plugged into my 2013 MacBook Air. I am using 16.04 because I will be using the kinetic version of ROS.

I am following this Medium tutorial.

I am in the section titled Fixing the EFI Partition and I am trying to enter the code:

$ sudo add-apt-repository ppa:detly/mactel-utils

When I enter this into the terminal, It gives me an error that says something like

"~detly" user does not exist.

I have done some of my own research and I believe I am unable to execute this command because I am not connected to the internet. The other issue I am having is that I am unable to connect to the internet.

When I click the network drop down menu, the enable networking option is checked, but I cannot see any options for the WiFi networks. If there is any way to connect to the internet in a different way, please let me know.

Also if there are any better tutorials on how to install Ubuntu and boot from an external SSD, please let me know. I believe that the one I am following is fairly comprehensive.


@eyoung100 https://i.stack.imgur.com/MYmrP.png In this image, it shows what is in my pool/main folder. It does not contain the p/patch or the f/fakeroot path, so I think that might be causing something unfavorable to happen. Sorry it took me so long to get back.

Here are the contents of the make.log file that you requested:


DKMS make.log for bcmwl-6.30.223.271+bdcom for kernel 4.15.0-29-generic (x86_64)
Mon Nov 12 16:18:41 MST 2018
make: Entering directory '/usr/src/linux-headers-4.15.0-29-generic'
Makefile:976: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, 
libelf-devel or elfutils-libelf-devel"
CFG80211 API is prefered for this kernel version
Using CFG80211 API
  CC [M]  /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.o
/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c: In function 
‘osl_os_get_image_block’:
/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:1083:26: warning: 
passing argument 2 of ‘kernel_read’ makes pointer from integer without a cast [-Wint- 
conversion]
  rdlen = kernel_read(fp, fp->f_pos, buf, len);
                      ^
In file included from ./include/linux/huge_mm.h:7:0,
                 from ./include/linux/mm.h:463,
                 from 
/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/include/linuxver.h:65,
                 from 
/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:25:
./include/linux/fs.h:2858:16: note: expected ‘void *’ but argument is of type ‘loff_t 
{aka long long int}’
 extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *);
                ^
/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:1083:37: warning: 
passing argument 3 of ‘kernel_read’ makes integer from pointer without a cast [-Wint- 
conversion]
  rdlen = kernel_read(fp, fp->f_pos, buf, len);
                                     ^
In file included from ./include/linux/huge_mm.h:7:0,
                 from ./include/linux/mm.h:463,
                 from 
/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/include/linuxver.h:65,
                 from 
/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:25:
./include/linux/fs.h:2858:16: note: expected ‘size_t {aka long unsigned int}’ but 
argument is of type ‘char *’
 extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *);
                ^
/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:1083:42: warning: 
passing argument 4 of ‘kernel_read’ makes pointer from integer without a 
cast [-Wint- conversion]
  rdlen = kernel_read(fp, fp->f_pos, buf, len);
                                          ^
In file included from ./include/linux/huge_mm.h:7:0,
                 from ./include/linux/mm.h:463,
                 from 
/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/include/linuxver.h:65,
                 from 
/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/shared/linux_osl.c:25:
./include/linux/fs.h:2858:16: note: expected ‘loff_t * {aka long long int *}’ but 
argument is of type ‘int’
 extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *);
                ^
  CC [M]  /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.o
/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c: In function 
‘wl_init_timer’:
/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:2359:2: error: 
implicit declaration of function ‘init_timer’ [-Werror=implicit-function-declaration]
  init_timer(&t->timer);
  ^
/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:2360:10: error: 
‘struct timer_list’ has no member named ‘data’
  t->timer.data = (ulong) t;
          ^
/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:2361:20: error: 
assignment from incompatible pointer type [-Werror=incompatible-pointer-types]
  t->timer.function = wl_timer;
                    ^
cc1: some warnings being treated as errors
scripts/Makefile.build:332: recipe for target 
'/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.o' failed
make[1]: *** [/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.o] 
Error 1
Makefile:1552: recipe for target 
'_module_/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build' failed
make: *** [_module_/var/lib/dkms/bcmwl/6.30.223.271+bdcom/build] Error 2
make: Leaving directory '/usr/src/linux-headers-4.15.0-29-generic'
Thomas Ward
  • 74,764
  • Please provide the output of lspci – eyoung100 Nov 05 '18 at 03:53
  • Sorry I’m a beginner, is lspci a command to put into the terminal? – Garrett_Ruskauff Nov 05 '18 at 21:30
  • Yes. It’s part of the pciutils package, and should already be installed – eyoung100 Nov 05 '18 at 21:39
  • @eyoung100 https://i.stack.imgur.com/xKBc9.jpg here is the output of the lspci command. I was unable to copy and paste the output because I didn't have access to the internet. Hope this helps. What exactly is this output telling me? As far as I can tell, it lists all the hardware that my mac has? – Garrett_Ruskauff Nov 06 '18 at 07:34
  • Read: WifiDocs/Driver/bcm43xx. Of Particular importance is Section 4-2 - STA - No Internet access. That Card, BCM4360 requires a proprietary driver, and a firmware blob. Chances are, one of the open source drivers loaded, when you chose enable but without the firmware the driver doesn't function. As such, I recommend the STA Driver. – eyoung100 Nov 06 '18 at 07:47
  • As for the blog post you're using, they totally skip installing the network. If I remember correctly, it's because newer Mac laptops use Intel based cards, which are properly identified during the install phase. – eyoung100 Nov 06 '18 at 08:07
  • Okay. So again, I’m a beginner and I don’t want to mess this up somehow, but as far as I understand, I’m supposed to download that STA driver. Then after I download it, where do I put it? I’m assuming on the bootable USB stick? But what folder do I put it in? Thank you for all your help. – Garrett_Ruskauff Nov 06 '18 at 13:58
  • Following section 4-2: You will use your external disk where you installed Ubuntu, and also the install cd or usb you used to install. If you give me a few hours. I’ll write something up using the link I suggested after I go vote. – eyoung100 Nov 06 '18 at 19:19
  • That would be awesome of you! Thanks for getting out and voting – Garrett_Ruskauff Nov 06 '18 at 20:33
  • Answer Completed. Sorry, was watching Election Returns – eyoung100 Nov 07 '18 at 06:48

1 Answers1

0

Solution

Note: There will be a lot of links in this post, so that the OP and others are free to see where my information comes from.

We need to integrate the tutorial you've followed with the Wireless Wiki for Broadcom Cards. We need to do this because the WiFi card in your MacBook Air falls under three options:

  • It's either too old to be recognized by the newer ubiquity installer.
  • The BCM360 Card I saw in the image you posted is only supported by the proprietary STA Driver.
  • You chose not to install the restricted pool during the install.

Steps to follow

  1. Read the Disclaimer, Gather the Equipment, and complete the Installation
  2. Complete the Manual Boot.
  3. Stop the Medium tutorial, and verify that the Install you just completed still contains the Install disk you used as an Install Source. This must be done as you have no access to the online repositories.
  4. Begin the commands in Section 4-2 STA-No Internet Access, and run those commands
  5. Complete the Commands in Section 4-2.
  6. Optional: Install and blacklist the other drivers for your card, following the Switching between drivers section. You may find one driver works better than the others, although I recommend the STA driver, because it was built by Broadcom.
  7. Shutdown your machine and Reboot.
  8. Go back to the tutorial you stopped in Step3, and begin again at The Manual Boot. Note that you should repeat all the steps, to verify that the options are still the same from the first time you completed The Manual Boot.
  9. Complete the tutorial.

Update

Makefile:976: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, 
libelf-devel or elfutils-libelf-devel"
  • sudo apt install libelf-dev

This package is old and crusty. It was meant to be compiled on an older GCC version when the old version was new, as your wireless card was new when the now older compiler was new.

  • Install an older GCC: 16.04 was built with GCC 6.x.x, but it is possible to install and activate older versions. We do that like so:

    • sudo apt install gcc-4.8
    • sudo apt install gcc-5

We then temporarily switch compilers after reading and studying very carefully, this AskUbuntu Question on update-alternatives, or if you prefer explanations: How to switch GCC version using update-alternatives.

Recompile this package using 4.8 and post a new make.log file. As for your package pools, I believe you used a minimal/network installer. Check the Ubuntu Mirrorlist, and make sure to download the full desktop iso for amd64. If the version is correct, attempt to recompile the package. If that fails the other option is to go to an older LTS release, most likely 14.04, get internet working, do a dist-upgrade to 16.04, and then repeat again if you want to go to 18.04.

eyoung100
  • 655
  • 3
  • 16
  • https://i.stack.imgur.com/HEG2y.jpg @eyoung100: So I was trying to follow your tutorial, and I got all the way to the section 4-2 commands. I have attached a picture of my output when I run the command
    cd /cdrom/pool/main/d/dkms sudo dpkg -i dkms* any suggestions on what to do now?
    – Garrett_Ruskauff Nov 08 '18 at 01:58
  • Error! Bad Return Status for module build on kernel: 4.15.0,29-ubuntu. cat var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/make.log > /home/garret/make.log.txt. Save the make.log.txt file to a usb, restart, boot into OSX, then post the contents of the make.log into your question. I'll ding you if I see another image :) In short I need the log to see what the build error is before we can proceed. As a hunch, I would bet the headers don't match. – eyoung100 Nov 08 '18 at 05:18
  • Here is the contents of the make.log file: – Garrett_Ruskauff Nov 12 '18 at 23:31
  • Let's see if we can tackle those Errors 1 by one. See Update Section above. – eyoung100 Nov 13 '18 at 23:22
  • UPDATE: I reached out to classmates at my university and one kindly let me borrow his external wifi card so I was able to connect to the internet without having to go through all these steps. I was able to continue with the MEDIUM tutorial up until i get stuck at: '$ sudo grub-install --target x86_64-efi --boot-directory=/boot --efi-directory=/boot/efi --bootloader-id="$(lsb_release -ds)"' where it gives me the error: 'grub-install: error: cannot find a GRUB drive for /dev/sdb1. Check your device.map.' any knowledge about this error? – Garrett_Ruskauff Nov 22 '18 at 19:33