我正在尝试将 Ubuntu 16.04 安装到外部 SSD 上,当插入我的 2013 MacBook Air 时,它将启动。我使用 16.04 是因为我将使用 ROS 的动能版本。
我正在关注这个 Medium 教程。
我在标题为修复 EFI 分区我正在尝试输入代码:
$ sudo add-apt-repository ppa:detly/mactel-utils
当我在终端中输入这个时,它给了我一个错误,内容如下
"~detly" user does not exist.
我自己做了一些研究,我认为无法执行此命令是因为我没有连接到互联网。我遇到的另一个问题是我无法连接到互联网。
当我点击网络下拉菜单时,启用网络选项已选中,但我看不到任何 WiFi 网络选项。如果有其他方式可以连接到互联网,请告诉我。
另外,如果有关于如何安装 Ubuntu 和从外部 SSD 启动的更好的教程,请告诉我。我认为我正在关注的那个相当全面。
@eyoung100 https://i.stack.imgur.com/MYmrP.png 在此图中,它显示了我的pool/main文件夹中的内容。它不包含p/patch或f/fakeroot路径,所以我认为这可能会导致一些不利的事情发生。很抱歉我花了这么长时间才回复。
以下是您请求的 make.log 文件的内容:
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'
答案1
解决方案
笔记:这篇文章中会有很多链接,以便原帖者和其他人可以自由地看到我的信息来自哪里。
我们需要整合您已关注的教程与Broadcom 卡的无线 Wiki。我们需要这样做是因为您的 MacBook Air 中的 WiFi 卡有三种选择:
- 它要么太旧,无法被新系统识别无处不在的安装程序。
- 我在您发布的图片中看到的卡
BCM360
仅支持专有 STA 驱动程序。 - 您选择在安装过程中不安装受限池。
遵循的步骤
- 阅读免责声明、收集设备并完成安装
- 完成手动启动。
- 停止 Medium 教程,并验证您刚刚完成的安装是否仍然包含您用作安装源。必须执行此操作,因为您无权访问在线存储库。
- 开始执行第 4-2 节 STA-无互联网访问中的命令,并运行这些命令
- 完成 4-2 部分中的命令。
- 选修的:按照以下步骤安装并将您的卡的其他驱动程序列入黑名单在驱动程序之间切换部分。您可能会发现一个驱动程序比其他驱动程序更好,但我推荐 STA 驱动程序,因为它是由 Broadcom 构建的。
- 关闭机器并重新启动。
- 返回您在步骤 3 中停止的教程,然后重新开始手动启动。请注意,您应该重复所有步骤,以验证选项是否与您第一次完成手动启动时相同。
- 完成教程。
更新
Makefile:976: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev,
libelf-devel or elfutils-libelf-devel"
sudo apt install libelf-dev
这个软件包很旧,而且很老旧。它本来是要在旧 GCC 版本是新版本时在旧版本上编译的,就像您的无线网卡是新版本时旧编译器也是新版本一样。
安装旧版 GCC:16.04 是用 GCC 6.xx 构建的,但可以安装和激活旧版本。我们这样做:
sudo apt install gcc-4.8
sudo apt install gcc-5
然后我们在阅读和研究之后暂时切换编译器很小心,这个 AskUbuntu 问题关于 update-alternatives,或者如果你喜欢解释的话:如何使用 update-alternatives 切换 GCC 版本。
使用 4.8 重新编译此包并发布新的 make.log 文件。至于您的包池,我相信您使用了最小/网络安装程序。检查Ubuntu 镜像列表,并确保下载 amd64 的完整桌面 iso。如果版本正确,请尝试重新编译包。如果失败,另一个选择是转到较旧的 LTS 版本,最有可能是 14.04,让互联网正常工作,执行 16.04 dist-upgrade
,然后重复上述步骤,如果你想转到 18.04。