树莓派论坛

 找回密码
 立即注册

【品树莓】 之 《树莓派高级设置》   主讲人 常小乐

常小乐 发表于 2012-5-4 16:38:57 | 显示全部楼层 |阅读模式
大家好,我常小乐又回来了,邦邦邦——邦
这一次的文章兴许有些难呢,起码我翻译的时候觉得挺难,不过到时候很省事,都是代码。。
这篇文章主要讲的就是如何给树莓派刷系统,硬功夫啊,有木有!!
对于咱们国内还拿不到的板的朋友来说,看这个东西真的没什么用,我翻译来也是给大家先预览一下,等以后真的拿到板子,你们会常来这里翻翻看看的,常回家看看回家看看~~~
另外,让我灰常开心的是,终于树莓派也要支持Python了~~撒花~~撒花
会用Qt的高玩们,准备点程序吧,也不枉我大热天辛辛苦苦的和我的台式机抢一个风扇……
本期闲谈就到这里吧,大家好好看文章吧~~~欢迎指正,谢绝批评~~
扎拉赞恩——常小乐 敬
树莓派高级设置


注意:
警告,本帖不适合普通玩家,仅适合骨灰级玩家,慎入呀慎入(欲练此功,必先……)

本文社区里的众多高玩们齐心协力准备给初学者的教程,如果有什么地方出现故障或者本文里没有提到的地方,可以直接来问我,但是在问我之前,请先好好看看FAQ

本文是基于Beagle Board Beginner 演化来的,所以,有一些串行端口仅在特定的条件下能通用。同样,很多树莓派的用户将会买我们预装系统的SD卡,并且跳过的刚才的硬件基本设置。我们希望,一旦树莓派的主板的产量达标以后,每个人都可以拿到一个树莓派了,会有高玩帮助我们把这篇文章改写一下,使其能够完美的契合树莓派的运作,或者也可以把本页直接转链到其他有更好的说明文章的地方。

获取硬件及设置
上集提要:详情请见 硬件基本设置
你需要一个合适的SD卡,一个USB键盘,电视或者显示器(有HDMIDVI、复合视频、SCART输入均可),供电电源(USD充电器,或者有USB接口的USB分线器及其他电脑等)
你可能同样想要一个USB鼠标,一个外壳,一个USB集线器(A款是必备的,因为A款只有一个USB接口)。一个可供电的USB集线器将会大大减少对树莓派的影响。要是想联网的话,你需要一个以太网的网线(仅B款可以)或者一个USBWIFI 网卡(任何一款都可以)。
当一切都准备就绪了,这里强烈建议在一切都插好了,打开了之后再连接电源。

SD卡设置 提高版
现在我们想用SD卡去装一些GNU/Linux的套件进去,并且给你的树莓派增加一些空间。你可以用SD卡或者是SDHC卡。对于SDHC来说,很多电脑的读卡器也是同时支持SDHC的,这里要注意,你不是在处理一个x86的处理器,而是一个架构完全不同的叫做ARM的东西,所以还请不要忘记给你准备使用的套件安装一个ARM的端口。
我们的第一步就是如何去格式化这张SD卡。

通过mkcard.txt script来格式化SD

(有待完善)
1.         下载mkcard.txt
2.         $ chmod +x mkcard.txt
3.         $ ./mkcard.txt /dev/sdx, 中,x是卡的字母。你可以插入你的卡后找到这个东西,然后运行dmesg | tail. 你可以看到有关设备的信息在日志中纵向安装,我的装好的系统叫“sdc”。
一旦开始运行,你的卡应该被格式化了

通过硬盘分区命令 "专家模式(Expert mode

格式化SD
首先,让我们先清空一下分区表
  1. ================================================================================
  2. $ sudo fdisk /dev/sdb
  3. Command (m for help): o
  4. Building a new DOS disklabel. Changes will remain in memory only,
  5. until you decide to write them. After that, of course, the previous
  6. content won't be recoverable.
  7. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
  8. ================================================================================
