Это старая версия документа!
Содержание
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
Первый
- wl-kmod-fix-ioctl-handling.patch
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
Инструменты страницы
