定制你的Joggler

为什么需要定制:
1.这是伟大的开源时代赋予你的权利,行使你的权利就是你的义务
2.O2官方系统功能过于简单,这对于1.3GHz的超线程CPU很不公平
3.Ubuntu系列的系统功能很全,但庞大,我们不应该为用不到的程序而浪费存储空间;而且操作基本要借助于鼠标和键盘,触摸屏形同虚设
4.我们需要一个能替代原系统的系统,而不是还要带个尾巴(U盘)

 

下面是主要的工作列表:
1.使用自制的grub.efi,原因有2个
a). 原二进制版本没有解决屏幕显示的问题,需要通过refit来引导
b). 原二进制版本禁止掉了grub的命令行接口,里面的很多命令是很有帮助的
2.使用自制的linux kernel,这里有2个选择
a). 使用Android的kernel,版本为2.6.32.1
b). 使用Arch linux的kernel,版本为2.6.33.4
3.根文件系统使用Debian 5.0.4(lenny),整个基系统安装完不到500MB,而ubuntu_9.10_remix要2.1GB。
4.GUI仍然使用O2的Flash前端

1. 编译grub.efi
grub的最新版本是1.98,官方下载地址如下:
ftp://alpha.gnu.org/gnu/grub/
输入:
grub-1.98.tar.gz
grub-gop-video-v1.patch
输出:
grub.efi
编译步骤:
tar zxvf ../grub-1.98.tar.gz
cd grub-1.98
patch -p1 < /home/jerry/Joggler/grub-gop-video-v1.patch
./configure --with-platform=efi --disable-werror
make
./grub-mkimage -d . -o grub.efi part_msdos hfsplus fat ext2 normal sh chain boot configfile linux minicmd
注意的问题:
1). 需要使用X86的Linux环境来编译,AMD编译的程序无法运行(也可以在./configure的时候加上--target=x86来绕过)
root@jerry-desktop:/home/jerry/Joggler/grub/grub-1.98# file grub.efi
grub.efi: PE32 executable (EFI application) Intel 80386 32-bit                <--- X86
root@jerry-desktop:/home/jerry/Joggler/grub-1.98# file grub.efi            
grub.efi: PE32+ executable (EFI application)                                <--- AMD
这样运行起来的错误提示:
------------------------------------------------------------------
Error: Unsupported while loading grub.efi

* Hit any key to continue *
------------------------------------------------------------------
2). part_msdos标准教程里写的是part_gpt,这个选项编译出来grub无法识别U盘上的分区
3). minicmd这个就是grub的命令行模块
4). grub-gop-video-v1.patch这个补丁修正了grub在屏幕上的显示

测试:
将编译生成的grub.efi放在U盘的第一个分区(vfat) /efi/grub/ 下
grub.conf要和grub.efi在同一个目录
set timeout=5

menuentry "Debian lenny" {
    set root=(hd0,1)
    linux /images/vmlinuz-2.6.33.4-1 root=/dev/sda2 ro acpi=force idle=halt
    initrd /images/initrd-Debian504
}

/boot.nsh修改成:
fs1:
cd /efi/grub
grub

这样上电直接进入grub界面

可以在多个环境上进行切换

Grub的命令行接口

 

参考资料:
http://grub.enbug.org/TestingOnMacbook
http://jogglerhacks.blogspot.com/2010/04/grub2-on-joggler.html

2. 编译Linux Kernel
Android版本的2.6.32.1下载方法见下面URL
http://www.jogglerwiki.info/index.php?title=Build_Android_Image
Android-X86 for Joggler整个包有2GB大,下了2天才下完,所以还是建议用2.6.33.4
下载地址:
http://aur.archlinux.org/packages.php?ID=36949

输入:
linux-2.6.33.4.tar.bz2
joggler-backlight-2.6.32-v1.patch
joggler-i2c-fix-2.6.32-v1.patch
joggler-sound-fix-2.6.32-v2.patch
linux-2.6.33.2-iegd.patch

输出:
vmlinuz-2.6.33.4
2.6.33.4-joggler_modules.tar.bz2

