Цель: добыча интернета на PS2 с последующим расшариванием его для устройств на базе ОС Андроид через USB.
Требования:
- Устройство на базе ОС Андроид версии 2.3+ ;
- Права root на этом устройстве;
- Наличие приложения эмулятора терминала в этом устройстве;
- Наличие программы busybox в этом устройстве.
Эти проги были скомпилированы:
iptables (версия не указана, т.к. исходник на github).
git clone git://git.netfilter.org/iptables
cd iptables
sh autogen.sh
Далее, исправления:
файл libxtables/xtables.c - добавить #include «linux/limits.h»
файл include/linux/netfilter/xt_haslimit.h - добавить #include «linux/limits.h»
Configure такой:
CC='mipsr5900el-unknown-linux-uclibc-gcc -static -static-libgcc' CXX='mipsr5900el-unknown-linux-uclibc-g++ -static -static-libgcc' LDFLAGS='-Wl,-static -static -lc -lm' LIBS='-lc -lm' ./configure --prefix=${PREFIX} --host=${HOST} --disable-shared --enable-static --disable-devel --disable-nftables
После установки, зайти в $PREFIX/bin и сделать
rm -f iptables-xml
ln -s ../sbin/xtables-multi iptables-xml
Для работы в PS2Linux2.6 с ядром vmlinux2.6_v11.1FPU нужно активировать следующие модули:
modprobe mii
modprobe usbnet
modprobe cdc_ether
modprobe rndis_host
Способ первый.
Алгоритм действий на устройстве с Андроидом:
- Подключить устройство с Android по USB к PS2 ;
- Выключить Wi-Fi и отключить передачу данных 3G ;
- Включить USB модем - Настройки->Ещё->Режим модема->USB модем.
После этого, в PS2Linux'е создаём файл /etc/resolv.conf со следующим содержимым:
Код
nameserver 10.111.62.254
(здесь 10.111.62.254 - сам IP адрес того устройства подключённого в интернет, из которого PS2 добывает интернет)
Далее, вводим:
ifconfig eth0 down
ifconfig eth0 10.111.62.252 netmask 255.255.255.0 broadcast 10.111.62.1( здесь 10.111.62.252 - IP адрес в диапазоне того устройства подключённого в интернет, из которого PS2 добывает интернет; 255.255.255.0 - маска; 10.111.62.1 - шлюз, обычно похож на IP того устройства подключённого в интернет только с единицей на конце.)
route add default gw 10.111.62.254( здесь 10.111.62.254 - сам IP адрес того устройства подключённого в интернет, из которого PS2 добывает интернет)
echo 1 > /proc/sys/net/ipv4/ip_forward----------
ifconfig usb0 192.168.62.12 netmask 255.255.255.0( здесь 192.168.62.12 - IP адрес, что Вы задаёте для PS2 для интерфейса usb0. Чтобы узнать в каком диапазоне - введите на устройстве с Андроидом в терминале команду
netcfg и смотрите IP адрес у интерфейса
usb0 или
rndis0)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEВозвращаемся на устройство с Андроидом, заходим в терминал, вводим:
su( если это Ваш первый визит - дайте права этому приложению "Терминал")
busybox route add default gw 192.168.42.12 dev rndis0( здесь 192.168.42.12 давече заданный IP адрес PS2 для интерфейса usb0;
rndis0 - интерфейс для режима модема USB, используемый на устройстве Андроид. Может быть или
rndis0, или
usb0 - чтобы узнать какой у Вас - введите команду
netcfg в терминале и ищите тот или иной. Если нет одного - есть другой)
Всё, проверяйте. На устройстве с Андроидом с этого момента должен быть интернет.
----------------
А если после всего этого вы ещё и Wi-Fi точку хотите сделать из своего устройства Андроид, чтобы оно раздавало интернет, добытый таким путём с PS2, через Wi-Fi, то:
- Включите точку доступа Wi-Fi - Настройки->Ещё->Режим модема->Точка доступа Wi-Fi. Там же настройте имя сети Wi-Fi и пароль ;
- Выполните команды в терминале(с правами root):
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE
ПЛАНЫ:Способ второй - подключение в интернет через протокол PPPoE (т.е., с именем пользователя и паролем) - для достижения этой цели нужно править ядро, конкретно драйвер сетевухи на то, чтобы спуфился MAC-адрес. Пока это сделано не будет - релиз проекта я выпускать пока небуду;
Довести это всё до автоматизма и свести настройки до единого файла;
Безопасное завершение работы - размонтирование примонтированного и выключение приставки лишь нажатием кнопки Start.
ppp-2.4.7 . (distclean не оказывает нужного эффекта). Configure здесь бесполезный, но, всё же, делать его надо. После него, редактируем кучу Makefile'ов:
файл chat/Makefile:
Код
install: chat
mkdir -p $(BINDIR) $(MANDIR)
- $(INSTALL) -s -c chat $(BINDIR)
+ $(INSTALL) -c chat $(BINDIR)
$(INSTALL) -c -m 644 chat.8 $(MANDIR)
файл pppdump/Makefile:
Код
install:
mkdir -p $(BINDIR) $(MANDIR)
- $(INSTALL) -s -c pppdump $(BINDIR)
+ $(INSTALL) -c pppdump $(BINDIR)
$(INSTALL) -c -m 444 pppdump.8 $(MANDIR)
файл pppstats/Makefile:
Код
install: pppstats
-mkdir -p $(MANDIR)
- $(INSTALL) -s -c pppstats $(BINDIR)
+ $(INSTALL) -c pppstats $(BINDIR)
$(INSTALL) -c -m 444 pppstats.8 $(MANDIR)
файл pppd/Makefile:
Код
install: pppd
mkdir -p $(BINDIR) $(MANDIR)
$(EXTRAINSTALL)
- $(INSTALL) -s -c -m 555 pppd $(BINDIR)/pppd
+ $(INSTALL) -c -m 555 pppd $(BINDIR)/pppd
if chgrp pppusers $(BINDIR)/pppd 2>/dev/null; then \
файл pppd/plugins/ppoatm/Makefile:
Код
-LIBS := -lresolv
+LIBS :=# -lresolv
endif
файл pppd/plugins/radius/Makefile:
Код
install: all
$(INSTALL) -d -m 755 $(LIBDIR)
- $(INSTALL) -s -c -m 755 radius.so $(LIBDIR)
- $(INSTALL) -s -c -m 755 radattr.so $(LIBDIR)
- $(INSTALL) -s -c -m 755 radrealms.so $(LIBDIR)
+ $(INSTALL) -c -m 755 radius.so $(LIBDIR)
+ $(INSTALL) -c -m 755 radattr.so $(LIBDIR)
+ $(INSTALL) -c -m 755 radrealms.so $(LIBDIR)
$(INSTALL) -c -m 444 pppd-radius.8 $(MANDIR)
файл pppd/plugins/rp-pppoe/Makefile:
Код
install: all
$(INSTALL) -d -m 755 $(LIBDIR)
- $(INSTALL) -s -c -m 4550 rp-pppoe.so $(LIBDIR)
+ $(INSTALL) -c -m 4550 rp-pppoe.so $(LIBDIR)
$(INSTALL) -d -m 755 $(BINDIR)
- $(INSTALL) -s -c -m 555 pppoe-discovery $(BINDIR)
+ $(INSTALL) -c -m 555 pppoe-discovery $(BINDIR)
Собирать командой
make CC=mipsr5900el-unknown-linux-uclibc-gccrp-pppoe-3.12. Добавки: rpppoe_cv_pack_bitfields=rev
dhcpcd-6.11.5. Видимо требует у libc поддержку large file (LFS_SUPPORT)
net-tools-1.60. Configure нету. Править Makefile:
LDFLAGS = $(LOPTS) -L$(NET_LIB_PATH)
- добавить -lintl:
LDFLAGS = $(LOPTS) -L$(NET_LIB_PATH)
-lintlфайл lib/inet_sr.c: строчка 108:
Код
case 2:
isnet = 0; break;
default:
+ ;
}
файл hostname.c: строчки 100, 120 и 176:
Код
case EINVAL:
fprintf(stderr, _("%s: name too long\n"), program_name);
break;
default:
+ ;
}
-------------------------------
case EINVAL:
fprintf(stderr, _("%s: name too long\n"), program_name);
break;
default:
+ ;
}
-------------------------------
case 's':
if (p != NULL)
*p = '\0';
printf("%s\n", hp->h_name);
break;
default:
+ ;
}
файл mii-tool.c: со строчки 381:
Код
const char *usage =
"usage: %s [-VvRrwl] [-A media,... | -F media] [interface ...]
...
media: 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD,
(to advertise both HD and FD) 100baseTx, 10baseT\n";
- добавлять наклонную "\" в конце каждой строчки, кроме где ковычки заканчиваются:
Код
const char *usage =
"usage: %s [-VvRrwl] [-A media,... | -F media] [interface ...] \
... \
media: 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD, \
(to advertise both HD and FD) 100baseTx, 10baseT\n";
Настраивать командой
make configСобирать командой
make CC=mipsr5900el-unknown-linux-uclibc-gccУстанавливать командой
make BASEDIR=/usr/local/ps3/mipsr5900el-unknown-linux-uclibc installattr-2.4.47. После configure, править Makefile'ы:
файл attr/Makefile: добавить -lintl:
LLDLIBS = $(LIBATTR)
-lintlфайл getfattr/Makefile: добавить -lintl:
LLDLIBS = $(LIBMISC) $(LIBATTR)
-lintlфайл setfattr/Makefile: добавить -lintl:
LLDLIBS = $(LIBMISC) $(LIBATTR)
-lintllibcap2-2.25. Править файл libcap/cap_file.c:
Код
extern int fremovexattr(int, const char *);
+#ifndef XATTR_CAPS_SUFFIX
+#define XATTR_CAPS_SUFFIX "capability"
+#endif
+#ifndef XATTR_SECURITY_PREFIX
+#define XATTR_SECURITY_PREFIX "security."
+#endif
+#ifndef XATTR_NAME_CAPS
+#define XATTR_NAME_CAPS XATTR_SECURITY_PREFIX XATTR_CAPS_SUFFIX
+#endif
#include "libcap.h"
Configure нету. Собирать командой
make CC=mipsr5900el-unknown-linux-uclibc BUILD_CC=gccУстанавливать командой
make DESTDIR=/usr/local/ps3/mipsr5900el-unknown-linux-uclibc install. Поставится криво, так что зайти в $(PREFIX)/usr и сделать
mv include ../
mv lib ../
nettle-3.3
libidn-1.33
iputils. (версия не указана, т.к. исходник на github).
git clone https://github.com/iputils/iputils.git
cd iputils
Править Makefile:
LDFLAG_RESOLV=-lresolv
- стереть -lresolv:
LDFLAG_RESOLV=
USE_IDN=yes
- править yes на no:
USE_IDN=no
Строить командой
make CC=mipsr5900el-unknown-linux-uclibc-gccИнсталлировать вручную:
cp -rdfv {ping,traceroute6} $(PREFIX)/bin
cp -rdfv {arping,rapd,rarpd,rdisc,tftpd,tracepath{ $(PREFIX)/sbin