复制代码
输出卡片信息:
  1. ================================================================================
  2. Command (m for help): p
  3. Disk /dev/sdb: 128 MB, 128450560 bytes
  4. ....
  5. ================================================================================
复制代码
注意卡片的字节数,等下在下面的过程中需要用到。
然后进入“Expert mode
  1. ================================================================================
  2. Command (m for help): x
  3. ================================================================================
复制代码

现在我们得设置255的磁头数,63个扇区数,计算本SD/MMC卡的筒数:
  1. ================================================================================
  2. Expert command (m for help): h
  3. Number of heads (1-256, default 4): 255
  4. Expert command (m for help): s
  5. Number of sectors (1-63, default 62): 63
  6. Warning: setting sector offset for DOS compatiblity
  7. ================================================================================
复制代码
注意,请特别注意一下下一步,首先按着以下步骤计算筒数:
    [li]B = Card size in bytes (you got it before, in the second step when you printed the info out) [/li][li]C = Number of cylinders [/li]
  1. C=B/255/63/512
复制代码
当你得到这个值,你得把他后面的小数位省略,比如,如果你得到108.8,你用108就可以了。
  1. ================================================================================
  2. Expert command (m for help): c
  3. Number of cylinders (1-1048576, default 1011): 15
  4. ================================================================================
复制代码
照这样算来,128MB的卡可以用(用以上的硬盘分区命令应该被记录为128450560 bytes),因此,128450560 / 255 / 63 / 512 = 15.6,去掉小数位是15个筒数,数值就有255个磁头,63个分区,每个分区512 bytes
到目前为止一切都进展完好,现在我们就要制造两个分区,一个引导系统图像,另一个给我们的套件使用。
划分一个FAT32的分区给引导系统和从Windows里传输文件使用。标记为bootable(可引导)。
  1. ================================================================================
  2. Expert command (m for help): r
  3. Command (m for help): n
  4. Command action
  5.   e   extended
  6.   p   primary partition (1-4)
  7. p
  8. Partition number (1-4): 1
  9. First cylinder (1-245, default 1): (press Enter)
  10. Using default value 1
  11. Last cylinder or +size or +sizeM or +sizeK (1-245, default 245): +50
  12. Command (m for help): t
  13. Selected partition 1
  14. Hex code (type L to list codes): c
  15. Changed system type of partition 1 to c (W95 FAT32 (LBA))
  16. Command (m for help): a
  17. Partition number (1-4): 1
  18. ================================================================================
复制代码
制造一个Linux分区给引导文件系统
  1. ================================================================================
  2. Command (m for help): n
  3. Command action
  4.   e   extended
  5.   p   primary partition (1-4)
  6. p
  7. Partition number (1-4): 2
  8. First cylinder (52-245, default 52): (press Enter)
  9. Using default value 52
  10. Last cylinder or +size or +sizeM or +sizeK (52-245, default 245):(press Enter)
  11. Using default value 245
  12. ================================================================================
复制代码
输出并且保存新的分区记录
  1. ================================================================================
  2. Command (m for help): p
  3. Disk /dev/sdc: 2021 MB, 2021654528 bytes
  4. 255 heads, 63 sectors/track, 245 cylinders
  5. Units = cylinders of 16065 * 512 = 8225280 bytes
  6.   Device Boot      Start         End      Blocks   Id  System
  7. /dev/sdc1   *           1          51      409626    c  W95 FAT32 (LBA)
  8. /dev/sdc2              52         245     1558305   83  Linux
  9. Command (m for help): w
  10. The partition table has been altered!
  11. Calling ioctl() to re-read partition table.
  12. WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
  13. The kernel still uses the old table. The new table will be used at the next reboot.
  14. WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk
  15. manual page for additional information.
  16. Syncing disks.
  17. ================================================================================
复制代码

