Это старая версия документа!
Содержание
Open Suse 13.2 x64 заселение на mac
Процес начинается с разбивки жесткого, благо для этого есть BootCamp в стандартной поставке. Ей и воспользовались
Главное во время установки не перезаписать основной MBR
Я вообще загрузчик UEFI выбрал.
подробнее про это написать с OS X Yo
Железные проблемы
Это всегда весело получать проблемы из ниоткуда.
Точнее от туда, где раньше все было хорошо.
1. Нету драйвера беспроводной сети
Таблица с поддерживаемыми ядром устройствами
https://wireless.wiki.kernel.org/en/users/Drivers/b43?highlight=%28b43%29#Supported_devices
Проверяем свое железо
lspci -nn | grep 0280 $ lspci -vnn | grep Network 03:00.0 Network controller [0280]: Broadcom Corporation BCM4360 802.11ac Wireless Network Adapter [14e4:43a0] (rev 03)
Видим что 14e4:43a0 ядром в чистом виде не поддерживается, но wi-fi можно запустить через wl
Значит это наш путь собрать и загрузить его.
modprobe wl
Дело было так:
- скачиваем исходники модуля http://www.broadcom.com/support/?gid=1
- читаем как собирать http://www.broadcom.com/docs/linux_sta/README_6.30.223.248.txt
- собирал по этой мане https://wiki.centos.org/HowTos/Laptops/Wireless/Broadcom
в процессе смотрел эти ссылки - сделал два патча.
https://513156.bugs.gentoo.org/attachment.cgi?id=378836 https://www.centos.org/forums/viewtopic.php?f=50&t=52081 http://ubuntuforums.org/showthread.php?t=2216779&page=2 https://bugs.gentoo.org/show_bug.cgi?id=513156 http://stackoverflow.com/questions/19013337/how-to-fix-802-11-linux-sta-broadcom-driver-not-building-on-centos http://mike-kirk.blogspot.co.il/2014/07/broadcom-wireless-not-working-on-fedora.html http://msiyer.com/2014/11/28/opensuse-13-2-and-broadcom-bcm43228-wireless-driver-woes-in-the-linux-world/ http://linuxforums.org.uk/index.php?topic=11930.30
Первый
diff -Npru a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
--- a/src/wl/sys/wl_cfg80211_hybrid.c 2014-06-26 06:42:08.000000000 -0400
+++ b/src/wl/sys/wl_cfg80211_hybrid.c 2014-07-21 13:37:45.204564696 -0400
@@ -1450,7 +1450,10 @@ wl_cfg80211_get_station(struct wiphy *wi
memset(&scb_val, 0, sizeof(scb_val));
err = wl_dev_ioctl(dev, WLC_GET_RSSI, &scb_val, sizeof(scb_val_t));
if (err) {
- WL_DBG(("Could not get rssi (%d)\n", err));
+ if (err != -EINVAL) {
+ /* Don't fill syslog with EINVAL errors */
+ WL_ERR(("Could not get rssi (%d)\n", err));
+ }
return err;
}
rssi = dtoh32(scb_val.val);
diff -Npru a/src/wl/sys/wl_linux.c b/src/wl/sys/wl_linux.c
--- a/src/wl/sys/wl_linux.c 2014-06-26 06:42:08.000000000 -0400
+++ b/src/wl/sys/wl_linux.c 2014-07-21 13:41:57.551456600 -0400
@@ -1651,11 +1651,7 @@ wl_ioctl(struct net_device *dev, struct
}
WL_LOCK(wl);
- if (!capable(CAP_NET_ADMIN)) {
- bcmerror = BCME_EPERM;
- } else {
- bcmerror = wlc_ioctl(wl->wlc, ioc.cmd, buf, ioc.len, wlif->wlcif);
- }
+ bcmerror = wlc_ioctl(wl->wlc, ioc.cmd, buf, ioc.len, wlif->wlcif);
WL_UNLOCK(wl);
done1:
Второй
diff -Npru a/src/wl/sys/wl_cfg80211_hybrid.c b/src/wl/sys/wl_cfg80211_hybrid.c
--- a/src/wl/sys/wl_cfg80211_hybrid.c 2014-06-26 06:42:08.000000000 -0400
+++ b/src/wl/sys/wl_cfg80211_hybrid.c 2015-06-26 06:42:08.000000000 -0400
@@ -1841,7 +1841,26 @@ wl_notify_connect_status(struct wl_cfg80211_priv *wl, struct net_device *ndev,
wl_get_assoc_ies(wl);
memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN);
wl_update_bss_info(wl);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)
+ {
+ struct wl_bss_info *bi;
+ u16 bss_info_channel;
+ struct ieee80211_channel *channel;
+ u32 freq;
+
+ bi = (struct wl_bss_info *)(wl->extra_buf + 4);
+ bss_info_channel = bi->ctl_ch ? bi->ctl_ch : CHSPEC_CHANNEL(bi->chanspec);
+
+ freq = ieee80211_channel_to_frequency(bss_info_channel,
+ (bss_info_channel <= CH_MAX_2G_CHANNEL) ?
+ IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ);
+
+ channel = ieee80211_get_channel(wl_to_wiphy(wl), freq);
+ cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, channel, GFP_KERNEL);
+ }
+#else
cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, GFP_KERNEL);
+#endif
set_bit(WL_STATUS_CONNECTED, &wl->status);
wl->profile->active = true;
}
----------------------------
this work esa
wl_link_up(wl);
wl_get_assoc_ies(wl);
memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN);
wl_update_bss_info(wl);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)
struct wl_bss_info *bi;
u16 bss_info_channel;
struct ieee80211_channel *channel;
u32 freq;
bi = (struct wl_bss_info *)(wl->extra_buf + 4);
bss_info_channel = bi->ctl_ch ? bi->ctl_ch : CHSPEC_CHANNEL(bi->chanspec);
freq = ieee80211_channel_to_frequency(bss_info_channel,
(bss_info_channel <= CH_MAX_2G_CHANNEL) ?
IEEE80211_BAND_2GHZ : IEEE80211_BAND_5GHZ);
channel = ieee80211_get_channel(wl_to_wiphy(wl), freq);
cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, channel, GFP_KERNEL);
#else
cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, GFP_KERNEL);
#endif
set_bit(WL_STATUS_CONNECTED, &wl->status);
wl->profile->active = true;
Исходники и скомпилированный модуль
http://wiki.magnes.su/lib/exe/fetch.php?media=wiki:%D1%81%D0%BA%D0%BB%D0%B0%D0%B4:%D0%BE%D0%B1%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5:linux:opensuse_13.2:wifi-mac-222.tar.gz
вырезка из файла в папке с моими исходниками
Вот так это запускается при старте системы
su cd home/will/222 modprobe lib80211 modprobe cfg80211 insmod wl.ko
создаем файлик с таким содержимым и помещаем его в загрузку системы
cd /etc/rc.d
touch mac_wifi
и заносим его в нужную стадию загрузки симлинком, скажем в rc5.d
по хорошему откомпилированные файлы надо размазать по системным папкам с либами, но меня устраивает, что они живут в ~
но с домашним путем могут быть проблемы с правами на этапе загрузки.
2. Разрешение экрана HiDPI
ыва
3. 100% одного CPU при подключении/отключении внешнего монитора
ыва
Обустройство
Подключение репозиториев
Packman
NVidia
LibreOffice
wine
Софт для работы
1. KeepassX - в основном есть
2. firefox addons
Инструменты страницы
Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 4.0 International