无忧启动论坛

标题: 安卓版的tiny-pxe-server(pxe-http-nfs) iscsi-target发布了 [打印本页]

作者: 510819776    时间: 2014-10-10 18:07
标题: 安卓版的tiny-pxe-server(pxe-http-nfs) iscsi-target发布了
本帖最后由 510819776 于 2014-11-14 00:33 编辑


如果软件无法使用
就用servers ultimate pro 6.3.10的pxe
这货貌似不支持g4d出菜单 不过有人测试可以出菜单 也不知道哪个版本grub4dos  我就挺郁闷了
只用pxelinux或ipxe的同志   这个是不错的选择 兼容性不错
不过自带的http服务不支持ipxe的sanboot
bukerpxelite 原理和我的app一样 核心就是一个dnsmasq 不过它的dnsmasq不集成tftp 所以它弄了一个busybox来提供tftp服务  在我的安卓4.0手机上无法使用

网上能找到一款androidtftp的软件 可以提供tftp服务 不过默认端口是6969 无法用于网络启动
如果有高手能修改这个app 让他直接提供69端口的tftp服务
然后配合servers ultimate的pxe服务   也是个很不错的网络启动方案
servers ultimate集成的tftp服务器 似乎也不给力

如果用完整命令的busybox 也能配置出pxe服务来
但不知是busybox的tftpd功能缺陷还是grub4dos的tftp模块有问题  启动不出菜单




2014年10月17
可自定义pxe的引导文件和tftp目录
直接点击启动pxe 可使用内置g4d
bukerpxe server和我的这个软件原理一致 但tftp服务用的是busybox的
内置的tftp目录位于 手机默认存储pxe文件夹下的tftp目录
默认引导文件g4d.0   支持dhcpproxy
需要ipxe的可以把ipxe文件换成g4d.0 取代即可
http目录默认也是pxe下tftp 修改目录的话修改http.conf即可
想用手机启动ubuntu等linux可以配合内置的nfs来用
windows就不要考虑了  集成核心的网卡驱动比较麻烦
iscsi 服务apk 似乎没人感兴趣
暂时不折腾了       反正我自己用起来也没问题 料想网盘的应该问题不大才是

刚刚测试了一下







2014年10月19号
将软件的调试功能完善了
失败者 直接提供调试信息
便可以对症下药
等bug完善 再加入http和nfs功能

iscsi就算了  真要折腾就用网盘的那个iscsi 的apk  如果不能用   点开那个apk后
自己去超级终端 编写脚本来运行 我就不修改了
我手机运行毫无问题

个人认为要手机网络启动速度快
1.手机路由都至少要支持11n
2.尽量使用lpxelinux.0或ipxe.0  这两个东西都直接支持http ftp协议  配合我的app提供的http服务 载入pe.iso也可以达到6M/s
而且ipxe支持http方式的iso直接启动  和 iscsi cdrom有异曲同工之妙
lpxelinux.0目前没测试过sanboot功能 以后有机会也研究下 哈哈


2014年10月20日最新调试版
名字还是叫dnsmasq
添加http nfs 功能
另外 菜单键可保存配置

本http只作为ipxe或pxelinux以及wimboot的http启动来用 所以和tftp共享目录
另外这个http如果大家直接浏览器输入 手机ip 回车 会看到自己手机的对应http目录文件列表 可以简单的提供文件共享
nfs就不说了 懂linux的都知道  只为折腾linux无盘而生
软件写到这里对我来说就算完美了
如果pxe开启提示权限问题  试试 附加参数填写-g sdcard_rw或-u root -g sdcard_rw试一下
-u 用户名 -g 用户组
常见的用户名root shell system等 用户组的话一般sdcard_r或sdcard_rw 或root/system/shell等 都可以试一下
此软件的编写无java方面的东西 基本都是基于android shel和busybox
就这样吧
如果无法使用  那你们去用servers ultimate吧  对grub4dos支持不好 不过对pxelinux和ipxe应该还不错
已经够用了
折腾好久 看来写安卓软件  当开发者不是轻松的活
当然没有tiny-pxe-server 那么给力


2014年10月21日
因为编写软件已经能在自己手机上成功完美运转
所以不再发布新版本了

如果使用C大或我的app工作不正常的
告诉你们一个曲线救国的方案
其实servers ultimate最新版内置了pxe服务
只不过唯一的遗憾就是此PXE的tftp有些毛病  我测试出不了grub4dos的菜单
而如果是dnsmasq提供的tftp就没有这个问题
至于bukerpxelite原理就是dnsmasq 不过它提供的tftp服务也是稀烂


接下来要讲的就是 如何曲线打造完美的 pxe服务 for androd
过程很是曲线  不过结果却不会太差
手机必须root  是否有busybox不重要
1.安装最新版的servers ultimate 6.3.10吧  
2.安装andtftp  1.2


#开启tftp服务
打开andtftp 然后设置下tftp目录   块大小 随意 然后点击启动服务器
#tftp服务配置完毕
重点来了


打开servers ultimate 6.3.10


#添加Port Forwarder服务
切换到rules
添加一个rules
type选择 custom
然后把两个编辑框里面的 21都改成69  2121都改成6969 tcp都改成udp
保存
#port forwarder服务配置完毕


#配置pxe服务
添加dhcp Proxy server
general设置页面勾选 Use root for internal port forward
specific页面填写bootfile
保存

#PXE服务配置完毕}


补上一个 用busybox udhcpd做pxe服务器的配置文件
udhcpd.conf
start           192.168.2.2
end             192.168.2.10                dhcp分配ip
option  subnet  255.255.255.0  
interface       wlan0                          手机网卡名
siaddr          192.168.2.162             tftp服务器ip
boot_file       g4d.0



option  dns     8.8.8.8 114.114.114.114  可以不要
              子网
option  router  192.168.2.1                    可以不要
option  domain  local                               可以不要
option  lease   600                                  可以不要
用法 busybox udhcpd udhcpd.conf启动即可
网上的很多busybox都没有udhcpd命令 去我网盘下载我编译的完整版busybox
tftp就用andtftp即可  别忘了做端口转发 iptables**



如下命令 可以在端口之间进行数据转发
比如 andtftp服务软件 默认端口6969 且无法修改 但是我们想让他作为pxe的tftp服务器 所以必须开放端口69
  
我的安卓4.0手机内置iptables 安卓2.3也有 其他手机不知道 但是想必也自带吧

#添加端口转发
iptables -A PREROUTING -t nat -p udp --dport 69 -j REDIRECT --to-port 6969
iptables -A INPUT -p udp --dport 69 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
这命令执行会有错误信息 但是不用管他
接下来你会发现用电脑去下载你手机69端口的tftp服务器文件没问题了
当然6969端口也是可以用的
#删除端口转发
iptables -D PREROUTING -t nat -p udp --dport 69 -j REDIRECT --to-port 6969
iptables -D INPUT -p udp --dport 69 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

这货可以让非root的软件使用1024以下端口 当然你手机必须root
这货的tftp服务性能很完美的说  
端口转发完毕后 就开启pxe服务就行了  哈哈  设置好启动文件 啥时不管就行了





做个最简单的教程
假设你手机  wifi ip为 192.168.2.162
iptables -A PREROUTING -t nat -p udp --dport 69 -j REDIRECT --to-port 6969
iptables -A INPUT -p udp --dport 69 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
将上面内容保存为69 拷贝到/system/bin/69  用re文件管理器给它 权限

iptables -D PREROUTING -t nat -p udp --dport 69 -j REDIRECT --to-port 6969
iptables -D INPUT -p udp --dport 69 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
将上面内容保存为6969  拷贝到/system/bin/6969 用re文件管理器给它 权限

start           192.168.2.2
end             192.168.2.10               
option  subnet  255.255.255.0  
interface       wlan0                          一般应该是wlan0吧  特殊的特殊对待 用busybox ifconfig -a 可以看到
siaddr          192.168.2.162             tftp服务器ip  也就是自己的手机wifi ip
boot_file       g4d.0                          引导文件
将上述内容保存为pxe.conf 放到sdcard目录下
则要开启pxe服务 需要做的事情就是
打开超级终端 输入
su
69
busybox udhcpd /sdcard/pxe.conf
然后把你的andtftp的服务开启
好了 你的手机已经可以网络启动了
关闭pxe功能
关闭andtftp服务
su
6969
killall busybox udhcpd
完毕  
就这么简单  明白??

或者弄本帖的dnsmasq
以上方法 可以做到兼容grub4dos
如果不需要grub4dos
可以考虑用servers ultimate
或用上面的busybox 但是不用andtftp 而改用busybox内置的tftpd服务
启动命令如下
busybox udpsvd -E 0.0.0.0 69 tftpd /sdcard/tftpboot
busybox 我网盘有
用busybox安装器安装的 不完整 可能没有udpsvd tftpd httpd udhcpd ftpd等功能




2014年11月10号

公布iscsi target.apk tiny-pxe-server.apk nginx-web-server的源码
还有个vblade 是aoe target 有时间在编写个安卓的图形界面吧