现在我们有了个两个分区吗,下一步就是格式化他们。
注意,如果分区(/dev/sdc1 and /dev/sdc2)不存在,你需要把卡退出来然后再插回去,Linux现在才能侦测到新分区。
  1. ================================================================================
  2. $ sudo mkfs.msdos -F 32 /dev/sdc1 -n LABEL
  3. mkfs.msdos 2.11 (12 Mar 2005)
  4. $ sudo mkfs.ext3 /dev/sdc2
  5. mke2fs 1.40-WIP (14-Nov-2006)
  6. Filesystem label=
  7. OS type: Linux
  8. Block size=4096 (log=2)
  9. Fragment size=4096 (log=2)
  10. 195072 inodes, 389576 blocks
  11. 19478 blocks (5.00%) reserved for the super user
  12. First data block=0
  13. Maximum filesystem blocks=402653184
  14. 12 block groups
  15. 32768 blocks per group, 32768 fragments per group
  16. 16256 inodes per group
  17. Superblock backups stored on blocks:
  18.        32768, 98304, 163840, 229376, 294912
  19. Writing inode tables: done                           
  20. Creating journal (8192 blocks): done
  21. Writing superblocks and filesystem accounting information:
  22. ================================================================================
复制代码

好了,一切都完成了。\\译者注:开心么?总之我是很开心,总算又快译完了一篇了\\

注意:为了方便起见,你可以给mkfs.ext3命令添加 –L 选项来给新的ext3

文件系统指派一个新的磁盘标签。 如果你那样做了,当你把卡插到一些Linux的主机时,在/media下,

这个新的(自动的)装载点就会建立在这个标签上,这个新挂载点会很有可能会成为一个长型的
16进制的字符串, 所以指派一个标签使得在主机上手工挂载变得非常方便。



设置引导系统分区

这个引导系统分区必须包括一下的文件,在官方的文件中你可以找到他们:
ISC
    [li]bootcode.bin : 2nd stage bootloader, starts with SDRAM disabled [/li][li]loader.bin : 3rd stage bootloader, starts with SDRAM enabled

    [/li][li]start.elf: The GPU binary firmware image, provided by the foundation. [/li][li]kernel.img: The OS kernel to load on the

    ARM processor. Normally this is Linux - see instructions for compiling a kernel.
    [/li][li]cmdline.txt: Parameters passed to the kernel on boot[/li]


可选择文件:
    isc[li]config.txt: A configuration file read by the GPU. Use this to override set the video mode, alter system clock speeds, voltages, etc. [/li][li]

    vlls directory: Additional GPU code, e.g. extra codecs. Not present in the initial release. [/li]


基金会所提供的额外的文件:

这些文件都提供在基金会所提供的SD卡片映像中额外的内核。 使用他们之前你得先重命名kernel.img (请确保首先你要准备一份原始内核kernel.img 的备份)
isc
    [li]kernel_emergency.img : kernel with busybox rootfs. 如果Linux分区崩溃的话,你可以使用这个去修复Linux的使用e2fsck主分区。[/li]


额外的GPU固件文件, 复制start.elf 来使用他们:
isc
    [li]arm128_start.elf : 128M ARM, 128M GPU split (用这个带大型3D工作,它可能需要一些视频解码) [/li][li]arm192_start.elf : 192M ARM, 64M GPU split (这是系统默认的) [/li][li]arm224_start.elf : 224M ARM, 32M GPU split (这个就是给Linux专门提供无3D和视频文件处理时用的,这个对于1080P的绘图缓冲存储是完全足够的,但是不能再多了) [/li]


最后 引导启动 GNU/Linux

软件的开发与审查

树莓派所支持的平台是QtQt是一个多平台的C/C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。
Python也已经在基金会的推动下紧锣密鼓的筹备当中。
当编译完成后,使用QEMU 和一个 Linux VM将是你测试软件的一个不错的选择,他同时也能在Windows上运作。
编程语言的选择,在树莓派上的 IDEs和其他的工具主要是又以下3点决定的:

1.        系统的兼容性(当下所使用的Linux的系统版本)
2.        不同的ARM封装的套件库的状态和他们的二进制兼容性
3.        建造其他软件的可能性 + 它从来源上来说对于树莓的相关性和依赖性(取决于C的交叉编译)