编译过程:
tar jxvf linux-2.6.33.4.tar.bz2
cd linux-2.6.33.4
patch -p1 < ../joggler-backlight-2.6.32-v1.patch
patch -p1 < ../joggler-i2c-fix-2.6.32-v1.patch
patch -p1 < ../joggler-sound-fix-2.6.32-v2.patch
patch -p1 < ../linux-2.6.33.2-iegd.patch
cp ../joggler-kernel.config ./.config
make menuconfig
make bzImage
make modules
make modules_install
cd ./arch/x86/boot
cp bzImage vmlinuz-2.6.33.4
cd /lib/modules/
tar cjvf 2.6.33.4-joggler_modules.tar.bz2 ./2.6.33.4-joggler/*
参考资料:
http://www.jogglerwiki.info/index.php?title=Arch_Linux

3.获得根文件系统
输入:
debian-504-i386-netinst.iso
输出:
debian-504-Joggler-rootfs.tar.bz2
initrd-Debian504
制作方法是通过VMWare来安装debian-504-i386-netinst.iso
1). 基系统安装完成就结束,不要安装桌面和服务器环境。
2). apt-get install xorg-core wine ssh vnc4server alsa-utils wireless-tools
3). 通过wine安装BitComet
4). 关闭虚拟机
5). 将生成的虚拟机硬盘文件×.vmdk挂接在另一个虚拟机上,mount后将boot目录下的initrd复制出来,将整个根目录打包,得到上面提到的2个输出文件。
注:wine和BitComet为可选,随便装你需要的软件。(不重要的东西可以等到Joggler的环境来安装)

4.将空闲的U盘或移动硬盘格式化,第一个fat32,第二个ext2
1). 将grub,initrd-Debian504,vmlinuz-2.6.33.4放入第一个分区
2). 将debian-504-Joggler-rootfs.tar.bz2解压缩到第二个分区
3). 将p2/lib/modules/下的文件全部删除(可选,只为节省空间),用2.6.33.4-joggler_modules.tar.bz2解压缩替换
4). 将p2/var/cache/apt/archives/下面的文件删除(可选,只为节省空间)
5). 修改p2/etc/fstab,注释掉那些不需要挂接的设备节点
6). 修改p2/etc/X11/xorg.conf (这个有点麻烦,上个附件好了)
7). umount掉p1和p2,插入Joggler上电

补充说明:
1. 如何配置xorg.conf让xwindows工作(液晶屏,键盘,鼠标,触摸屏)
告诉XWindows存在的设备有,屏幕、鼠标、键盘、触摸屏
Section "ServerLayout"
        Identifier     "X.org Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "Touchscreen" "CorePoniter"
        InputDevice    "Mouse"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection
键盘:
Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
EndSection
鼠标:
Section "InputDevice"
        Identifier  "Mouse"
        Driver      "mouse"
        Option      "Protocol" "Auto"
#       Option      "ZAxisMapping" "4" "5"
#       Option      "CorePointer"
       Option      "Device" "/dev/input/mice"
EndSection
触摸屏:
Section "InputDevice"
        Identifier  "Touchscreen"
        Driver      "evdev"
#       Driver      "evtouch"
        Option      "Device" "/dev/input/event1"
EndSection
屏幕:
Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        SubSection "Display"
                Viewport   0 0
                Depth     24
        EndSubSection
EndSection
其中用到的Card0描述:(这里用的是fbdev是比较慢的驱动)
Section "Device"
        #Option     "ShadowFB"                  # [<bool>]
        #Option     "Rotate"                    # <str>
        #Option     "fbdev"                     # <str>
        #Option     "debug"                     # [<bool>]
        Identifier  "Card0"
        Driver      "fbdev"
        VendorName  "Intel Corporation"
        BoardName   "System Controller Hub (SCH Poulsbo) Graphics Controller"
        BusID       "PCI:0:2:0"
EndSection
这部分参考http://www.jogglerwiki.info/index.php?title=Arch_Linux中xorg配置的描述

2. 如何让无线网络工作
第一次需要手动加载模块rt2870sta
Joggler:/home/joggler# insmod /lib/modules/2.6.33.4-joggler/kernel/drivers/staging/rt2870/rt2870sta.ko
然后通过lsmod检查是否加载成功
通过命令ifconfig -a,检查是否多出了一个网络接口
我看到的是
wlan0     Link encap:Ethernet  HWaddr 00:00:00:00:00:00 
使能网卡
Joggler:/home/joggler# ifconfig wlan0 up
检查无线信号
Joggler:/home/joggler# iwlist wlan0 scan
wlan0     Scan completed :
          Cell 01 - Address: 00:0F:66:43:C4:41
                    Protocol:802.11b/g
                    ESSID:"jerry's home"
                    Mode:Managed
                    Channel:6
                    Quality:100/100  Signal level:-41 dBm  Noise level:-71 dBm
                    Encryption key:off
                    Bit Rates:54 Mb/s
          Cell 02 - Address: D8:5D:4C:2D:9D:D2
                    Protocol:802.11b/g
                    ESSID:"coship-hz1"
                    Mode:Managed
                    Channel:11
                    Quality:39/100  Signal level:-74 dBm  Noise level:-71 dBm
                    Encryption key:off
                    Bit Rates:36 Mb/s
          Cell 03 - Address: 00:EE:07:01:DC:57
                    Protocol:802.11b/g
                    ESSID:"ALPHA-WLAN"
                    Mode:Managed
                    Channel:11
                    Quality:39/100  Signal level:-74 dBm  Noise level:-71 dBm
                    Encryption key:on
                    Bit Rates:18 Mb/s
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (1) : TKIP
                        Authentication Suites (1) : PSK
启用essid并设置为"jerry's home"
Joggler:/home/joggler# iwconfig wlan0 essid on
Joggler:/home/joggler# iwconfig wlan0 essid "jerry's home"

3. 如何让声卡工作
运行alsaconf,选择列表中的Intel Corporation System Controller Hub (SCH Poulsbo) HD Audio


测试
因为aplay只能播放wave格式,而madplay又不能通过alsa来播放,所以使用下面的命令组合
madplay -o wave:- /media/media/01.mp3 | aplay

4. 如何将最终版本放入NAND Flash

存在的问题:
1. 声卡还是无法工作
2. 需要写一个脚本来完成wifi等配置工作

 

这个是原始的xorg-core的启动界面

 


BT的话需要NAS的支持,或者要外挂一个硬盘

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值