现在发现iscsi其实很给力
启动linux用nfs 没问题
而启动win8pe 就用iscsi或/aoe 都可以
可以把 手机的sd卡 整个共享给 win8pe 这里的共享是基于设备的共享
这样就可以直接用windows系统 通过无线 用磁盘管理或其他分区工具对手机sd卡直接进行分区了
当然也可以用samba  不过速度就慢多了  而且samba是给予文件的共享
而且pxe启动iscsi和aoe都是比较成熟的 速度也不算慢
我目前用的是  第三方的starwin iscsi/aoe initiator客户端  直接在支持网络的win8pe上安装后就能挂载 非常方便 电脑会多出一个物理的硬盘 就是手机的sd卡
因为本人sd卡是hfsx文件系统 导致win8pe无法识别 结果就出了盘符 双击提示 未格式化
不知道哪位大侠知道  怎么给win8pe集成hfsplus支持
如果sd卡是ntfs或vfat 那么直接就出盘了

测试版下载地址是
链接:
http://pan.baidu.com/s/1dDtNTOP 密码: 8lks

源码 易安卓3.9/4.0编译
链接:http://pan.baidu.com/s/1dDIRcvZ 密码:4m96







当我以为自己的手机可以开启pxe http iscsi aoe nfs之后就给力无比的时候
我突然发现我的主板居然不支持uefi pxe启动 这不是典型的坑爹么?
这主板uefi启动优盘 硬盘是没有问题的 我还进去过外置的shell
后来再三思考 想到一个问题
我的主板bios 刷过 刷了联想win7三激活
现在突然想到自己的主板无法uefi启动pxe  但是可以普通方式pxe
于是乎推测出大约是 slic 2.2模块把我的uefi bios内置的pxe给替换掉了
这真是坑爹呢  虽然虚拟机vmware10可以测试 不过怎么有真机给力
最后苦思冥想 终于让我的电脑支持了uefi pxe启动
方法也不复杂
bios boot设置

第一启动项是默认的efi/boot/bootx64.efi

同时开启pxe功能  把普通pxe的启动项设置为第二项

第三项禁用

然后开机后会自动 加载bootx64.efi 进入uefi shell 2.31
之后我从官网下载了reltek8168网卡的uefi udi驱动
然后跑去ipxe的定制网站https://rom-o-matic.eu/ 定制了一个64位 ipxe.efirom
注意这个网站需要用到google服务器的js脚本  也就是说要翻墙材可以正常编译

然后呢 在uefi shell输入
load 8168.efi
loadpcirom ipxe.efirom
然后输入exit退出shell
之后会再一次进入uefi shell
就再一次输入exit退出shell
然后uefi pxe启动就正式开始了
我将手机的dnsmasq设置引导文件为bootmgfw.efi  启动一个win8.wim 322M 花了大约三分钟后顺利进入win8 64位的pe桌面
然后把手机的dnsmasq设置引导文件为ipxe.efi  开启http服务      用wimboot方式加载bcd boot.sdi bootmgfw.efi win8.wim 还是322M 用了1分多钟进入了win8pe桌面
到这里 我对手机网络启动 就算是到位了
目前用手机配合无线路由 临时装机最好的方案是
手机启动iscsi服务 http服务 pxe服务 然后通过sanboot http或iscsi 或wimboot方式启动到pe环境
然后 pe下用iscsi发起启连接手机端的iscsi服务 比如iso镜像或整个sd卡都行
当然不弄iscsi的话 直接用http将手机镜像下载到电脑后本地安装一样的效果 就是多浪费点时间
win8x64pe下测试手机iscsi磁盘性能         读取 6.7M/s    非常稳定
                    测试手机http下载性能        读取7M/s         非常稳定
                    测试手机aoe服务磁盘性能  读取4.6M/s      速度曲线波动挺大
                    测试手机samba服务            读取3.8M/s     非常稳定
有个httpdisk 可以把http的iso挂载为光驱 我没测试过性能 谁帮测试下
ubuntu 64位测试手机nfs服务性能           读取接近6M/s 非常稳定
想弄手机pxe装机的可以参考这些数据
手机是135M无线连接  路由150M  有线环境是100M

总之 主板的uefi pxe功能能被我想办法补救回来 我十分开心
只不过uefi pxe启动可选择的引导文件 比较纠结
windows用bootmgfw.efi 或ipxe配合wimboot
syslinux.efi我测试了一下 能出菜单 但是不知道为啥 喜欢卡死
ipxe.efi的kernel和initrd命令似乎不能用来启动linuxmint 17 x64 不然直接死机
所以呢 我现在估计只能弄grub2.efi的uefi pxe启动了  
各位如果有uefi pxe的好的引导efi可以推荐下 呵呵

  


作者: 2013gdh    时间: 2014-10-10 22:27
强! 赞一个.

作者: xiaoy    时间: 2014-10-10 22:32
非常好  等下载 没有root的手机可以么
作者: wylgogogo    时间: 2014-10-10 22:45
                         我赶上了,高手呀,这多高大上。期待这,每天进论坛就想着这个呢。
作者: sh1688    时间: 2014-10-10 23:06
利害
作者: sh1688    时间: 2014-10-10 23:07
等你发布~安卓版的tiny-pxe-server发布了
作者: HY    时间: 2014-10-10 23:33
多少内存能运行?
作者: 510819776    时间: 2014-10-10 23:35
xiaoy 发表于 2014-10-10 22:32
非常好  等下载 没有root的手机可以么

靠 你手机都不root
那玩个毛线

作者: 510819776    时间: 2014-10-10 23:38
HY 发表于 2014-10-10 23:33
多少内存能运行?

对手机硬件没要求
必须root
安装了busybox
才有可能可以用

作者: 510819776    时间: 2014-10-10 23:40
HY 发表于 2014-10-10 23:33
多少内存能运行?

对手机硬件没要求
必须root
安装了busybox
才有可能可以用

作者: HY    时间: 2014-10-10 23:45
我的手机root和安装busybox都满足。
谢谢回复,谢谢分享

作者: Myptour    时间: 2014-10-11 00:07
牛逼,大赞!
作者: chenall    时间: 2014-10-11 14:39
支持一下,只是界面不是很友好,继续加油,,
作者: xh00789    时间: 2014-10-11 15:06
高手,继续加油,锻造精品
作者: 510819776    时间: 2014-10-11 15:38
chenall 发表于 2014-10-11 14:39
支持一下,只是界面不是很友好,继续加油,,

界面就算了
我根本就不懂得 安卓编程
用的是最傻的 E4A 编译器
另外问一下
pxe服务 正常么?
内置的ipxe和grub4dos??

作者: chenall    时间: 2014-10-11 19:24
用宿舍的网络测试启动失败,ipxe/grub4dos都没有办法使用,启动时显示no boot filename,明天到办公室再测试看看。



作者: 510819776    时间: 2014-10-11 20:40
chenall 发表于 2014-10-11 19:24
用宿舍的网络测试启动失败,ipxe/grub4dos都没有办法使用,启动时显示no boot filename,明天到办公室再测 ...

知道了
犯了一个错误
我的sd卡文件系统是hfsx 而大部分人的手机sd卡文件系统都是vfat
vfat不支持权限修改
不过貌似救我自己的手机运行ok 所有功能都可用
而且启动ipxe和g4d飞快
路由dhcp是开启的
我在弄弄

作者: 510819776    时间: 2014-10-11 20:41
chenall 发表于 2014-10-11 19:24
用宿舍的网络测试启动失败,ipxe/grub4dos都没有办法使用,启动时显示no boot filename,明天到办公室再测 ...

知道了
犯了一个错误
我的sd卡文件系统是hfsx 而大部分人的手机sd卡文件系统都是vfat
vfat不支持权限修改
不过貌似救我自己的手机运行ok 所有功能都可用
而且启动ipxe和g4d飞快
路由dhcp是开启的
我在弄弄

作者: 510819776    时间: 2014-10-13 01:42
510819776 发表于 2014-10-11 20:40
知道了
犯了一个错误
我的sd卡文件系统是hfsx 而大部分人的手机sd卡文件系统都是vfat

已经修复权限问题了,请测试最新版
作者: lsz19900821    时间: 2014-10-13 07:59
看起来好高端好难的样子
作者: chenall    时间: 2014-10-13 08:27
试了还是失败,有没有测试成功的?

这次是显示no dhcp or proxyDhcp...
作者: 510819776    时间: 2014-10-13 14:14
我的手机能用了  可能最后修改一次 界面吧
作者: 510819776    时间: 2014-10-13 14:36
chenall 发表于 2014-10-13 08:27
试了还是失败,有没有测试成功的?

这次是显示no dhcp or proxyDhcp...

这是哪个启动的结果ipxe么?
难道我写的软件只有自己能用
真高大上了
你用手机终端看看pxe进程是不是没运行
还是路由环境太复杂 或手机有其他dhcp服务?!
作者: 510819776    时间: 2014-10-13 15:09
本帖最后由 510819776 于 2014-10-14 01:09 编辑
chenall 发表于 2014-10-13 08:27
试了还是失败,有没有测试成功的?

这次是显示no dhcp or proxyDhcp...