本文是坛友常小乐同学辛苦翻译的,原创,转载请注明出处,标明论坛网址。谢谢。提示一下,转载不标网址的,会遭报应的。。。
树老大 发表于 2012-5-4 17:33:00 | 显示全部楼层
支持兄弟,顶起来,为国内网友做贡献了。。。
cjskeleton 发表于 2012-5-4 22:02:33 | 显示全部楼层
跟着树老大顶
steven 发表于 2012-5-6 17:56:41 | 显示全部楼层
这个帖子必须顶啊!
topzdx 发表于 2012-5-26 17:41:15 | 显示全部楼层
先顶一下常小乐的辛苦工作.

SD卡分区计算部分有点繁,偶没有很 CLEAR.
1 如果不是加密等特别的用法, 图方便的话随便 找个LINUX 系统, 用GPARTED 图形界面就可以分区格式化了.
( 和 WIN下分区魔术师类似) 初学者不用在分区上过多纠结,小心格了自已的硬盘.

2 mkcard.txt  文件起名不太规范, SHELL脚本文件的话 一般用 sh 后缀比较明确.
  LINUX 下为了日常使用和维护的方便, 很多文件 如配置文件都是 纯文本,  不需要专门用TXT后缀
因为LINUX 特点是可调整余地大,为了临时调整,不需要去找各种专门配置软件, 大家可以使用各自感觉顺手的编辑器,
(尤其是小系统里没有太多工具,会VI就行.)

3 QT 是比较强的图形界面系统, 但树莓派是体形小巧,更多微型 界面相关技术也可一提.
  比如 GTK , FLTK , SDL ,各种FB 相关系统 , 如 DirectFB等 ,  

如果你的实用系统想要快速开机, 就少去碰大型图形系统, 那都是为X86 的好机器准备的,
800M的ARM 不一定够, 多留点CPU给实用程序而不是花哨的界面是嵌入式开发的准则.

4 偶当年用3吋的486工控板装LINUX, KDE 让人等的要吐血, FLTK 就能日常应用.
还有要是能离开SD卡(可惜现在不行) , 用PXE 启动系统 , 你就知道小系统的好处了.

TinyCore  有图形界面才10M , 偶不想一个为高碳高能耗设计 的X86 服务的大象级图形界面
象 KDE 或 GNOME 占了系统容量的一半以上只是显示几个 窗口和按钮.

当初的GeexBox 1.24 版 10M , 里面有了Mplayer , 不播放视频的话系统可以只有4M.

5 有的就用可以不要图形界面, 直接WIFI (或有线网) 出来, 装个 lighttpd 一类的东东从外部控制就行了. 这时就可以用上 MicroCore 等更小巧的系统了.
  UBUNTU ? 那是初学者入门用的桌面系统, 你还在用这个?
(吃透里面的Debian精神, 离开别人为你搭的积木, 随心搭建自已的系统,
朝"手中无剑,心中有剑"的目标前进吧)

以上是个人看法,谨供参考,如和任何人雷同,纯属偶然,呵呵。

--------------------
偶N年玩了一些LINUX发行版,感觉 Debian 玩家平均技术水平要高于UBUNTU
还有Arch , Gentoo , 开始玩起来不易上手的系统玩到后面学到的东西更多。

当年Arch 偶从有人搭好的小系统开始,有了Fluxbox 等WM,开发者说 有人纯Arch 上不了手,帮助别人做了个有图形的系统。到后来偶裁剪配置小系统多了,也能从纯 Console 的 Arch 引入图形了。
才明白 那个老外当年说的是什么意思,难度如何。

愿大家早日离开界面很酷容易上手的系统, 个人认为 “容易上手” 的潜台词是不易深入。
多玩点 .configure , make , make install  ,图形的话 GTK 比较正统, Glade3 也可玩玩
topzdx 发表于 2012-5-26 20:01:17 | 显示全部楼层
偶的贴子又审了,树老大, 控制台这个英文词能不能不审呢?
LINUX 下常会提的, CLI 说的人反而少点
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版 | Archiver | 树莓派论坛 ( 粤ICP备15075382号-1 )