[讨论/分享] XPEnoboot 5.2 驱动编译 & Mplayer 玩法 |
likewhm 发表于 2016-8-27 15:37 关于zImage文件的解压: 以5967版内核为例。 用7-Zip打开,查看属性 可以看出,能够识别出文件的压缩算法为LZMA2,与内核编译选项中的设置一致, 但提示“有效数据外包含额外数据”,说明正常的压缩数据之外还有其他描述性数据,这些数据对我们来说是没用的,需要去掉。 有效压缩数据前,有7245字节无用数据 使用UltraEdit打开zImage,选中第一个字节->右键->十六进制插入/删除->选择删除,填入上面7245字节 删除后另存一个文件,再用7-Zip打开,查看属性,应该还会有额外数据,继续用上面方法删除 如果显示了“尾部大小”,且尾部大小相对于整个文件大小来说不是太大,就说明有效压缩数据之后,也有额外数据,也需要一并删除。 方法是: 1.查看文件最后一个字节的序号,如:0x0120f64f,要删除尾部的1024字节数据; 2.计算器计算,1024转16进制为0x400,0x0120f64f-0x400=0x120f24f 3.UltraEdit中,找到序号为0x120f24f的那个字节,选中下一个字节(即:0x120f250号字节),右键删除后面的1024字节 头部偏移两次,尾部偏移一次,就不在显示有额外数据了(我遇到的情况是这样),用7-Zip就能直接打开了。(这时候用UltraEdit查看文件,开头数据为“FD 37 7A 58 5A”(?7zXZ),当然内核选择不同的压缩算法时,压缩文件的起始标志是不一样的) 找到里面的“.init.data”文件,这个就是rd.cpio了,它也包含了额外数据,需要使用上面方法去除。 完整扒出来的rd.cpio文件,使用7-Zip查看属性如下 |
svdztn 发表于 2016-8-29 13:01 谢谢楼主! |
总算又看到有人说编译了。。。我有一块扩展卡,不知道怎么编译驱动,,大神能给个QQ交流下吗?
|
“但想让它出声音,还需要alsa-lib和alsa-utils,如果想听歌或是流媒体的话,还需要播放器,我使用的是mplayer,每天定时播放电台广播,用来当闹钟,嘿嘿。这些就后面开贴再做介绍吧。”
请作者继续!谢谢提供!! |
应 avivi 的要求,简单说一下alsa相关的东西。
简单来说,alsa层次结构如下: alsa app -------- alsa lib -------- alsa driver alsa driver: 我们知道,在linux下,应用程序是不能直接操作硬件设备的,要想使用设备,必须通过操作系统来完成,操作系统调用驱动程序与设备进行通信。alsa driver就是注册在内核的一个驱动模块,它负责与声卡通信,并把声卡描述成设备文件,从而应用程序就可以通过open、write等文件操作来操作声卡了。 alsa lib: 对于应用程序来说,如果直接调用设备文件,open、write、read等操作,这些操作在功能上太过于简单(或者说太底层),使用起来不够方便。为了使应用程序不必太过于关心底层操作,就需要将各种底层操作组合起来,构成更复杂、更高级的操作,再封装成接口函数,提供给上层的应用程序来使用,这就是alsa lib的作用。 alsa app: 各种播放器、alsa utils就属于这一层,alsa utils提供一组alsa音频相关的工具,通过这些工具,我们可以设置音量、测试声卡、编辑音频等,有些类似于windows下的音量合成器,但功能上更强大些。 关于alsa-lib和alsa-utils的编译,网上有很多资料,各个参数的设置解释也比较详细,这里我只做下简单的介绍,重点说下我觉得需要注意的细节。 先下载alsa-lib和alsa-utils的源码,两者版本尽量一致,我用的1.0.25,解压到编译环境中。 按照自下而上的原则,先编译alsa-lib,alsa-lib代码目录下: ./configure --host=x86_64-pc-linux-gnu --prefix=/usr/local make make install 再编译alsa-utils,alsa-utils代码目录下: ./configure --host=x86_64-pc-linux-gnu --prefix=/usr/local --with-alsa-inc-prefix=/usr/local/include --with-alsa-prefix=/usr/local/lib --disable-xmlto --with-curses=ncurses make make install 注意: 1.--with-alsa-inc-prefix 与 --with-alsa-prefix 是上面alsa-lib安装后,头文件和库文件所在的目录,要与上面alsa-lib设置对应好。 2.重点说下alsamixer alsamixer是一个可以在shell下提供图形化界面的音量控制器,界面如下: alsamixer 它使用起来比amixer更方便些 但它需要ncurses支持,所以如果需要alsamixer的话,需要下载ncurses源码,并编译一下(网上说可以用apt-get install libncurses5-dev安装,可能我的ubuntu源不大好),编译完成后,如果./configure配置 alsa-utils时,还提示检测不到ncurses,可以把生成的ncurses的头文件和库文件放到DSM-gcc编译器相应目录下(没找到为这个编译器指定默认include和lib目录的方法,哪位大神知道的话还请不吝赐教) 如果嫌麻烦的话,也可以不编译alsamixer,使用--disable-alsamixer参数配置configure 没有alsamixer,也可以使用amixer命令也可以设置音量等参数。 编译完成后,把生成目录下的lib、bin、sbin、share放到NAS的相应目录下(如果这些目录下原来就有其他文件,注意只考这次编译生成的文件,用文件修改时间做参考) 注意: 1.lib目录下的文件应该放到NAS的lib64下 2.share目录在NAS中的绝对路径要与在编译环境下一致。 声卡驱动一般默认静音,可以使用alsamixer,按m键开启,上下键调整音量; 也可以使用命令: amixer -q set Master unmute 100% amixer -q set PCM unmute 100% 不同的声卡,调整的项目可能不同,不一定使用Master和PCM 测试: aplay /usr/local/share/sounds/alsa/Front_Center.wav |
svdztn 发表于 2016-9-14 16:12 十分感谢!! |
latest DSM(6.0x):kernel sources uploaded ,"I have 7274 source repo here https://github.com/quiknick/7274-kernel." ;
"kernel sources uploaded : http://setsunakawa.ddns.net/synology/dsm6/",来自: A new loader for latest DSM http://xpenology.com/forum/viewtopic.php?f=2&t=20216 |
本人新手,用5.2的XPEnoboot,主板网卡是RTL8111E,系统只认成百兆,想自己编译加进驱动,看到楼主的帖子就想动手试下,虚拟机装好Ubuntu15了,请问楼主可以发下详细点的教程吗?新手+鸟语白痴看不懂啊。最好能私下指导下。非常感谢。
|
本帖最后由 svdztn 于 2016-10-17 17:30 编辑
很久没更新了,这回说说mplayer的编译。 为什么要用mplayer呢,因为它支持在控制台操作(其实是没用过别的播放器,嘿嘿)。 mplayer的功能还是很强大的,支持本地音、视频播放,网络流媒体播放。反正我需要的就这么多,而且我也不需要视频播放。 mplayer官网: http://www.mplayerhq.hu/design7/news.html 下载代码,解压到虚拟机中; 下载解码器 Binary Codec Packages,选择平台“Linux AMD64”。解压到将要生成mplayer可执行文件的目录,我放到了.../mplayer/lib/codecs下;如果不需要gui界面的话,可以不下载皮肤。 要成功编译mplayer,需要先安装nasm和zlib,可以下载代码编译安装,也可以使用apt-get install安装。 配置mplayer:
简单解释下: --prefix=/home/test/project/product/mplayer 生成可执行文件的目录。 --cc=x86_64-pc-linux-gnu-gcc 指定编译器。 --codecsdir=/home/test/project/product/mplayer/lib/codecs 前面下载的解码器目录。 --confdir=/home/test/project/product/mplayer 配置文件输出目录。 需要界面的,可以加上参数--enable-gui,带界面的我只在Ubuntu里运行过,应该需要X11支持 运行过configure后,如果没错误的话,会生成一个config.mak文件,重点来了。。。 因为我的DSM运行在AMD平台,而我的编译环境(即虚拟机)为Intel平台,configure这个脚本会自动判断当前编译平台的cpu,当我用上述配置直接编译时,发现生成的可执行文件放到DSM下运行不了。 查看编译器选项后,发现需要增加两个相关处理器优化的参数,因为暂时没找到configure相关配置参数, 直接修改config.mak文件: 在 “CFLAGS =”后,增加参数
(如果DSM为与编译环境同平台,应该就不需要增加) 下面是完整的CFLAGS:
之后make和make install, mplayer就在--prefix目录下等你了。 |
本帖最后由 svdztn 于 2016-10-17 17:25 编辑
再说说mplayer的玩法。 玩法一: 电台闹钟,其实就是定时播放网络流媒体。 脚本 alarm_start.sh:
脚本 alarm_stop.sh:
玩法二: NAS,作为家里的媒体服务器,本地音乐文件都放在上面,用手机播放效果不好,而且音量不够,用nas的外接音箱来播放挺不错。 控制端使用Android手机上的ServerAssistant软件,可以将控制台命令做成按钮,一键完成SSH登录和执行命令。 脚本 volume_set.sh:
用法:volume_set.sh [volume] 如:volume_set.sh 90即为设置音量为90% 不带参数时为查看音量 脚本 music_start.sh:
(-loop 0:无限循环; -shuffle:随机播放) 如果睡觉前播放,定时关闭是少不了的, 脚本 timer.sh:
用法:timer.sh [-h hour] [-m minute] [-d do] [-s set] [-v volume] [-A] 参数解释: -h 设定多少小时后执行指定命令(大于24,按对24取余计算) -m 设定多少分钟后执行指定命令(可以大于60) (-h与-m可单独使用也可一起使用) -d 此参数不需手动使用 -s 设定定时执行指定命令或脚本 -v 执行定时任务时,是否重新设定音量(即执行上面的volume_set.sh脚本) -A 清除此前设定的全部任务(不会清除DSM原来的任务,请放心使用) 举例:
其实这个脚本的原理是,先向crontab中写入一条定时任务,即1小时30分后,以“-d”参数运行timer.sh本身; timer.sh以“-d”参数运行时,先执行指定命令,即“/.../alarm_stop.sh”脚本和“volume_set.sh 100”; 然后删除crontab中指定的定时任务。 注: timer.sh中出现的脚本路径,需要根据自己的实际情况修改。 最后,声明一句,上述脚本均经本人DSM上测试,若在其他人的主机上运行出现不可预期的后果,造成的损失本人不负责。 |