真尴尬
我刚刚又用自己手机测试一遍
路由是wr720n 刷的openwrt  开启了dhcp 路由ip 192.168.2.1  手机ip是192.168.2.162
无论是ipxe还是g4d方式  
pxe启动是非常顺利的
虚拟机桥接后测试结果一致
太诡异了
另外 如果路由没有开启dhcp的话 不可以使用ipxe方式  因为这样就会出现网络无dhcp服务的情况
只能用g4d方式  也可以吧g4d.0换成其他的pxe引导
ipxe方式采用 dhcp代理方式
g4d才会开启dhcp 如果路由开启了dhcp 可能也会冲突
另外 手机必须开启wifi而不是开启AP模式
等他人测试结果


再一次更新了  这个软件
只是希望有人可以成功吧
我也懒得更新了
我自己手机 pxe配合iscsi 搞个无盘都没问题了

作者: lsz19900821    时间: 2014-10-14 01:48
有教程不?
作者: 510819776    时间: 2014-10-14 15:25
lsz19900821 发表于 2014-10-14 01:48
有教程不?

要什么教程
软件就那么几个按钮
就点击一下  开启pxe服务就行了
然后电脑网络启动

作者: mygamexxx    时间: 2014-10-15 00:05
测试不成功,楼主是否能换个手机试一下是否能成功?
作者: 510819776    时间: 2014-10-15 01:56
本帖最后由 510819776 于 2014-10-15 01:58 编辑
mygamexxx 发表于 2014-10-15 00:05
测试不成功,楼主是否能换个手机试一下是否能成功?


测试不成功的原因很多
我测试是没有问题的
1.手机root
2.安装了busybox
3.手机有sd卡
4.手机连接了无线路由
判断是否软件问题
用超级终端输入
su
ps | grep -i pxe
看看pxe进程是否在运行
如果没有运行 那就是软件或手机问题
如果pxe进程已经运行了
然后输入netstat -a | grep -i listen
看看手机的端口69 是否已经在被监听
如果pxe进程存在 69端口也被使用 那么说明手机软件没问题了
得看看你无线路由器的设置了
我的手机 这个软件 配合我的tplink wr720n 刷的openwrt固件表示一切都ok
另外测试了一下servers ultimate  最新版本 发现可以网络启动ipxe
不过如果用来启动g4d就会阳痿 不出现菜单 卡在tftp blocksize 那里
这和我用dnsmasq dhcppoxy方式pxe启动一个效果
grub4dos的pxe貌似不支持dhcppoxy方式 只能把dhcp和tftp服务同时打开才行
而pxelinux.0或ipxe似乎没这个问题
所以 你自己判断一下问题出在哪里
另外如果路由有线和无线的网段是分开的 那么就不奇怪了
另外网上让安卓支持pxe的app已经有两个了
一个是 那叫buker pxe lite 能启动pxelinux.0或ipxe.0
另一个就是servers ulitmate
大家找能用的用吧


作者: 510819776    时间: 2014-10-15 16:32
本帖最后由 510819776 于 2014-10-15 16:36 编辑
510819776 发表于 2014-10-15 01:56
测试不成功的原因很多
我测试是没有问题的
1.手机root


用弟弟的小米手机测试了一下  安卓4.2.2
才发现问题的所在
原来不是所有手机都把 SD卡设置为默认存储
看来我需要把 获取存储的函数改变方法了
另外问一下大家
是不是所有的安卓手机 都有/sdcard目录???
如果有 就把这个固定目录当成sd路劲算了
要不然 我只能用busybox echo $扩展sd的方式获取默认存储路径了

似乎小米手机只需要把默认存储改成SD 就一切ok



作者: 2010lzh052    时间: 2014-10-15 17:26
没有玩过这么高端的呀
作者: chenall    时间: 2014-10-15 17:41
510819776 发表于 2014-10-15 16:32
用弟弟的小米手机测试了一下  安卓4.2.2
才发现问题的所在
原来不是所有手机都把 SD卡设置为默认存储 ...

好像不管默认存储是什么都是最终指向sdcard目录的.,

另外我试了直接用命令行启动.nfs目录里面的pxe命令
./pxe --conf-file=/sdcard/Boot/pxe.conf --group=sdcard_r

刚开始会提示权限错误,后来我加了上面的--group=sdcard_r,正常了,可以在电脑上用tftp命令下载.

但也是启动不了..路由器有开dhcp,没有接触过proxyDhcp,不知它如何运作.

不知你用来启动pxe参数是什么?能不能贴一个例子?

用顶楼的软件测试发现没有启动pxe进程,估计是参数或者权限问题

作者: PE168    时间: 2014-10-15 17:44
关注中,我测试也没成功.貌似是连上了手机,手机ip也出来了,但找不到网启菜单.
作者: 510819776    时间: 2014-10-15 22:44
本帖最后由 510819776 于 2014-10-15 23:21 编辑
chenall 发表于 2014-10-15 17:41
好像不管默认存储是什么都是最终指向sdcard目录的.,

另外我试了直接用命令行启动.nfs目录里面的pxe命 ...


我的手机就是与众不同
我手机sd卡是 hfsx文件系统  用的fuse在系统启动初级阶段就挂载了 安卓 4.0
我看了一下我sd卡的文件 各种权限 各种用户  
然后把我弟弟的红米note 4.4.2系统拿过来弄
发现果然是权限问题 导致pxe进程无法正常开启
似乎pxe加上-u root 后可以运行 但是tftp服务还是失败
我的手机 因为sd卡权限 用户都可以改 才没这个问题
那个 安卓4.4.2的红米 测试 就nfs可用  
http即使进程起来了 也无法访问 还是权限
pxe 也是提示tftp权限问题
这货遇到vfat文件系统就那么蛋疼
纠结了
另外默认存储
我用 易安卓的     
取存储卡路径() 函数 貌似在红米手机上 得到的是一个不存在的路径
不过虽然得到的路径是不存在 但是数据包居然被正确的解压了
后来我 就直接用
busybox echo $EXTERNAL_STORAGE  来获取默认存储路径 不管是不是sd了
貌似我的手机和红米 note 都有共同的/sdcard路径 是个软连接
pxe的进程启动还是需要正确的参数
我的两种方式参数分别是
假设手机wifi ip是 192.168.2.52
sd卡路径是/mnt/sdcard
两条命令最后执行的结果是
pxe -F 192.168.2.2,192.168.2.50 -p 0 --dhcp-no-override --enable-tftp --tftp-root=/mnt/sdcard/.pxe/tftp -M g4d.0
pxe -F 192.168.2.52,proxy -p 0 --dhcp-no-override --enable-tftp --tftp-root=/mnt/sdcard/.pxe/tftp --pxe-service=0,Made-by-guo4qing,ipxe
这两条命令 在我的手机上运作非常好
路由开启了dhcp 手机就是自动获取ip的
在我手机上 添加-u root后 pxe进程能启动 但是网络启动提示tftp有问题
依然是权限问题呀 郁闷
不过我自己手机已经完美可用了

这是我的手机执行ls /sdcard/ -l的情况
root@android:/data/data/com.teslacoilsw.quicksshd/home # ls /sdcard/ -l
drwxrwxrwx root     root              2014-08-06 19:45 8684
drwx------ app_75   app_75            2014-10-09 06:11 Android
drwx------ app_44   app_44            2014-10-13 01:47 Anmpp
drwx------ app_71   app_71            2014-10-15 05:37 AppProjects
drwxrwxrwx root     root              2014-04-14 16:12 BaiduMapSDK
drwxrwxrwx root     root              2014-08-11 02:10 DCIM
drwx------ app_88   app_88            2014-10-10 00:25 Download
-rwxrwxrwx root     root          120 2014-05-02 14:37 IMEI.bak
drwx------ app_52   app_52            2014-10-13 22:40 KingsoftOffice
-rwxrwxrwx root     root          120 2014-01-20 21:35 MP0B_001
drwx------ app_48   app_48            2014-10-10 00:21 MT
drwx------ app_44   app_44            2014-10-09 03:29 SpeedSoftware
drwx------ app_39   app_39            2014-10-12 21:52 Tencent
drwx------ app_133  app_133           2014-10-09 06:11 ThunderDownload
drwx------ app_62   app_62            2014-10-15 15:39 UCDownloads
drwxr-xr-x root     root              2014-10-13 02:32 anmpp
-rw-rw-rw- shell    shell      790506 2014-10-08 03:27 anmpp.apk
-rw-rw-rw- root     root     22754864 2014-10-13 02:37 anmpp.tar.bz2
-rw-rw-rw- root     root     23414820 2014-10-13 02:32 anmpp.zip
drwxrwxrwx root     root              2014-04-14 16:10 apktool
drwxrwxrwx root     root              2014-04-14 16:12 autonavidata60
drwx------ app_88   app_88            2014-10-10 00:25 backups
drwx------ app_75   app_75            2014-10-11 18:17 baidu
-rw-rw-rw- root     root      1686753 2014-10-13 22:32 bin.zip
drwx------ app_127  app_127           2014-10-05 17:22 center.com.eg.android.Ali                                                                             payGphone
drwx------ app_127  app_127           2014-10-05 17:22 com.eg.android.AlipayGpho                                                                             ne
-rw------- app_128  app_128      2566 2014-10-05 17:22 com.taobao.taobaohttpd
-rw------- app_128  app_128      2454 2014-10-15 22:22 com.taobao.taobaohttpdns
drwx------ app_52   app_52            2014-10-13 22:40 documents
-rw------- app_103  app_103        62 2014-10-09 21:01 exports
drwx------ app_87   app_87            2014-10-06 17:18 freedownfile
drwxrwxr-x shell    shell             2014-10-13 06:02 fsmount
drwxrwxrwx root     root              2014-10-15 14:37 install
drwxrwxrwx root     root              2014-04-14 16:14 mapbarnavi
drwxrwxrwx root     root              2014-04-17 22:12 msf
drwxrwxr-x root     root              2014-10-11 21:13 netboot
drwxrwxrwx root     root              2014-10-05 18:56 qvmov
drwxrwxrwx root     root              2014-10-05 18:55 readers
drwx------ app_50   app_50            2014-10-05 20:56 romtoolbox
drwx------ app_33   app_33            2014-10-06 03:01 sogou
drwxrwxrwx root     root              2014-10-06 01:21 sys-back
drwx------ app_128  app_128           2014-10-09 04:42 taobao
-rw------- app_110  app_110         0 2014-10-15 14:55 temp-498104037.tmp
-rw------- app_110  app_110         0 2014-10-15 14:54 temp340392331.tmp
drwx------ app_16   app_16            2014-10-07 14:42 tempdat
drwx------ app_119  app_119           2014-10-05 17:22 tencent
drwxrwxrwx shell    shell             2014-10-13 21:12 test
-rw-rw-rw- root     root      2266345 2014-10-16 06:21 调试版_tiny-pxe-server.apk
似乎权限很乱
不过就是这么乱  却是没问题
至于红米的sd路径权限
貌似 清一色的 rw-rw-  sdcard_rw
不过 那个nfs服务一点问题没有
http服务也有权限问题
权限怎么弄???
难道重新编译http 加入root运行特权??
那么dnsmasq也要重新编译一个root运行的??
还是修改配置和参数??
另外测试了一下 servers ultimate 最新版
结果是用里面的pxe 能启动grub4dos 但是卡载try blocksize 那儿 不过想必启动pxelinux.0 ipxe应该没问题
grub4dos应该对proxydhcp支持不怎么样了


