无忧启动论坛
标题:
android手机ipxe-http-nfs启动ubuntu成功
[打印本页]
作者:
510819776
时间:
2014-10-2 16:59
标题:
android手机ipxe-http-nfs启动ubuntu成功
本帖最后由 510819776 于 2014-10-11 02:53 编辑
在这里发帖做个纪念 免得我忘记了这个过程
1.网络环境
wr720n有线连接台式机 wr720n无线连接android手机
手机显示连接速度72Mbps
2.路由器设置
路由器开启dhcp 192.168.2.100-199服务
正常启动台式机 电脑和手机是局域网 可以相互访问
3.手机方面配置
手机的pxe服务配置
使用armv7a的dnsmasq
dnsmasq.conf
配置如下
interface=wlan0
listen-address=0.0.0.0
dhcp-range=192.168.2.0,proxy
enable-tftp
tftp-root=/mnt/sdcard/www/
dhcp-match=ipxe,175
dhcp-option=175,8:1:1
pxe-service=net:#ipxe,x86PC, "splashtop by richud.com", ipxe.kpxe
手机sdcard下面有www目录
www里面必须有ipxe.kpxe.0
启动手机的pxe服务命令
dnsmasq --conf-file=$CONF
手机http配置
使用arm版本的apache http server的httpd
配置文件
httpd.conf
ServerRoot "/mnt/sdcard/apache/http"
Listen 0.0.0.0:80
#<IfModule !mpm_netware_module>
#<IfModule !mpm_winnt_module>
User shell
Group root
#ServerAdmin
vvvv.1988@163.com
DocumentRoot "/mnt/sdcard/www"
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "/mnt/sdcard/www">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
IndexOptions Charset=UTF-8
Allow from all
</Directory>
#<IfModule dir_module>
# DirectoryIndex index.html
#</IfModule>
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
DefaultType text/plain
这里是把sdcard下面www目录设置为http根目录
效果是用电脑访问http://手机ip/
可以看到www下面的文件
本http服务提供ipxe netboot ubuntu的两个内核文件 vmlinuz和initrd.lz
所以www下面必须有从ubuntu的iso中提取的vmlinuz和initrd.lz
http服务的启动命令是
httpd -f /sdcard/apache/httpd.conf
nfs服务配置
使用unfsd3的源码编译unfsd 支持nfs v3共享 无rpcbind 无portmap
exports配置
/sdcard/nfsboot 192.168.2.0/255.255.255.0(ro,insecure,no_root_squash)
ip地址自己修改下
启动nfs服务命令
unfsd -e /sdcard/nfsboot/exports -t -p -m 2049 -s
好了 说下手机sdcard下面的目录和文件吧
nfsboot目录下有ubuntu14.04的iso解压的文件和exports
www目录下有ipxe.kpxe.0 vmlinuz initrd.lz ubuntu.ipxe
apache目录是放的arm版本的apache
ubuntu.ipxe内容
#!ipxe
kernel http://手机ip/vmlinuz boot=casper netboot=nfs nfsroot=手机ip:/sdcard/nfsboot,nolock,mountport=2049,nfsvers=3 locale=zh_CN.UTF-8 quiet splash
initrd http://手机ip/initrd.lz
帖子已经接近完美了
然后电脑打开pxe启动
按ctrl b进入ipxe命令行
输入
dhcp
chain http://手机ip/ubuntu.ipxe
之后就能进入ubuntu 14.04的livecd桌面了
哈哈 失败了 对呀
好了 因为手机的nfs服务器没有portmap
所以不可以直接就这样启动
怎么办
简单 修改下initrd.lz
mv initrd.lz initrd.lzma
lzma -d initrd.lzma
cpio -id<initrd
修改scrips/casper
如下
do_nfsmount() {
rc=1
modprobe "${MP_QUIET}" nfs
if [ -z "${NFSOPTS}" ]; then
NFSOPTS=""
else
NFSOPTS=",${NFSOPTS}"
fi
[ "$quiet" != "y" ] && log_begin_msg "Trying mount -t nfs -o ro${NFSOPTS} ${NFSROOT} ${mountpoint}"
# FIXME: This while loop is an ugly HACK round an nfs bug
i=0
while [ "$i" -lt 10 ]; do
mount -t nfs -o ro,nolock,nfsvers=3,proto=tcp,mountport=2049 "${NFSROOT}" "${mountpoint}" && rc=0 && break
sleep 1
i="$(($i + 1))"
done
return ${rc}
}
其实就是修改了 原来的nfsmount *********
改好后打包回去
find .|cpio -o -H newc>initrd
lzma -7 initrd
mv initrd.lzma initrd.lz
ok了
内核这样修改后
ubuntu.ipxe就可以直接这样
#!ipxe
kernel http://手机ip/vmlinuz boot=casper netboot=nfs nfsroot=手机ip:/sdcard/nfsboot locale=zh_CN.UTF-8 quiet splash
initrd http://手机ip/initrd.lz
帖子快结束了
我这里要说的是我使用的是基于ubuntu的发行版本linuxmint 17 kde x64位系统
我想ubuntu 14.04应该也是一样的
关于细节方面可以看我的其他帖子 哈哈
已经编译了一个可以用的portmap
这样手机的nfs服务器就不需要 再去修改ubuntu的initrd.lz文件了
关注我的其他帖子
已经发布了一个 集成了nfs http 和pxe的安卓apk
作者:
ql1307096
时间:
2014-10-12 09:18
不错的教程,有时间弄一下试试看
作者:
510819776
时间:
2014-10-12 18:41
ql1307096 发表于 2014-10-12 09:18
不错的教程,有时间弄一下试试看
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=342394
软件已经发布 apk的
作者:
jie_china
时间:
2014-10-21 22:01
高手呀,前排留名
作者:
510819776
时间:
2014-11-29 16:29
欢迎折腾
作者:
mayi
时间:
2020-7-7 20:27
太牛了,小白看不懂呀
欢迎光临 无忧启动论坛 (http://wuyou.net./)
Powered by Discuz! X3.3