pxe有两个参数
一个-u username  一个-g groupname
再看https的配置文件也有两个参数
User ***
Group ***
是控制http 用什么身份运行的
https 我启动他 没什么参数
就是https -f /mnt/sdcard/.pxe/http.conf
谁能告诉我  这些地方的user 和 group怎么处理呀???
我是刚好 给sd卡换了文件系统 导致这种情况没有发生
而vfat文件系统就难说了
坐等高手来解答


pxe的user 或者指定为root 或shell  而group指定为sdcard_rw
https的user只能是shell
          group sdcard_rw




                                                                          



作者: 510819776    时间: 2014-10-15 23:26
PE168 发表于 2014-10-15 17:44
关注中,我测试也没成功.貌似是连上了手机,手机ip也出来了,但找不到网启菜单.


pxe -F 192.168.2.2,192.168.2.50 -p 0 --dhcp-no-override --enable-tftp --tftp-root=/mnt/sdcard/.pxe/tftp -M g4d.0
pxe -F 192.168.2.52,proxy -p 0 --dhcp-no-override --enable-tftp --tftp-root=/mnt/sdcard/.pxe/tftp --pxe-service=0,Made-by-guo4qing,ipxe
这两条命令试一试
如果提示tftp权限不足
可以尝试加入  -u root/shell  -g sdcard_rw

作者: jxf268    时间: 2014-10-15 23:38
曲线一下,在sdcard上建一个 Linux分区格式的img,然后挂载到mnt/nfs/下,这样nfs文件夹下文件的权限就都可以修改了。
作者: 510819776    时间: 2014-10-15 23:58
jxf268 发表于 2014-10-15 23:38
曲线一下,在sdcard上建一个 Linux分区格式的img,然后挂载到mnt/nfs/下,这样nfs文件夹下文件的权限就都可 ...

不行的
这里是要tftp和http的目录可读写
再说了挂载img干嘛??
添加修改启动都麻烦
而且不是所有手机内核都支持img的挂载的
估计就是 user和group的问题
明天在用 红米note试试看吧

作者: jxf268    时间: 2014-10-16 00:53
510819776 发表于 2014-10-15 23:58
不行的
这里是要tftp和http的目录可读写
再说了挂载img干嘛??

你现在不就是因为权限和用户组改不了吗? 我的意思是tftp和http的目录也放到那个img里去,挂载用busybox mount的命令,手机自带的mount挂不上,那个img里的分区是EXT3格式的,这样挂载后,权限用户组不就可以修改了,然后写个脚本就可以启动相关服务测试了吧!要不然现在大家都要把sd卡格式化hfsx文件系统才能进行测试。




作者: 510819776    时间: 2014-10-16 01:21
本帖最后由 510819776 于 2014-10-16 01:36 编辑
jxf268 发表于 2014-10-16 00:53
你现在不就是因为权限和用户组改不了吗? 我的意思是tftp和http的目录也放到那个img里去,挂载用busybox  ...


不是改不了 可以改
但是我不知道改成什么
portmap 和unfsd 无需更改 可以完美使用
而pxe启动的关键是dnsmasq
dnsmasq的参数有-u username -g groupname
dnsmasq的默认用户是nobody

同时http服务的配置文件 也提供了user 和group的选项
http似乎不能以user root身份运行 而group我不知道填写什么??sdcard_rw 还是别的??
我手机上http服务是user shell group root 工作良好

我的sd卡不是vfat文件系统
我发布的软件 都在我自己手机上测试过的
今天测试了红米note android 4.4.2才发现 权限问题的
因为sd格式化为hfsx文件系统 所以不存在权限问题

事实上我的手机有内置空间  是fat文件系统
不过我是在内核中 也就是init.rc的阶段就挂载了它
它上面的文件 ls -l 全部都是 root root
我想和mount sd的参数有关系
关键是我不知道 那些参数
为了一个pxe 弄出一个img挂载 那不现实
而且 现在的手机端pxe软件 有buker lite pxe 和servers ultimate 可以用
或者动手能力强的 直接用arm 版本的dnsmasq
然后自己用一个脚本执行软件 写好运行参数 以后直接运行 也很方便的
我的参数已经贴出来了 哈哈


作者: heyongto2008    时间: 2014-10-16 10:46
支持一个吧!
作者: chenall    时间: 2014-10-16 14:16
自己用命令行启动成功了,谢谢楼主提供的资料........

有一点需要注意,要想启动成功,最好是保证启动时手机的屏幕是开着的...


作者: 510819776    时间: 2014-10-16 16:32
chenall 发表于 2014-10-16 14:16
自己用命令行启动成功了,谢谢楼主提供的资料........

有一点需要注意,要想启动成功,最好是保证启动时手 ...

C大 用的哪条命令??
我对那个apk再一次修改
这一次会判断 执行命令是否成功
会给出 进程是否开启的提示
而且我增加了一个输入框  可以为 内置的dnsmasq增加参数
默认的两种命令是
pxe -F $IP,proxy -p 0 --dhcp-no-override --enable-tftp --tftp-root=$SDCARD/.pxe/tftp --pxe-service=0,Made-by-gruo4qing,ipxe
pxe -F $IP1,$IP2 -p 0 --dhcp-no-override --enable-tftp --tftp-root=$SDCARD/.pxe/tftp -M g4d.0
启动失败 可以尝试加入-u root -g root 或-u nobody -g nobody
或其他的参数 根据需要把
dnsmasq命令行的参数列表
Usage: dnsmasq [options]



Valid options are:

-a, --listen-address=<ipaddr>           Specify local address(es) to listen on.

-A, --address=/<domain>/<ipaddr>        Return ipaddr for all hosts in specified domains.

-b, --bogus-priv                        Fake reverse lookups for RFC1918 private address ranges.

-B, --bogus-nxdomain=<ipaddr>           Treat ipaddr as NXDOMAIN (defeats Verisign wildcard).

-c, --cache-size=<integer>              Specify the size of the cache in entries (defaults to 150).

-C, --conf-file=<path>                  Specify configuration file (defaults to /etc/dnsmasq.conf).

-d, --no-daemon                         Do NOT fork into the background: run in debug mode.

-D, --domain-needed                     Do NOT forward queries with no domain part.

-e, --selfmx                            Return self-pointing MX records for local hosts.

-E, --expand-hosts                      Expand simple names in /etc/hosts with domain-suffix.

-f, --filterwin2k                       Don't forward spurious DNS requests from Windows hosts.

-F, --dhcp-range=<ipaddr>,...           Enable DHCP in the range given with lease duration.

-g, --group=<groupname>                 Change to this group after startup (defaults to dip).

-G, --dhcp-host=<hostspec>              Set address or hostname for a specified machine.

    --dhcp-hostsfile=<path>             Read DHCP host specs from file.

    --dhcp-optsfile=<path>              Read DHCP option specs from file.

    --tag-if=tag-expression             Evaluate conditional tag expression.

-h, --no-hosts                          Do NOT load /etc/hosts file.

-H, --addn-hosts=<path>                 Specify a hosts file to be read in addition to /etc/hosts.

-i, --interface=<interface>             Specify interface(s) to listen on.

-I, --except-interface=<interface>      Specify interface(s) NOT to listen on.

-j, --dhcp-userclass=set:<tag>,<class>  Map DHCP user class to tag.

    --dhcp-circuitid=set:<tag>,<circuit>Map RFC3046 circuit-id to tag.

    --dhcp-remoteid=set:<tag>,<remote>  Map RFC3046 remote-id to tag.

    --dhcp-subscrid=set:<tag>,<remote>  Map RFC3993 subscriber-id to tag.

-J, --dhcp-ignore=tag:<tag>...          Don't do DHCP for hosts with tag set.

    --dhcp-broadcast[=tag:<tag>...]     Force broadcast replies for hosts with tag set.

-k, --keep-in-foreground                Do NOT fork into the background, do NOT run in debug mode.

-K, --dhcp-authoritative                Assume we are the only DHCP server on the local network.

-l, --dhcp-leasefile=<path>             Specify where to store DHCP leases (defaults to /data/misc/dhcp/dnsmasq.leases).

-L, --localmx                           Return MX records for local hosts.

-m, --mx-host=<host_name>,<target>,<prefSpecify an MX record.

-M, --dhcp-boot=<bootp opts>            Specify BOOTP options to DHCP server.

-n, --no-poll                           Do NOT poll /etc/resolv.conf file, reload only on SIGHUP.

-N, --no-negcache                       Do NOT cache failed search results.

-o, --strict-order                      Use nameservers strictly in the order given in /etc/resolv.conf.

-O, --dhcp-option=<optspec>             Specify options to be sent to DHCP clients.

    --dhcp-option-force=<optspec>       DHCP option sent even if the client does not request it.

-p, --port=<integer>                    Specify port to listen for DNS requests on (defaults to 53).

-P, --edns-packet-max=<integer>         Maximum supported UDP packet size for EDNS.0 (defaults to 4096).

-q, --log-queries                       Log DNS queries.

-Q, --query-port=<integer>              Force the originating port for upstream DNS queries.

-R, --no-resolv                         Do NOT read resolv.conf.

-r, --resolv-file=<path>                Specify path to resolv.conf (defaults to /etc/resolv.conf).

    --servers-file=<path>               Specify path to file with server= options

-S, --server=/<domain>/<ipaddr>         Specify address(es) of upstream servers with optional domains.

    --rev-server=<addr>/<prefix>,<ipaddrSpecify address of upstream servers for reverse address queries

    --local=/<domain>/                  Never forward queries to specified domains.

-s, --domain=<domain>[,<range>]         Specify the domain to be assigned in DHCP leases.

-t, --mx-target=<host_name>             Specify default target in an MX record.

-T, --local-ttl=<integer>               Specify time-to-live in seconds for replies from /etc/hosts.

    --neg-ttl=<integer>                 Specify time-to-live in seconds for negative caching.

    --max-ttl=<integer>                 Specify time-to-live in seconds for maximum TTL to send to clients.

-u, --user=<username>                   Change to this user after startup. (defaults to nobody).

-U, --dhcp-vendorclass=set:<tag>,<class>Map DHCP vendor class to tag.

-v, --version                           Display dnsmasq version and copyright information.

-V, --alias=<ipaddr>,<ipaddr>,<netmask> Translate IPv4 addresses from upstream servers.

-W, --srv-host=<name>,<target>,...      Specify a SRV record.

-w, --help                              Display this message. Use --help dhcp for known DHCP options.

-x, --pid-file=<path>                   Specify path of PID file (defaults to /data/dnsmasq.pid).

-X, --dhcp-lease-max=<integer>          Specify maximum number of DHCP leases (defaults to 1000).

-y, --localise-queries                  Answer DNS queries based on the interface a query was sent to.

-Y, --txt-record=<name>,<txt>[,<txt]    Specify TXT DNS record.

    --ptr-record=<name>,<target>        Specify PTR DNS record.

    --interface-name=<name>,<interface> Give DNS name to IPv4 address of interface.

-z, --bind-interfaces                   Bind only to interfaces in use.

-Z, --read-ethers                       Read DHCP static host information from /etc/ethers.

-1, --enable-dbus[=<busname>]           Enable the DBus interface for setting upstream servers, etc.

-2, --no-dhcp-interface=<interface>     Do not provide DHCP on this interface, only provide DNS.

-3, --bootp-dynamic[=tag:<tag>]...      Enable dynamic address allocation for bootp.

-4, --dhcp-mac=set:<tag>,<mac address>  Map MAC address (with wildcards) to option set.

    --bridge-interface=<iface>,<alias>..Treat DHCP requests on aliases as arriving from interface.

-5, --no-ping                           Disable ICMP echo address checking in the DHCP server.

-6, --dhcp-script=<path>                Shell script to run on DHCP lease creation and destruction.

    --dhcp-luascript=path               Lua script to run on DHCP lease creation and destruction.

    --dhcp-scriptuser=<username>        Run lease-change scripts as this user.

-7, --conf-dir=<path>                   Read configuration from all the files in this directory.

-8, --log-facility=<facilty>|<file>     Log to this syslog facility or file. (defaults to DAEMON)

-9, --leasefile-ro                      Do not use leasefile.

-0, --dns-forward-max=<integer>         Maximum number of concurrent DNS queries. (defaults to 150)

    --clear-on-reload                   Clear DNS cache when reloading /etc/resolv.conf.

    --dhcp-ignore-names[=tag:<tag>]...  Ignore hostnames provided by DHCP clients.

    --dhcp-no-override                  Do NOT reuse filename and server fields for extra DHCP options.

    --enable-tftp[=<intr>[,<intr>]]     Enable integrated read-only TFTP server.

    --tftp-root=<dir>[,<iface>]         Export files by TFTP only from the specified subtree.

    --tftp-unique-root                  Add client IP address to tftp-root.

    --tftp-secure                       Allow access only to files owned by the user running dnsmasq.

    --tftp-max=<integer>                Maximum number of conncurrent TFTP transfers (defaults to 50).

    --tftp-no-blocksize                 Disable the TFTP blocksize extension.

    --tftp-lowercase                    Convert TFTP filenames to lowercase

    --tftp-port-range=<start>,<end>     Ephemeral port range for use by TFTP transfers.

    --log-dhcp                          Extra logging for DHCP.

    --log-async[=<integer>]             Enable async. logging; optionally set queue length.

    --stop-dns-rebind                   Stop DNS rebinding. Filter private IP ranges when resolving.

    --rebind-localhost-ok               Allow rebinding of 127.0.0.0/8, for RBL servers.

    --rebind-domain-ok=/<domain>/       Inhibit DNS-rebind protection on this domain.

    --all-servers                       Always perform DNS queries to all servers.

    --dhcp-match=set:<tag>,<optspec>    Set tag if client includes matching option in request.

    --dhcp-alternate-port[=<ports>]     Use alternative ports for DHCP.

    --naptr-record=<name>,<naptr>       Specify NAPTR DNS record.

    --min-port=<port>                   Specify lowest port available for DNS query transmission.

    --dhcp-fqdn                         Use only fully qualified domain names for DHCP clients.

    --dhcp-generate-names[=tag:<tag>]   Generate hostnames based on MAC address for nameless clients.

    --dhcp-proxy[=<ipaddr>]...          Use these DHCP relays as full proxies.

    --dhcp-relay=<local-addr>,<server>[,Relay DHCP requests to a remote server

    --cname=<alias>,<target>            Specify alias name for LOCAL DNS name.

    --pxe-prompt=<prompt>,[<timeout>]   Prompt to send to PXE clients.

    --pxe-service=<service>             Boot service for PXE menu.

    --test                              Check configuration syntax.

    --add-mac                           Add requestor's MAC address to forwarded DNS queries.

    --add-subnet=<v4 pref>[,<v6 pref>]  Add requestor's IP subnet to forwarded DNS queries.

    --proxy-dnssec                      Proxy DNSSEC validation results from upstream nameservers.

    --dhcp-sequential-ip                Attempt to allocate sequential IP addresses to DHCP clients.

    --conntrack                         Copy connection-track mark from queries to upstream connections.

    --dhcp-client-update                Allow DHCP clients to do their own DDNS updates.

    --enable-ra                         Send router-advertisements for interfaces doing DHCPv6

    --dhcp-duid=<enterprise>,<duid>     Specify DUID_EN-type DHCPv6 server DUID

    --host-record=<name>,<address>      Specify host (A/AAAA and PTR) records

    --dns-rr=<name>,<RR-number>,[<data>]Specify arbitrary DNS resource record

    --bind-dynamic                      Bind to interfaces in use - check for new interfaces

    --auth-server=<NS>,<interface>      Export local names to global DNS

    --auth-zone=<domain>,[<subnet>...]  Domain to export to global DNS

    --auth-ttl=<integer>                Set TTL for authoritative replies

    --auth-soa=<serial>[,...]           Set authoritive zone information

    --auth-sec-servers=<NS>[,<NS>...]   Secondary authoritative nameservers for forward domains

    --auth-peer=<ipaddr>[,<ipaddr>...]  Peers which are allowed to do zone transfer

    --ipset=/<domain>/<ipset>[,<ipset>..Specify ipsets to which matching domains should be added

    --synth-domain=<domain>,<range>,[<prSpecify a domain and address range for synthesised names

    --dnssec                            Activate DNSSEC validation

    --trust-anchor=<domain>,[<class>],..Specify trust anchor key digest.

    --dnssec-debug                      Disable upstream checking for DNSSEC debugging.

    --dnssec-check-unsigned             Ensure answers without DNSSEC are in unsigned zones.

    --dnssec-no-timecheck               Don't check DNSSEC signature timestamps until first cache-reload

    --ra-param=<interface>,[high,|low,]<Set priority, resend-interval and router-lifetime

    --quiet-dhcp                        Do not log routine DHCP.

    --quiet-dhcp6                       Do not log routine DHCPv6.

    --quiet-ra                          Do not log RA.

    --local-service                     Accept queries only from directly-connected networks



按道理应该是没问题的??
安装前一定要删除 自己的手机存储或sd卡上的.pxe文件夹 还是我自己添加代码去判断??
今天用 一个联想的手机测试了 刷的是小米系统 android 2.3.6
用的是 128M的sd卡  手机自动格式化
然后用我的app 删除之前的sd上的.pxe文件夹
测试一切功能ok
http的配置文件也做了改动
另外 我用wifi信号弱的安卓测试
同样的命令  在启动g4d.0时候
手机必须离路由很近 因为g4d.0需要开启dhcp服务才能正常工作
而路由开启了dhcp
这样的结果就是 如果手机的响应没有路由快 就会启动失败
所以手机用g4d模式启动尽量离无线路由器近一些
至于屏幕是否亮着问题不大
只需要设置wifi的休眠策略为永不即可
或者我要在软件加入??
现在测试的 安卓2.3.6 和安卓4.0都ok
sd卡权限问题解决了
不知道 安卓4.4.2是什么情况了??
红米note 4G增强版 似乎权限很诡异
2.3的sd卡是system.sdcard_r
4.0的不知道
4.4.2的似乎是****.sdcard_rw


作者: 510819776    时间: 2014-10-16 16:46
510819776 发表于 2014-10-16 16:32
C大 用的哪条命令??
我对那个apk再一次修改
这一次会判断 执行命令是否成功

这种 编写arm的二进制elf程序的安卓gui程序
完全不需要什么java知识
主要就是 反复利用busybox和安卓内置的那些命令
另外还有谁会易安卓的
要不要把代码发上来 大家一起来改进
不得不说 这个armv7a的dnsmasq程序很给力
只要参数正确  一般是问题不大的

另外grub4dos在dhcpproxy模式下 似乎有很大问题
经过研究发现buker pxe lite和servers ultimate的pxe服务都是采用的dhcpproxy的模式来网络启动的
相当于pxe -F $IP,proxy -p 0 --dhcp-no-override --enable-tftp --tftp-root=$SDCARD/.pxe/tftp --pxe-service=0,Made-by-gruo4qing,ipxe   这种方式 也就是说手机本身不提供dhcp 分配ip的服务
只是提供pxe和tftp服务
grub4dos就会死在这里
而pxelinux.0  ipxe都对这种方式完美支持  这种方式适合大部分的普通无线路由器 开启了dhcp
这里dnsmasq虽然可以提供dhcp服务 不过能不能和无线路由器抢到先机 从而启动成功 是个悬念
我自己的路由器wr720n 开启了dhcp服务
用我安卓4.0 和 安卓2.3都测试  dnsmasq 开启dhcp后启动grub4dos成功 出菜单也快
其他路由器 我没有 难说
不过如果非要用dhcp方式来pxe的话 手机还是离路由器近一些比较好

作者: chenall    时间: 2014-10-16 17:04
510819776 发表于 2014-10-16 16:46
这种 编写arm的二进制elf程序的安卓gui程序
完全不需要什么java知识
主要就是 反复利用busybox和安卓内 ...

grub4dos 的问题我正在修复,

可以试试以下测试版,,使用proxy应该没有问题了.至少我自己测试没有发现问题.

http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
作者: 510819776    时间: 2014-10-16 17:13
chenall 发表于 2014-10-16 17:04
grub4dos 的问题我正在修复,

可以试试以下测试版,,使用proxy应该没有问题了.至少我自己测试没有发现问 ...

如果grub4dos的proxy支持没有问题
那么servers ultimate或buker pxe lite 应该都是可以完美启动了吧??
如果他们还是不行 估计就是自带的tftp服务某些地方支持不好了

作者: nao95    时间: 2014-10-16 18:12

作者: 510819776    时间: 2014-10-17 04:46
chenall 发表于 2014-10-16 17:04
grub4dos 的问题我正在修复,

可以试试以下测试版,,使用proxy应该没有问题了.至少我自己测试没有发现问 ...

测试了grub4dos的proxy
用我自己的apk 已经没问题了
不过用servers ultimate 6.3.10 pxe服务测试不行 出不来菜单
至于bukerpxe lite就不说了 看了下apk文件
就是用了一个精简了tftp服务的dnsmasq 一个改名的busybox 一个tftpd 组成
而且感觉 这货应该对tftp做了限制
不过我的软件已经和他的界面相似了
刚刚用你今天发布的grub4dos 启动到了菜单
然后我手动输入 map --mem /pe.iso (hd32)
******
之后大约1M/s的加载速度
然后进入了win7pe的桌面
速度 没法和ipxe比呀
我内置的http服务 配合ipxe 启动sanboot http://192.168.2.162/pe.iso 速度可达到6M/s 启动100M pe 30秒进入桌面
iscsi 方式配合ipxe 似乎也差不多这个速度
不过iscsi 启动win7pe 滚动条那儿好久 不知道在干嘛
但是最终还是进入了win7pe桌面
启动ubuntu 14.04的livecd 也就差不多1分钟而已
可惜今天的版本grub4dos还是不能和servers ultimate做朋友 依然不见菜单 而进入了命令行
看来这个app只要好好的开发一下
不比tiny pxe server差
只要把bug都解决了 应该是 安卓上最好的pxe服务软件了


作者: 510819776    时间: 2014-10-17 04:50
chenall 发表于 2014-10-16 14:16
自己用命令行启动成功了,谢谢楼主提供的资料........

有一点需要注意,要想启动成功,最好是保证启动时手 ...

今天发布的版本 已经加入了 屏幕常亮了
而且可以自定义tftp和bootfile
还可以选择 proxydhcp 还是完整dhcp启动了
内置了你今天发布的g4d
不过感觉g4d在手机上真的没有优势
而ipxe 反而速度很快

作者: ren001    时间: 2014-10-17 10:43
16日的测试版本IPXe http开启 成功一次 第二天程序丢了 也重装不上 后来装上也开启不了各服务
作者: ren001    时间: 2014-10-17 12:02
17日的版本  换小平板测  各服务开启巴正常  重启后服务切均无法开启
作者: hy5425    时间: 2014-10-17 13:59
14日的可以连通服务器并获得IP,17日的无法连接到服务器(1-1).
作者: hy5425    时间: 2014-10-17 14:14
能不能以buker pxe lite为基础进行改造?加入HTTP等服务,好像buker pxe lite的成功率要高一些,只是传输速度太慢.
作者: 510819776    时间: 2014-10-17 14:28
ren001 发表于 2014-10-17 10:43
16日的测试版本IPXe http开启 成功一次 第二天程序丢了 也重装不上 后来装上也开启不了各服务

成功开启过  说明没问题
把pxe文件夹删除 重新进程序
有.pxe文件夹也删了

试试17号的  
我测试2.3  4.0安卓都无问题
作者: 510819776    时间: 2014-10-17 15:00
hy5425 发表于 2014-10-17 14:14
能不能以buker pxe lite为基础进行改造?加入HTTP等服务,好像buker pxe lite的成功率要高一些,只是传输速度 ...

buker为基础 不可能
我研究过buker 这货和我的app提供pxe服务的都是dnsmasq
不过buker的dnsmasq是阉割版 不含tftp功能 于是buker找来了别人编译的两种版本的busybox 一个提供tftp服务 一个提供tcpsvd服务
所以从原理上来说  我和他的app没有区别  
我的app tftp由dnsmasq提供 性能完全有保证
实不相瞒  buker内置dnsmasq我手机无法运行
另外pxe还有另一种实现方式   光一个busybox就够了 不过要完整版的  
如果不需要g4d做网络引导   其实servers ultimate是个不错的选择
目前为止 g4d依然不支持server u*****
另外 我因为没有太多手机测试  只是测试2.3 4.0
你不能运行服务  调试一下 看看哪的问题
既然成功过 一般就是参数问题  稍加修改 也一定能用
我的app 网络启动核心就是一个dnsmasq  这一点所有版本一样  不同的只是参数
失败的原因
1.新安装程序  要把以前版本的.pxe  .nfs或pxe删除或改名
打开程序后
终端输入su
ls /data/data/com.pxe/pxe
如果提示文件不存在 就是这个原因
2.程序无法获取正确存储目录
打开程序后 打开终端
su
busybox env
echo $EXTEN_ STORAGE
看手机的默认存储路径是否存在 以及和手机存储路径是否一致
3.手机固件不支持文件夹软链接
程序打开后终端输入
su
ls -l /lis/
ls /web
如果能看到portmap pxe 等文件说明支持
否则如果提示/lis不存在
则固件不支持目录软链接

4.以前老版本采用mount -o bind方式
我也不知道是不是所有手机都支持
不过软链接 没道理不支持

5.处理器平台不兼容  这个无能为力
6.程序参数不争取
那么打开程序后终端手动输入
su
/lis/pxe ****************
看是否能成功
作者: 510819776    时间: 2014-10-17 17:36
hy5425 发表于 2014-10-17 14:14
能不能以buker pxe lite为基础进行改造?加入HTTP等服务,好像buker pxe lite的成功率要高一些,只是传输速度 ...

我把buker pxe lite的apk做了一下修改
替换了里面低版本的太监dnsmasq
换上了完整版dnsmasq
同时修改了程序的默认配置
我弄了一个g4d进去
修改后的的bukerpxe里面配置sd卡路径和引导文件的选项 在我手机上测试已经无效
还有就是 程序自带的打开有效 但是关闭无效
想启动其他的引导器 就把该引导器改名g4d.0 放bukerpxelite/tftp目录下
如果tftp的路径不对
修改/data/data/com.buker*****/conf/ltsp.conf
链接:http://pan.baidu.com/s/1mghy4R2 密码:2miu


作者: 510819776    时间: 2014-10-17 21:43
ren001 发表于 2014-10-17 12:02
17日的版本  换小平板测  各服务开启巴正常  重启后服务切均无法开启

重启后服务无法开启??
这也太诡异了啊???
不至于吧???
奇怪的平板???
就这样了
反正核心就是那个 dnsmasq程序
直接拷贝到/system/bin/下面  改名pxe  弄好权限
然后 找个支持脚本的终端执行器
执行
加上你的手机ip是192.168.2.162
pxe -F 192.168.2.162,proxy -p 0 --dhcp-no-override --enable-tftp --tftp-root=/sdcard/tftp --pxe-service=0,Made-in-CN,g4d
pxe -F 192.168.2.1,192.168.2.10 -p 0 --dhcp-no-override --enable-tftp --tftp-root=/sdcard/tftp -M g4d.0
对 就就这两条命令 一般如果路由开启了dhcp
常用的是第一条命令 第一条命令的引导文件是g4d.0  而不是g4d

作者: lightpeter    时间: 2014-10-17 21:49
真是**X!
作者: ren001    时间: 2014-10-17 22:44
平板卸app 删pxe文件夹  再装运行服务正常 退出  再运行也正常  重启后仍不正常
作者: ren001    时间: 2014-10-17 22:59
在终端试了下
作者: ren001    时间: 2014-10-17 23:03
找不到文件 应该是平板或软件问题
作者: 510819776    时间: 2014-10-18 01:19
ren001 发表于 2014-10-17 22:44
平板卸app 删pxe文件夹  再装运行服务正常 退出  再运行也正常  重启后仍不正常

卸app 删pxe 重装app一切ok 重启就不行了????
这么诡异??
这样 你重启在确认pxe无法开启的情况下 在打开程序的前提下
终端运行
su
ls /data/data/com.pxe/
看看com.pxe文件夹下有没有pxe portmap unfsd https等文件
如果有 看看pxe这个文件是有可执行权限
再看看手机的 根目录  /  是否可写
如果/目录可写  而文件没有执行权限 应该是我的app问题
否则这情况应该是 root不完美导致
另外 我今天发布了一个 只包含pxe 的软件
你测试一下 应该是没问题的
我在我4.0 和 2.3的安卓上测试 重启依然可用
另外你的平板有没有测试过服务启动成功 是否能网络启动呢??



作者: ren001    时间: 2014-10-18 08:28
我测试平板为原道n70 hd 系统4.11 17日的安装后卸载后删pxe文件夹 重装才可以正常运行网络也正常  重启后 com.pxe下只有lib和cache文件夹
作者: ren001    时间: 2014-10-18 08:32
另一手机4.0上的你说的三个文件夹改名安装也不行 服务失败 2.3的手机测试失败 打不开
作者: qqnngg    时间: 2014-10-18 08:43
我的 LG P880  V4.0 成功启动 。
作者: ren001    时间: 2014-10-18 09:16
新的pxe18日的4.11平板正并常  重启也正常  4.0的手机不行 我手动打开安装后的脚本 开启正常了 建议几个apk分别制作 便于调试
作者: ren001    时间: 2014-10-18 09:20
更正一下我的手机系统原以为是4.0现看一下是4.12
作者: 510819776    时间: 2014-10-18 14:21
ren001 发表于 2014-10-18 08:28
我测试平板为原道n70 hd 系统4.11 17日的安装后卸载后删pxe文件夹 重装才可以正常运行网络也正常  重启后 c ...

应该是busybox版本问题  


作者: 510819776    时间: 2014-10-18 14:34
ren001 发表于 2014-10-18 08:32
另一手机4.0上的你说的三个文件夹改名安装也不行 服务失败 2.3的手机测试失败 打不开

2.3的安卓软件都打不开  这也太坑爹了吧
你手机4.1 服务打不开??
有没有测试手动输入 引导文件和tftp路径?
看来  易安卓编程一点不容易
还有添加额外参数 -g sdcard_rw
之类??
不知道你手动开启用的什么命令
程序如果指定引导文件 路径成功
说明 程序获取存储路径错误
2.3软件都打不开 表示无语
作者: ren001    时间: 2014-10-18 14:41
手动我用re管理器 点击pxe 选使用linux脚本处理器打开
作者: ren001    时间: 2014-10-18 14:44
又换了一个2.3手机 一
作者: ren001    时间: 2014-10-18 14:46
应用运行了 服务开不了 想装个re管理器 没找到合适的版本
作者: hy5425    时间: 2014-10-18 16:45
18日的版本,tftp目录怎么设置?tftp目录在sdcard目录下,我设置成/sdcard,/sdcard/,sdcard/,sdcard服务都不能启动,提示设置错误.设置成mnt/服务可启动成功,但引导文件都在tftp目录下当然启动后找不到引导文件.
作者: 510819776    时间: 2014-10-18 17:28
hy5425 发表于 2014-10-18 16:45
18日的版本,tftp目录怎么设置?tftp目录在sdcard目录下,我设置成/sdcard,/sdcard/,sdcard/,sdcard服务都不能 ...

用18号的详细调试版  如果启动失败 会输入错误的命令
这样方便我查错
tftp目录就是你的网络启动文件夹目录
你可以试试
/sdcard/tftp
或者
/mnt/sdcard/tftp
这个路径不同手机是不同的
比如有的手机是/mnt/storage/laygac
你用re文件管理器 应该能看到完整路径才对??
等稳定了 给这个程序加 配置文件保存功能
另外18号的版本 即便是不填写 引导文件和tftp目录 直接点击开启pxe 也是可以的
不过这样就是默认启动内置g4d
如果你不填写tftp目录 只是填写引导文件
那么使用内置的默认目录  你需要把引导文件拷贝到 tftp目录里面


作者: ren001    时间: 2014-10-18 19:52
本帖最后由 ren001 于 2014-10-18 20:02 编辑

4.12正常 2.3不加目录路径失败命令为  /data/data/com.dnsmasq/pxe  -p 0 --dhcp-no-override --enable-tftp --tftp-root=mnt/sdcard/tftp -F 192.168.1.7 ,proxy --pxe-service=0,made-by-guo4qing,g4d
加mnt和不加mnt也都失败
作者: hy5425    时间: 2014-10-18 20:17
510819776 发表于 2014-10-18 17:28
用18号的详细调试版  如果启动失败 会输入错误的命令
这样方便我查错
tftp目录就是你的网络启动文件夹 ...

tftp文件路径就是/mnt/sdcard/tftp但在软件中设置后提示:开启pxe服务失败,设置错误??另:我这儿不填写引导文件和tftp目录,直接点击开启pxe,服务也不能启动。
作者: 510819776    时间: 2014-10-19 03:02
hy5425 发表于 2014-10-18 20:17
tftp文件路径就是/mnt/sdcard/tftp但在软件中设置后提示:开启pxe服务失败,设置错误??另:我这儿不填 ...

用19号的调试版吧
把调试信息贴上
19号的调试信息更全面
会把执行pxe服务的命令出错信息显示出来
这东西一看就知道怎么应对了
作者: ren001    时间: 2014-10-19 15:04
应该是sd卡的权限问题  现我http://192.168.1.102/boot.ipxe...ok  could not open san device:error 0*420e2001
作者: 510819776    时间: 2014-10-19 15:44
ren001 发表于 2014-10-19 15:04
应该是sd卡的权限问题  现我http://192.168.1.102/boot.ipxe...ok  could not open san device:error 0*420 ...

你已经启动成功了
我提供的boot.ipxe只是个样本 需要tftp目录有pe.iso
自己用文本编辑器修改boot.ipxe即可

作者: ren001    时间: 2014-10-19 16:54
我把pe.iso放到和boot.ipxe一个目录下 别的机器可以下载http://192.168.1.102/pe.iso boot.ipxe也修改为 sanboot http://192.168.1.102/pe.iso错误依然
作者: ren001    时间: 2014-10-19 17:54
http的sanboot必须依靠nfs和iscsi吗
作者: ren001    时间: 2014-10-19 18:24
vmlinuz和initrd.lz这两个文件没有会影响sanboot吗
作者: 510819776    时间: 2014-10-19 23:28
ren001 发表于 2014-10-19 18:24
vmlinuz和initrd.lz这两个文件没有会影响sanboot吗

sanboot 我们会用到的只有http和iscsi以及aoe
用法是ipxe命令输入
sanboot iscsi:IP:::1:xxx
sanboot http://IP/xxx.iso
sanboot aoe:e0.0
nfs是linux的网络共享 相当于windows的cifs网络共享
虽然pxe配合安卓的samba 也就是cifs也能启动linux的livecd 但是要修改linux内核 效率也差一些
如果不折腾linux livecd的网络启动与安装
nfs对普通用户基本没意义
因为windows系统要支持nfs需要手动配置一些东西 速度比windows的共享要快不少
linux不需要sanboot 直接pxe+nfs就可以启动原版的linux livecd.iso
所以sanboot用于手机主要就是针对windows系统的
这里的http除了是sanboot之外 也是一种文件传输方式
用ipxe不一定非要sanboot http***
iscsi和http是两种不同的sanboot
他们没有任何依赖关系 也都不需要nfs支持



作者: ren001    时间: 2014-10-20 10:21
本帖最后由 ren001 于 2014-10-20 10:59 编辑

could not reliably determine the server's fully qualified domainname,Using127.0.0.1forServerName.百度上说加上servername localhost:80 (换127.0.0.1和19.168.4.201及www.uu.com均出错 )
作者: ren001    时间: 2014-10-20 10:32
本帖最后由 ren001 于 2014-10-20 10:58 编辑

localhost:80出错图  

2014-10-20.10.28.1413772090.png (107.82 KB, 下载次数: 349)

2014-10-20.10.28.1413772090.png

作者: chenall    时间: 2014-10-20 11:31
楼主能不能把源码上传上来一下.
作者: 510819776    时间: 2014-10-20 14:25
ren001 发表于 2014-10-20 10:32
localhost:80出错图

直接ServerName pxeserver就行了
不要加端口 这不是完整版的apache2  模块被精简
而且就算没这一行也不影响使用
作者: 510819776    时间: 2014-10-20 15:03
本帖最后由 510819776 于 2014-10-20 15:17 编辑
chenall 发表于 2014-10-20 11:31
楼主能不能把源码上传上来一下.


链接:http://pan.baidu.com/s/1i3eMP2P 密码:n52x
源码地址
用易安卓3.9或易安卓4.0都可以编译
dnsmasq参数比较多

至于nfs和http都是用配置文件控制的 没什么参数
/lis/portmap
/lis/unfsd -e /***/exports
这样就能启动unfsd了
而http是
/lis/https -f  /*****/http.conf
你是大神
由你完善 坐等完美的tiny-pxe-server诞生

另外因为本人不懂java
所以 程序全篇几乎都是 android shell和busybox shell
这可能也是导致兼容性不佳的原因
毕竟安卓提供了 自己的api
不过兼容性不好 但是执行效率却还不错


作者: chenall    时间: 2014-10-20 15:50
谢谢提供,我抽空了解一下.

看着一堆的中文,,感觉怪怪的,不太适应...

作者: hy5425    时间: 2014-10-20 21:08
20日版本:PXE-E53:No boot filename received  PXE-MOF:Exiting Intel PXE ROM. (同条件下bukerpxe-lite正常)
作者: ren001    时间: 2014-10-20 21:41
我没问题 成功了
作者: 510819776    时间: 2014-10-20 22:20
hy5425 发表于 2014-10-20 21:08
20日版本:PXE-E53:No boot filename received  PXE-MOF:Exiting Intel PXE ROM. (同条件下bukerpxe-lite ...

你的失败和我的app应该是关系不大的
我发布的所有版本 都是执行的下述命令
pxe -F 192.168.x.x,proxy -p 0 --dhcp-no-override --enable-tftp --tftp-root=/mnt/sdcard/tftp --pxe-service=0,boot-ok,g4d
如果无法启动服务 一般就是tftp目录不存在或tftp目录权限问题
如果这命令是正确被执行了 pxe就ok了
至少我测试的两部手机都是如此 安卓2.3  安卓4.0
其实pxe就是这条命令就ok了 没有多余的东西
我写的程序 就是获取手机wifi的ip sdcard路径 以及引导文件的变量 传递给最后的这条命令
如果20号的版本提示 pxe服务开启成功  而且你勾选了代理启动  
理论上说没道理会失败
如果失败了 以我的能力 分析不出问题在哪儿
您还是去用bukerpxe吧 我无能为力



这一我所有版本都是一致的 没有改动

作者: ren001    时间: 2014-10-20 22:44
本帖最后由 ren001 于 2014-10-20 22:55 编辑
ren001 发表于 2014-10-20 21:41
我没问题 成功了


4.0没加参数 pxe均无问题 2.3不行 应该卡权限问题 我感觉出问题都是sd权限问题    慢慢调试调试就好了 程序的保存也正常 出问题自己判断解决更长知识 以前买智器128m的最初的小平板 玩一段linux 不是太熟 有耐心才能成功 这是我跟帖最久的一次 谢谢你的程序
作者: ren001    时间: 2014-10-21 07:19
又试了一个4.0 三个服务正常开启 没任何问题
作者: hy5425    时间: 2014-10-21 08:38
510819776 发表于 2014-10-20 22:20
你的失败和我的app应该是关系不大的
我发布的所有版本 都是执行的下述命令
pxe -F 192.168.x.x,proxy - ...

钩选了代理启动,服务也能成功开启,提示"无法连接到服务器,请检查你的网络",相同网络环境下原版bukerpxe是正常的.
作者: chenall    时间: 2014-10-21 11:23
利用楼主给的代码修改了一下,我也整一个,简化了一下..

这个不需要busybox支持.

有兴趣的可以试下

http://pan.baidu.com/s/1pJ1BlB9

注:部份路由器可能是兼容性有问题,如果用代理模式启动失败(提示no dhcp proxy之类的),可以试试不使用proxyDHCP..

我自己测试有一些路由器,两种用不用代理都是正常的,部份路由器不可以使用代理模式.

PXEBoot.zip

537.75 KB, 下载次数: 365


作者: hy5425    时间: 2014-10-21 12:08
chenall 发表于 2014-10-21 11:23
利用楼主给的代码修改了一下,我也整一个,简化了一下..

这个不需要busybox支持.

成功了.能不能让TFTP根目录可更改并保存呢?
作者: mygamexxx    时间: 2014-10-21 12:45
本帖最后由 mygamexxx 于 2014-10-21 12:48 编辑

C大的测试成功。
但两个菜单不成功。
ipxe 和GRUB-IPXE
作者: chenall    时间: 2014-10-21 13:31
mygamexxx 发表于 2014-10-21 12:45
C大的测试成功。
但两个菜单不成功。
ipxe 和GRUB-IPXE

grub可以启动就说明没有问题

ipxe不成功是正常的,因为ipxe默认是加载了http服务器上的pe.iso文件.
作者: 510819776    时间: 2014-10-21 13:33
mygamexxx 发表于 2014-10-21 12:45
C大的测试成功。
但两个菜单不成功。
ipxe 和GRUB-IPXE

能看到g4d菜单就ok 菜单只是测试  不可用
ipxe本来就没有内置菜单
作者: 510819776    时间: 2014-10-21 16:20
chenall 发表于 2014-10-21 13:31
grub可以启动就说明没有问题

ipxe不成功是正常的,因为ipxe默认是加载了http服务器上的pe.iso文件.

C大就是C大
采用配置文件的形式来干活
我就没想到 这货能支持多个配置同时工作
另外 我测试的安卓2.3 失败  原因是pxe进程没起来
研究发现是因为 default.conf添加的group=sdcard_r 我修改为group=sdcard_rw就没问题了
估计sdcard_r/rw  这两种用户组应该能满足2.3-4.4.2的安卓需求了吧
或许可以添加个group的选项 以及判断进程pxe是否运行
还是佩服C大 硬是用dnsmasq弄出了一个菜单
c大 为啥不把默认的tftp路径改成/sdcard/***
/mnt/sdcard 我目前了解的红米note 4.4.2的默认就不是这个路径

作者: chenall    时间: 2014-10-21 16:29
510819776 发表于 2014-10-21 16:20
C大就是C大
采用配置文件的形式来干活
我就没想到 这货能支持多个配置同时工作

我这里没有2.3的设备可以测试

麻烦你测试一下,在不修改默认配置文件的情况下,使用附加参数添加--group=sdcard_rw看看能不能工作(这个问题其实也不是很大,只要再获取一下sd卡需要的权限就解决了.)

另外我新的没有上传,新的版本,默认的ipxe/grub4dos菜单都是可以直接使用的(一些小工具使用网络的形式通过ipxe来加载)

默认tftp的路径是使用e4a函数获取的,应该不会有什么问题,我用小米1S测试可用.







欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3