LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3946|回复: 37

Archlive 新年第一棒。。。 基于2.6.37稳定内核的20110107

[复制链接]
发表于 2011-1-7 22:59:06 | 显示全部楼层 |阅读模式
跟前一版差不多, 更新内容:

kernel26-2.6.38.2   cjk

....

加入新的启动模式, loop模式。。。

下载地址: http://u.115.com/file/f26eba833a


已知问题:
1.  virtualbox 下运行X有问题, 估计需要重新编译xorg-server等。。。


详细见  http://hi.baidu.com/archlive/blog/item/6097fc5254d65f4e1138c245.html






























软件清单

  1. ########################################
  2. #    archlive 软件清单 (i686)      #
  3. ########################################
  4. archlive 最后更新于 17:05:50 2011-01-07

  5. 模块 0_000_core 包含:
  6. ----------------------------------------
  7. kernel26 2.6.37-1.archlive.cfs
  8. kernel26-headers 2.6.37-1.archlive.cfs
  9. linux-api-headers 2.6.37-1.archlive.cfs
  10. linux-firmware 20101108-1
  11. madwifi 4132-1
  12. madwifi-utils 4132-1
  13. ndiswrapper 1.56-9

  14. 模块 0_001_base 包含:
  15. ----------------------------------------
  16. acl 2.2.49-1
  17. arj 3.10.22-5
  18. atop 1.25-1
  19. attr 2.4.44-2
  20. bash 4.1.009-3
  21. bash-completion 1.2-2
  22. binutils 2.21-2
  23. btrfs-progs 0.19-6
  24. bzip2 1.0.6-1
  25. coreutils 8.9-1
  26. cpio 2.11-2
  27. cracklib 2.8.16-1
  28. cryptsetup 1.2.0-1
  29. dash 0.5.6.1-1
  30. db 5.1.19-3
  31. dbus-core 1.4.1-1
  32. dbus-glib 0.92-1
  33. dcron 4.4-2
  34. device-mapper 2.02.79-1
  35. dhcpcd 5.2.9-1
  36. dialog 1.1_20100428-2
  37. diffutils 3.0-2
  38. dosfstools 3.0.10-1
  39. e2fsprogs 1.41.14-1
  40. eventlog 0.2.12-1
  41. expat 2.0.1-6
  42. file 5.04-3
  43. filesystem 2010.12-1
  44. findutils 4.4.2-3
  45. fuse 2.8.5-1
  46. fuse-exfat 0.9.3-1
  47. gawk 3.1.8-2
  48. gcc-libs 4.5.2-4
  49. gdbm 1.8.3-7
  50. gen-init-cpio 2.6.37-1.archlive.cfs
  51. gettext 0.18.1.1-1
  52. glib2 2.26.1-1
  53. glibc 2.12.2-1
  54. gmp 5.0.1-1
  55. grep 2.7-1
  56. groff 1.21-1
  57. grub 0.97-17
  58. gzip 1.4-2
  59. hdparm 9.36-1
  60. heimdal 1.3.3-4
  61. iana-etc 2.30-1
  62. ifplugd 0.28-7
  63. initscripts 2010.07-2
  64. iproute2 2.6.35-4
  65. iputils 20100214-2
  66. jfsutils 1.1.14-2
  67. kbd 1.15.2-1
  68. less 436-2
  69. lha 1.17-3
  70. libarchive 2.8.4-2
  71. libatasmart 0.17-1
  72. libcap 2.19-2
  73. libdaemon 0.14-1
  74. libevent 1.4.14b-2
  75. libfetch 2.33-1
  76. libgcrypt 1.4.6-1
  77. libgpg-error 1.9-2
  78. libgssglue 0.1-3
  79. libldap 2.4.23-1
  80. libnl 1.1-2
  81. libpcap 1.1.1-2
  82. librpcsecgss 0.19-3
  83. libsasl 2.1.23-5
  84. libtirpc 0.2.1-2
  85. libusb 1.0.8-1
  86. libusb-compat 0.1.3-1
  87. libxml2 2.7.8-1
  88. licenses 2.6-1
  89. linux-atm 2.5.1-1
  90. logrotate 3.7.9-1
  91. lsof 4.84-1
  92. lvm2 2.02.79-1
  93. lzo2 2.04-1
  94. lzop 1.03-1
  95. mdadm 3.1.4-1
  96. mkinitcpio 0.6.7-1
  97. mkinitcpio-btrfs 0.3-3
  98. mkinitcpio-busybox 1.17.2-1
  99. mkinitcpio-nfs-utils 0.2-1
  100. mlocate 0.23.1-2
  101. module-init-tools 3.12-1
  102. nano 2.2.6-1
  103. ncurses 5.7-4
  104. netcfg 2.5.4-1
  105. net-tools 1.60-14
  106. networkmanager 0.8.3-0.20101130
  107. networkmanager-openconnect 0.8.2-1
  108. networkmanager-openvpn 0.8.2-1
  109. networkmanager-pptp 0.8.2-1
  110. networkmanager-vpnc 0.8.2-1
  111. nfsidmap 0.23-4
  112. nfs-utils 1.2.2-4
  113. nspr 4.8.6-1
  114. nss 3.12.8-1
  115. ntfs-3g 2010.10.2-1
  116. ntfsprogs 2.0.0-4
  117. openconnect 2.26-1
  118. openssl 1.0.0.c-1
  119. openvpn 2.1.4-1
  120. p7zip 9.13-2
  121. pacman 3.4.2-1
  122. pacman-mirrorlist 20101223-1
  123. pam 1.1.3-1
  124. parted 2.3-1
  125. pciutils 3.1.7-2
  126. pcmciautils 017-1
  127. pcre 8.11-1
  128. perl 5.12.1-3
  129. polkit 0.99-1
  130. popt 1.16-2
  131. ppp 2.4.5-1
  132. pptpclient 1.7.2-3
  133. procinfo-ng 2.0.304-2
  134. procps 3.2.8-3
  135. progsreiserfs 0.3.0.5-5
  136. psmisc 22.13-1
  137. readline 6.1.002-2
  138. reiserfsprogs 3.6.21-3
  139. rpcbind 0.2.0-3
  140. rp-pppoe 3.10-5
  141. sdparm 1.06-1
  142. sed 4.2.1-3
  143. sg3_utils 1.29-1
  144. shadow 4.1.4.2-3
  145. smbclient-mini 3.5.6-1
  146. sqlite3 3.7.4-1
  147. sudo 1.7.4.p4-1
  148. sysfsutils 2.1.0-5
  149. syslinux 4.00pre53-1
  150. syslog-ng 3.2.1-1
  151. sysvinit 2.88-2
  152. tar 1.25-1
  153. tcp_wrappers 7.6-12
  154. texinfo 4.13a-5
  155. tzdata 2010o-1
  156. udev 165-1
  157. udisks 1.0.2-1
  158. unarj 2.63a-2
  159. unrar 4.0.3-1
  160. unzip 6.0-5
  161. usbutils 001-2
  162. util-linux-ng 2.18-3
  163. vi 050325-3
  164. vpnc 0.5.3-3
  165. wget 1.12-4
  166. which 2.20-4
  167. wireless_tools 29-4
  168. wpa_actiond 1.1-1
  169. wpa_supplicant 0.7.3-1
  170. xfsprogs 3.1.4-1
  171. xz 5.0.0-1
  172. zip 3.0-1.1
  173. zlib 1.2.5-3

  174. 模块 0_002_python 包含:
  175. ----------------------------------------
  176. cairo 1.10.2-1
  177. dbus-python 0.83.1-2
  178. fontconfig 2.8.0-1
  179. freetype2 2.4.4-1
  180. kbproto 1.0.5-1
  181. libffi 3.0.9-1
  182. libpng 1.4.5-1
  183. libx11 1.4.0-1
  184. libxau 1.0.6-1
  185. libxcb 1.7-1
  186. libxdmcp 1.1.0-1
  187. libxrender 0.9.6-1
  188. pixman 0.20.0-1
  189. python2 2.7.1-3
  190. python2-cairo 1.8.10-1
  191. python 3.1.3-1
  192. python-cairo 1.8.10-1
  193. renderproto 0.11.1-1
  194. xcb-proto 1.6-2
  195. xproto 7.0.20-1

  196. 模块 1_001_app 包含:
  197. ----------------------------------------
  198. aircrack-ng 1.1-1
  199. bridge-utils 1.4-3
  200. ca-certificates 20090814+nmu2-1
  201. cdargs 1.35-2
  202. cdrkit 1.1.11-1
  203. codecs 20100303-1
  204. cowpatty 4.6-1
  205. curl 7.21.3-1
  206. ddrescue 1.13-1
  207. dnsutils 9.7.2.P3-1
  208. gnu-netcat 0.7.1-3
  209. gnutls 2.10.4-1
  210. hping 3.0.0-1
  211. htop 0.8.3-1
  212. iotop 0.4.2-2
  213. iptraf 3.0.0-2
  214. iw 0.9.20-1
  215. lftp 4.1.1-1
  216. libstdc++5 3.3.6-3
  217. libtasn1 2.8-1
  218. lighttpd 1.4.28-3
  219. lua 5.1.4-6
  220. macchanger 1.5.0-3
  221. mdk3 v6-1
  222. netbrake 0.2-3
  223. netcount 0.8i-2
  224. nethogs 0.7.0-2
  225. nmap 5.21-3
  226. ntp 4.2.6.p2-1
  227. openssh 5.6p1-1
  228. pastebin 0.1-1
  229. rsync 3.0.7-1
  230. run-parts 3.4.1-1
  231. screen 4.0.3-10
  232. sshfs 2.2-3
  233. tcpdump 4.1.1-1
  234. tcpflow 0.21-4
  235. tftp-hpa 5.0-3
  236. tree 1.5.3-1
  237. vifm 0.5-2
  238. vnstat 1.10-5
  239. wgetpaste 2.18-1
  240. wvdial 1.61-2
  241. wvstreams 4.6.1-2
  242. xplc 0.3.13-3

  243. 模块 2_003_xorg 包含:
  244. ----------------------------------------
  245. acpi 1.4-2
  246. aliedit 1.0.3.20-1
  247. alsa-lib 1.0.23-2
  248. alsa-oss 1.0.17-1
  249. alsa-utils 1.0.23-3
  250. archlive-installer 6-1
  251. ati-dri 7.9.99.git20101230-1
  252. atk 1.32.0-1
  253. aumix-gtk 2.9.1-1
  254. avahi 0.6.28-1
  255. compositeproto 0.4.2-1
  256. consolekit 0.4.2-1
  257. damageproto 1.2.1-1
  258. dbus 1.4.1-1
  259. desktop-file-utils 0.16-1
  260. dmidecode 2.10-1
  261. eject 2.1.5-4
  262. exitx 1.2-2
  263. fcitx 4.0.0-1
  264. feh 1.10.1-1
  265. fixesproto 4.1.2-1
  266. flashplugin 10.1.102.65-1
  267. fontsproto 2.1.1-1
  268. gamin 0.1.10-4
  269. gconf 2.32.0-1
  270. gdk-pixbuf2 2.22.1-1
  271. giblib 1.2.4-4
  272. giflib 4.1.6-3
  273. gksu 2.0.2-2
  274. glib 1.2.10-8
  275. gmrun 0.9.2-3
  276. gnome-icon-theme 2.31.0-1
  277. gobject-introspection 0.9.12-1
  278. gpm 1.20.6-6
  279. gsnapshot 1.0-1
  280. gstreamer0.10 0.10.31-1
  281. gstreamer0.10-base 0.10.31-1
  282. gtk 1.2.10-10
  283. gtk2 2.22.1-1
  284. gtk-aurora-engine 1.5.1-2
  285. gtk-engine-equinox 1.1-1
  286. gtk-engine-murrine 0.98.1.1-2
  287. hal 0.5.14-5
  288. hal-info 0.20091130-1
  289. hicolor-icon-theme 0.12-1
  290. icon-naming-utils 0.8.90-1
  291. imlib2 1.4.4-1
  292. inputproto 2.0.1-1
  293. intel-dri 7.9.99.git20101230-1
  294. intltool 0.41.1-2
  295. iso-codes 3.14-1
  296. leafpad 0.8.18.1-1
  297. libcroco 0.6.2-1
  298. libcups 1.4.5-2
  299. libdatrie 0.2.4-1
  300. libdrm 2.4.23-1
  301. libfm 0.1.14-2
  302. libfontenc 1.1.0-1
  303. libgksu 2.0.12-3
  304. libgl 7.9.99.git20101230-1
  305. libglade 2.6.4-2
  306. libgnome-keyring 2.32.0-1
  307. libgtop 2.28.2-1
  308. libice 1.0.7-1
  309. libid3tag 0.15.1b-6
  310. libidl2 0.8.14-1
  311. libjpeg6 6b-9
  312. libjpeg7 7-1
  313. libjpeg 8.0.2-1
  314. libnotify 0.5.2-1
  315. libpciaccess 0.12.0-1
  316. libpng12 1.2.40-1
  317. librsvg 2.32.1-1
  318. libsexy 0.1.11-2
  319. libsm 1.2.0-1
  320. libthai 0.1.14-1
  321. libtiff 3.9.4-1
  322. libtool 2.4-2
  323. libwnck 2.30.6-1
  324. libx86 1.1-2
  325. libxaw 1.0.8-1
  326. libxcomposite 0.4.3-1
  327. libxcursor 1.1.11-1
  328. libxdamage 1.1.3-1
  329. libxext 1.2.0-1
  330. libxfixes 4.0.5-1
  331. libxfont 1.4.3-1
  332. libxft 2.2.0-1
  333. libxi 1.4.0-1
  334. libxinerama 1.1.1-1
  335. libxkbfile 1.0.7-1
  336. libxmu 1.1.0-1
  337. libxpm 3.5.9-1
  338. libxrandr 1.3.1-1
  339. libxres 1.0.5-1
  340. libxt 1.0.9-1
  341. libxtst 1.2.0-1
  342. libxv 1.0.6-1
  343. libxvmc 1.0.6-1
  344. libxxf86vm 1.1.1-1
  345. lxappearance 20101121-1
  346. lxmenu-data 0.1.1-1
  347. lxpanel 0.5.6-1
  348. lxterminal 0.1.9-1
  349. mach64-dri 7.9.99.git20101230-1
  350. mcpp 2.7.2-2
  351. menu-cache 0.3.2-1
  352. mga-dri 7.9.99.git20101230-1
  353. mint-x-icons 1.0.4-2
  354. mobile-broadband-provider-info 20100510-1
  355. mozilla-common 1.4-1
  356. mpg123 1.12.3-1
  357. mtasc 20091229-1
  358. network-manager-applet 0.8.2-2
  359. notification-daemon 0.4.0-4
  360. obkey 20101222-1
  361. obmenu 1.0-8
  362. openbox 3.4.11.2-2
  363. openbox-menu 0.3.5-1
  364. orbit2 2.14.19-1
  365. orc 0.4.11-1
  366. oss-hg 923-1
  367. pango 1.28.3-1
  368. pcmanfm 0.9.8-2
  369. peazip-gtk2 3.6-1
  370. perl-xml-parser 2.40-1
  371. perl-xml-simple 2.18-3
  372. pm-quirks 0.20100619-1
  373. pm-utils 1.4.1-1
  374. polkit-gnome 0.99-1
  375. prism 1.0b4-1
  376. pygobject 2.26.0-2
  377. pygtk 2.22.0-3
  378. python-xlib 0.15rc1-4
  379. r128-dri 7.9.99.git20101230-1
  380. randrproto 1.3.2-1
  381. recordproto 1.14.1-1
  382. rxvt-unicode 9.09-1
  383. savage-dri 7.9.99.git20101230-1
  384. scrot 0.8-4
  385. shared-mime-info 0.80-1
  386. sis-dri 7.9.99.git20101230-1
  387. slim-archlive 1.3.1-2
  388. slock 0.9-6
  389. startup-notification 0.10-1
  390. tdfx-dri 7.9.99.git20101230-1
  391. tigervnc 1.0.1_p20100914-3
  392. transset-df 6-2
  393. ttf-dejavu 2.32-2
  394. vattery 0.67-1
  395. vbetool 1.1-1
  396. videoproto 2.3.1-1
  397. viewnior 1.1-1
  398. virtualbox-additions 4.0.0-2.6.37_ARCH
  399. volumeicon 0.3.0-1
  400. vte 0.26.2-1
  401. wqy-bitmapfont 0.9.9-6
  402. xarchiver 0.5.2-1
  403. xcb-util 0.3.6-1
  404. xcompmgr 1.1.5-1
  405. xdg-utils 1.0.2.20100618-1
  406. xdialog 2.3.1-4
  407. xextproto 7.1.2-1
  408. xf86-input-evdev 2.5.0-1
  409. xf86-input-keyboard 1.4.0-3
  410. xf86-input-mouse 1.6.0-1
  411. xf86-input-synaptics 1.3.0-2
  412. xf86-video-apm 1.2.3-1
  413. xf86-video-ark 0.7.3-1
  414. xf86-video-ast 0.91.10-1
  415. xf86-video-ati 6.13.2-2
  416. xf86-video-chips 1.2.3-1
  417. xf86-video-cirrus 1.3.2-4
  418. xf86-video-dummy 0.3.4-2
  419. xf86-video-fbdev 0.4.2-2
  420. xf86-video-geode 2.11.10-1
  421. xf86-video-geode-latest 2.11.9-1
  422. xf86-video-glint 1.2.4-4
  423. xf86-video-i128 1.3.4-1
  424. xf86-video-i740 1.3.2-4
  425. xf86-video-intel 2.13.903-1
  426. xf86-video-mach64 6.8.2-4
  427. xf86-video-mga 1.4.13-1
  428. xf86-video-neomagic 1.2.5-2
  429. xf86-video-nv 2.1.18-1
  430. xf86-video-r128 6.8.1-4
  431. xf86-video-rendition 4.2.4-2
  432. xf86-video-s3 0.6.3-3
  433. xf86-video-s3virge 1.10.4-3
  434. xf86-video-savage 2.3.1-4
  435. xf86-video-siliconmotion 1.7.4-2
  436. xf86-video-sis 0.10.3-2
  437. xf86-video-sisusb 0.9.4-2
  438. xf86-video-tdfx 1.4.3-4
  439. xf86-video-trident 1.3.4-2
  440. xf86-video-tseng 1.2.4-2
  441. xf86-video-v4l 0.2.0-6
  442. xf86-video-vesa 2.3.0-3
  443. xf86-video-vmware 11.0.3-1
  444. xf86-video-voodoo 1.2.4-2
  445. xf86-video-xgi 1.6.0-1
  446. xf86-video-xgixp 1.8.0-1
  447. xf86vidmodeproto 2.3-1
  448. xineramaproto 1.2-1
  449. xkeyboard-config 2.0-1
  450. xkeycaps 2.46-5
  451. xorg-fonts-alias 1.0.2-1
  452. xorg-fonts-encodings 1.0.3-1
  453. xorg-fonts-misc 1.0.1-1
  454. xorg-font-utils 7.5-2
  455. xorg-server 1.9.3-1
  456. xorg-server-common 1.9.3-1
  457. xorg-xauth 1.0.5-1
  458. xorg-xinit 1.3.0-2
  459. xorg-xkb-utils 7.5-2
  460. xorg-xrdb 1.0.7-1
  461. xorg-xsetroot 1.1.0-1
  462. yong 1.3.0-1

  463. 模块 3_006_medialib 包含:
  464. ----------------------------------------
  465. a52dec 0.7.4-4
  466. aalib 1.4rc5-7
  467. audacious-plugins 2.4.2-1
  468. audiofile 0.2.7-1
  469. cdparanoia 10.2-2
  470. cmus 2.3.3-1
  471. dmxproto 2.3-1
  472. dri2proto 2.3-1
  473. enca 1.13-1
  474. esound 0.2.41-1
  475. exempi 2.1.1-1
  476. faac 1.28-2
  477. faad2 2.7-1
  478. ffmpeg 25679-1
  479. fftw 3.2.2-1
  480. flac 1.2.1-2
  481. freeglut 2.6.0-1
  482. glproto 1.4.12-1
  483. gsm 1.0.13-6
  484. gstreamer0.10-bad 0.10.20-1
  485. gstreamer0.10-bad-plugins 0.10.20-1
  486. gstreamer0.10-ffmpeg 0.10.11-1
  487. gstreamer0.10-good 0.10.26-1
  488. gstreamer0.10-good-plugins 0.10.26-1
  489. gstreamer0.10-ugly 0.10.16-1
  490. gstreamer0.10-ugly-plugins 0.10.16-1
  491. jack 0.118.0-4
  492. jasper 1.900.1-6
  493. ladspa 1.13-2
  494. lame 3.98.4-1
  495. libao 1.0.0-5
  496. libass 0.9.11-1
  497. libasyncns 0.8-3
  498. libavc1394 0.5.3-3
  499. libcaca 0.99.beta17-1
  500. libcdaudio 0.99.12-5
  501. libcddb 1.3.2-2
  502. libcdio 0.82-1
  503. libdc1394 2.1.2-2
  504. libdca 0.0.5-2
  505. libdmx 1.1.1-1
  506. libdv 1.0.0-3
  507. libdvdnav 4.1.3-2
  508. libdvdread 4.1.3-2
  509. libexif 0.6.19-1
  510. libftdi 0.18-2
  511. libgme 0.5.5-3
  512. libguess 1.0-2
  513. libiec61883 1.2.0-2
  514. liblrdf 0.4.0-6
  515. libmad 0.15.1b-4
  516. libmcs 0.7.2-1
  517. libmms 0.6-1
  518. libmng 1.0.10-3
  519. libmodplug 0.8.8.1-1
  520. libmowgli 0.7.1-1
  521. libmp4v2 1.9.1-1
  522. libmpcdec 1.2.6-2
  523. libmpeg2 0.5.1-1
  524. libofa 0.9.3-2
  525. libogg 1.2.2-1
  526. libproxy 0.4.6-2
  527. libpulse 0.9.22-2
  528. libraw1394 2.0.5-1
  529. libsamplerate 0.1.7-1
  530. libshout 2.2.2-3
  531. libsidplay 1.36.59-4
  532. libsndfile 1.0.23-1
  533. libsoup 2.32.2-1
  534. libsoup-gnome 2.32.2-1
  535. libtheora 1.1.1-1
  536. libva 1.0.6-1
  537. libvdpau 0.4-1
  538. libvorbis 1.3.2-1
  539. libvpx 0.9.5-2
  540. libxslt 1.1.26-2
  541. libxss 1.2.1-1
  542. libxxf86dga 1.1.2-1
  543. lirc-utils 0.9.0.pre1-2
  544. mac 3.99u4b5-4
  545. mesa 7.9.99.git20101230-1
  546. mjpegtools 1.9.0-4
  547. musicbrainz 2.1.5-4
  548. neon 0.29.3-2
  549. opencore-amr 0.1.2-1
  550. openjpeg 1.3-3
  551. python-notify 0.1.1-8
  552. raptor 1.4.21-2
  553. recode 3.6-6
  554. recordmydesktop 0.3.8.1-5
  555. rtmpdump 2.3-3
  556. schroedinger 1.0.10-1
  557. scrnsaverproto 1.2.1-1
  558. sdl 1.2.14-6
  559. soundtouch 1.5.0-1
  560. speex 1.2rc1-1.1
  561. taglib 1.6.3-1
  562. v4l-utils 0.8.1-1
  563. wavpack 4.60.1-1
  564. x264 20101013-1
  565. xf86dgaproto 2.1-1
  566. xorg-utils 7.6-6
  567. xorg-xdpyinfo 1.2.0-1
  568. xorg-xdriinfo 1.0.4-1
  569. xorg-xev 1.1.0-1
  570. xorg-xlsatoms 1.1.0-1
  571. xorg-xlsclients 1.1.1-1
  572. xorg-xprop 1.2.0-1
  573. xorg-xvinfo 1.1.1-1
  574. xorg-xwininfo 1.1.1-1
  575. xvidcore 1.2.2-1

  576. 模块 3_001_qt 包含:
  577. ----------------------------------------
  578. qt 4.7.1-3

  579. 模块 3_004_xlib 包含:
  580. ----------------------------------------
  581. aspell 0.60.6-4
  582. atkmm 2.22.1-2
  583. cairomm 1.8.6-1
  584. cyrus-sasl-plugins 2.1.23-2
  585. enchant 1.6.0-1
  586. farsight2 0.0.22-1
  587. freerdp 0.8.2-1
  588. gd 2.0.36RC1-3
  589. geoip 1.4.6-1
  590. glibmm 2.24.2-1
  591. gstreamer0.10-base-plugins 0.10.31-1
  592. gstreamer0.10-python 0.10.18-3
  593. gtkmm 2.22.0-1
  594. gtkspell 2.0.16-1
  595. hunspell 1.2.12-1
  596. libglademm 2.6.7-1
  597. libidn 1.19-1
  598. libkeybinder 0.2.2-1
  599. libmysqlclient 5.5.8-6
  600. libnice 0.0.13-3
  601. libsigc++ 2.2.8-1
  602. libssh 0.4.6-1
  603. libunique 1.1.6-3
  604. libupnp 1.6.9-1
  605. libvisual 0.4.0-3
  606. mutagen 1.20-3
  607. pangomm 2.26.2-1
  608. postgresql-libs 9.0.2-2
  609. python2-distribute 0.6.14-2
  610. python-chardet 2.0.1-3
  611. python-keybinder 0.2.2-3
  612. python-pexpect 2.3-4
  613. python-simplejson 2.1.1-2
  614. silc-toolkit 1.1.10-1
  615. telepathy-glib 0.12.7-1
  616. wxgtk 2.8.11-2

  617. 模块 3_005_xapps 包含:
  618. ----------------------------------------
  619. amule-dlp 2.2.6-DLP4101
  620. benliud 0.3.3.2-1
  621. finch 2.7.9-1
  622. foobnix 0.2.2-6
  623. foxitreader 1.1-2
  624. gmchess 0.20.4-1
  625. gparted 0.7.1-1
  626. hardinfo 0.5.1-2
  627. isomaster 1.3.7-1
  628. libpurple 2.7.9-1
  629. linuxqq 1.0.2beta1-3
  630. localed 2.0-2
  631. luser 1.0-2
  632. meld 1.4.0-2
  633. openfetion 2.1.0-1
  634. pidgin 2.7.9-1
  635. rdesktop 1.6.0-5
  636. realplayer 11.0.2.1744-1
  637. remmina 0.9.1-1
  638. remmina-plugins 0.9.0-1
  639. stardict 3.0.1-3
  640. stardict-babylon-Longman-img 2.4.2-1
  641. stardict-powerword2007_pwpcehh 2.4.2-1
  642. transmission-gtk 2.13-1
  643. wxflashget 1.0.3-2

  644. 模块 3_009_media 包含:
  645. ----------------------------------------
  646. agg 2.5-3
  647. audacious 2.4.2-1
  648. boost-libs 1.45.0-1
  649. deadbeef 0.4.4-1
  650. fluidsynth 1.1.3-2
  651. fribidi 0.19.2-1
  652. gmbox 186-1
  653. gnash-common 0.8.8-2
  654. gnash-gtk 0.8.8-2
  655. gtk-recordmydesktop 0.3.8-5
  656. libdvbpsi 0.1.7-1
  657. libebml 1.0.0-1
  658. libmatroska 1.0.0-1
  659. libmtp 1.0.2-2
  660. liboil 0.3.17-1
  661. mplayer 32663-1
  662. ppstream 1.0.0-3
  663. qmmp 0.4.3-1
  664. sdl_image 1.2.10-2
  665. ShowLyric 0.3.11-1
  666. smplayer 0.6.9-3
  667. swfdec 0.8.4-2
  668. teamspeak3 beta36-1
  669. teamspeak3-server beta29-1
  670. ttf-freefont 20090104-2
  671. vlc 1.1.5-2
  672. zvbi 0.2.33-3

  673. 模块 4_firefox 包含:
  674. ----------------------------------------
  675. arch-firefox-search 0.7-6
  676. firefox 3.6.13-1
  677. firefox-i18n-zh-cn 3.6.13-1
  678. gmime 2.4.21-1
  679. mime-types 1.0-3
  680. totem 2.32.0-3
  681. totem-plparser 2.32.1-1
  682. totem-plugin 2.32.0-3
  683. webapps 1.0.b4-1
  684. xulrunner 1.9.2.13-3

  685. 模块 4_opera 包含:
  686. ----------------------------------------
  687. opera 11.00-1

  688. 模块 4_printer 包含:
  689. ----------------------------------------
  690. cups 1.4.5-2
  691. cups-cn 1.4.2-1
  692. cups-pdf 2.5.0-1
  693. foomatic-db 4.0.6_20101215-1
  694. foomatic-db-engine 4.0.6_20101215-1
  695. foomatic-db-nonfree 4.0.6_20101215-1
  696. foomatic-filters 4.0.6_20101215-1
  697. ghostscript 9.00-2
  698. lcms 1.19-1
  699. openslp 1.2.1-3
  700. poppler 0.14.5-1
  701. poppler-data 0.4.4-1

  702. 模块 4_teamviewer 包含:
  703. ----------------------------------------
  704. teamviewer 6.0.9224-cn.1

  705. 模块 4_googleearth 包含:
  706. ----------------------------------------
  707. google-earth 6.0.0.1735-2
  708. ld-lsb 3-1

  709. 模块 4_skype 包含:
  710. ----------------------------------------
  711. skype 2.1.0.81-2

  712. 模块 4_vim 包含:
  713. ----------------------------------------
  714. ctags 5.8-2
  715. vim 7.3.69-2
  716. vim-a 2.18-5
  717. vim-bufexplorer 7.2.8-4
  718. vim-buftabs 0.16-1
  719. vim-colorsamplerpack 8.03-2
  720. vim-doxygentoolkit 0.2.7-1
  721. vim-guicolorscheme 1.2-3
  722. vim-matchit 1.13.2-4
  723. vim-minibufexpl 6.3.2-7
  724. vim-nerdcommenter 2.2.2-3
  725. vim-nerdtree 4.1.0-5
  726. vim-omnicppcomplete 0.4.1-5
  727. vim-project 1.4.1-5
  728. vim-runtime 7.3.69-2
  729. vim-snipmate 0.83-7
  730. vim-taglist 45-4
  731. vim-vcscommand 1.99.42-1
  732. vim-workspace 1.0b1-5

  733. 模块 4_stock 包含:
  734. ----------------------------------------
  735. q-sheng 1.51-2

  736. 模块 4_wine 包含:
  737. ----------------------------------------
  738. wine 1.3.10-1

  739. 模块 4_wine_apps 包含:
  740. ----------------------------------------
  741. foobar2000 1.1.1-1

  742. 模块 6_010_devel 包含:
  743. ----------------------------------------
  744. abs 2.4.2-1
  745. apr 1.4.2-1
  746. apr-util 1.3.10-2
  747. aurvote 0.4-2
  748. autoconf 2.68-1
  749. automake 1.11.1-2
  750. bin86 0.16.17-5
  751. bzr 2.1.2-2
  752. cloog-ppl 0.15.10-2
  753. cmake 2.8.3-1
  754. elfutils 0.150-1
  755. fakeroot 1.14.5-1
  756. gcc 4.5.2-4
  757. git 1.7.3.4-1
  758. libmpc 0.8.2-2
  759. m4 1.4.15-1
  760. make 3.82-2
  761. mercurial 1.7.3-1
  762. mpfr 3.0.0.p8-1
  763. package-query 0.5.1-1
  764. patch 2.6.1-2
  765. perl-error 0.17016-1
  766. pkg-config 0.25-3
  767. pkgtools 21-2
  768. ppl 0.11-1
  769. subversion 1.6.15-1
  770. unixodbc 2.3.0-1
  771. yajl 1.0.11-2
  772. yaourt 0.9.5.1-1
复制代码
发表于 2011-1-8 13:10:09 | 显示全部楼层
我讨厌hi.baidu
回复 支持 反对

使用道具 举报

发表于 2011-1-8 16:00:15 | 显示全部楼层
这个要支持。。

对了,飞天豹的中文补丁是怎么打上的,现在内核已经没有selection.c和vt.c了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-1-8 22:02:46 | 显示全部楼层
稍微修改了下core补丁

utf8-kernel-2.6.37-core-1.patch

部分文件改了位置。。。


  1. # 作者(author): 孙海勇
  2. # 发布协议(License): GPL v2
  3. # 邮件(email): youbest@sina.com
  4. # 说明:此补丁用于Linux内核,实现直接在framebuffer环境下直接显示UTF-8编码的文字功能。此补丁为功能补丁,不包含字库。

  5. diff -Nurp linux-2.6.37.orig/drivers/tty/vt/selection.c linux-2.6.37/drivers/tty/vt/selection.c
  6. --- linux-2.6.37.orig/drivers/tty/vt/selection.c        2010-10-20 20:30:22.000000000 +0000
  7. +++ linux-2.6.37/drivers/tty/vt/selection.c        2010-10-24 16:49:39.255929000 +0000
  8. @@ -60,8 +60,7 @@ static inline void highlight_pointer(con
  9. static u16
  10. sel_pos(int n)
  11. {
  12. -        return inverse_translate(sel_cons, screen_glyph(sel_cons, n),
  13. -                                use_unicode);
  14. +        return screen_glyph(sel_cons, n);
  15. }

  16. /* remove the current selection highlight, if any,
  17. @@ -296,6 +295,8 @@ int set_selection(const struct tiocl_sel
  18.                         }
  19.                         obp = bp;
  20.                 }
  21. +                if (c > 0x80)
  22. +                        i += 2;
  23.         }
  24.         sel_buffer_lth = bp - sel_buffer;
  25.         return 0;
  26. diff -Nurp linux-2.6.37.orig/drivers/tty/vt/vt.c linux-2.6.37/drivers/tty/vt/vt.c
  27. --- linux-2.6.37.orig/drivers/tty/vt/vt.c        2010-10-20 20:30:22.000000000 +0000
  28. +++ linux-2.6.37/drivers/tty/vt/vt.c        2010-10-24 16:50:30.935929000 +0000
  29. @@ -288,6 +288,20 @@ static inline unsigned short *screenpos(
  30.         return p;
  31. }

  32. +static inline unsigned short *screenpos_utf8(struct vc_data *vc, int offset, int viewed)
  33. +{
  34. +        unsigned short *p;
  35. +
  36. +        if (!viewed)
  37. +                p = (unsigned short *)(vc->vc_origin + offset + vc->vc_screenbuf_size);
  38. +        else if (!vc->vc_sw->con_screen_pos)
  39. +                p = (unsigned short *)(vc->vc_visible_origin + offset + vc->vc_screenbuf_size);
  40. +        else
  41. +                p = vc->vc_sw->con_screen_pos(vc, -offset - 1);
  42. +        return p;
  43. +}
  44. +
  45. +
  46. /* Called  from the keyboard irq path.. */
  47. static inline void scrolldelta(int lines)
  48. {
  49. @@ -318,6 +332,11 @@ static void scrup(struct vc_data *vc, un
  50.         scr_memmovew(d, s, (b - t - nr) * vc->vc_size_row);
  51.         scr_memsetw(d + (b - t - nr) * vc->vc_cols, vc->vc_video_erase_char,
  52.                     vc->vc_size_row * nr);
  53. +        d += (vc->vc_screenbuf_size >> 1);
  54. +        s += (vc->vc_screenbuf_size >> 1);
  55. +        scr_memmovew(d, s, (b - t - nr) * vc->vc_size_row);
  56. +        scr_memsetw(d + (b - t - nr) * vc->vc_cols, 0,
  57. +                    vc->vc_size_row * nr);
  58. }

  59. static void scrdown(struct vc_data *vc, unsigned int t, unsigned int b, int nr)
  60. @@ -335,6 +354,9 @@ static void scrdown(struct vc_data *vc,
  61.         step = vc->vc_cols * nr;
  62.         scr_memmovew(s + step, s, (b - t - nr) * vc->vc_size_row);
  63.         scr_memsetw(s, vc->vc_video_erase_char, 2 * step);
  64. +          s += (vc->vc_screenbuf_size >> 1);
  65. +          scr_memmovew(s + step, s, (b - t - nr) * vc->vc_size_row);
  66. +          scr_memsetw(s, 0, 2 * step);
  67. }

  68. static void do_update_region(struct vc_data *vc, unsigned long start, int count)
  69. @@ -502,6 +524,8 @@ void complement_pos(struct vc_data *vc,
  70.         static int old_offset = -1;
  71.         static unsigned short old;
  72.         static unsigned short oldx, oldy;
  73. +        static unsigned short *p_ext = NULL;
  74. +        static unsigned short old_ext = 0;

  75.         WARN_CONSOLE_UNLOCKED();

  76. @@ -509,7 +533,7 @@ void complement_pos(struct vc_data *vc,
  77.             old_offset < vc->vc_screenbuf_size) {
  78.                 scr_writew(old, screenpos(vc, old_offset, 1));
  79.                 if (DO_UPDATE(vc))
  80. -                        vc->vc_sw->con_putc(vc, old, oldy, oldx);
  81. +                        vc->vc_sw->con_putc(vc, (old_ext << 16)|old, oldy, oldx);
  82.         }

  83.         old_offset = offset;
  84. @@ -519,13 +543,15 @@ void complement_pos(struct vc_data *vc,
  85.                 unsigned short new;
  86.                 unsigned short *p;
  87.                 p = screenpos(vc, offset, 1);
  88. +                p_ext = screenpos_utf8(vc, offset, 1);
  89.                 old = scr_readw(p);
  90. +                old_ext = scr_readw(p_ext);
  91.                 new = old ^ vc->vc_complement_mask;
  92.                 scr_writew(new, p);
  93.                 if (DO_UPDATE(vc)) {
  94.                         oldx = (offset >> 1) % vc->vc_cols;
  95.                         oldy = (offset >> 1) / vc->vc_cols;
  96. -                        vc->vc_sw->con_putc(vc, new, oldy, oldx);
  97. +                        vc->vc_sw->con_putc(vc, (old_ext << 16)|new, oldy, oldx);
  98.                 }
  99.         }

  100. @@ -789,7 +815,7 @@ int vc_allocate(unsigned int currcons)        /
  101.             visual_init(vc, currcons, 1);
  102.             if (!*vc->vc_uni_pagedir_loc)
  103.                 con_set_default_unimap(vc);
  104. -            vc->vc_screenbuf = kmalloc(vc->vc_screenbuf_size, GFP_KERNEL);
  105. +            vc->vc_screenbuf = kmalloc(vc->vc_screenbuf_size * 2, GFP_KERNEL);
  106.             if (!vc->vc_screenbuf) {
  107.                 kfree(vc);
  108.                 vc_cons[currcons].d = NULL;
  109. @@ -873,7 +899,7 @@ static int vc_do_resize(struct tty_struc
  110.         if (new_cols == vc->vc_cols && new_rows == vc->vc_rows)
  111.                 return 0;

  112. -        newscreen = kmalloc(new_screen_size, GFP_USER);
  113. +        newscreen = kmalloc(new_screen_size * 2, GFP_USER);
  114.         if (!newscreen)
  115.                 return -ENOMEM;

  116. @@ -922,15 +948,23 @@ static int vc_do_resize(struct tty_struc
  117.         while (old_origin < end) {
  118.                 scr_memcpyw((unsigned short *) new_origin,
  119.                             (unsigned short *) old_origin, rlth);
  120. -                if (rrem)
  121. +                 scr_memcpyw((unsigned short *) new_origin + (new_screen_size >> 1),
  122. +                             (unsigned short *) old_origin + (old_screen_size >> 1), rlth);
  123. +                if (rrem){
  124.                         scr_memsetw((void *)(new_origin + rlth),
  125.                                     vc->vc_video_erase_char, rrem);
  126. +                         scr_memsetw((void *)(new_origin + rlth + (new_screen_size)),
  127. +                                     vc->vc_video_erase_char, rrem);
  128. +                }
  129.                 old_origin += old_row_size;
  130.                 new_origin += new_row_size;
  131.         }
  132. -        if (new_scr_end > new_origin)
  133. +        if (new_scr_end > new_origin){
  134.                 scr_memsetw((void *)new_origin, vc->vc_video_erase_char,
  135.                             new_scr_end - new_origin);
  136. +                 scr_memsetw((void *)new_origin + (new_screen_size), vc->vc_video_erase_char,
  137. +                             new_scr_end - new_origin);
  138. +        }
  139.         kfree(vc->vc_screenbuf);
  140.         vc->vc_screenbuf = newscreen;
  141.         vc->vc_screenbuf_size = new_screen_size;
  142. @@ -2121,7 +2155,7 @@ static int do_con_write(struct tty_struc
  143.         }
  144. #endif

  145. -        int c, tc, ok, n = 0, draw_x = -1;
  146. +        int c, tc, tc_1 , ok, n = 0, draw_x = -1;
  147.         unsigned int currcons;
  148.         unsigned long draw_from = 0, draw_to = 0;
  149.         struct vc_data *vc;
  150. @@ -2131,6 +2165,7 @@ static int do_con_write(struct tty_struc
  151.         uint8_t inverse;
  152.         uint8_t width;
  153.         u16 himask, charmask;
  154. +         int is_utf8 = 0;

  155.         if (in_interrupt())
  156.                 return count;
  157. @@ -2171,6 +2206,8 @@ static int do_con_write(struct tty_struc
  158.                 rescan = 0;
  159.                 inverse = 0;
  160.                 width = 1;
  161. +                vc->vc_utf = 1;
  162. +                vc->vc_disp_ctrl = 0;

  163.                 /* Do no translation at all in control states */
  164.                 if (vc->vc_state != ESnormal) {
  165. @@ -2212,6 +2249,7 @@ rescan_last_byte:
  166.                             vc->vc_utf_count = 0;
  167.                             c = 0xfffd;
  168.                         } else if (c > 0x7f) {
  169. +                            is_utf8 = 1;
  170.                             /* First byte of a multibyte sequence received */
  171.                             vc->vc_npar = 0;
  172.                             if ((c & 0xe0) == 0xc0) {
  173. @@ -2237,8 +2275,9 @@ rescan_last_byte:
  174.                                 /* Still need some bytes */
  175.                                 continue;
  176.                             }
  177. +                        } else {
  178. +                                is_utf8 = 0;
  179.                         }
  180. -                        /* Nothing to do if an ASCII byte was received */
  181.                     }
  182.                     /* End of UTF-8 decoding. */
  183.                     /* c is the received character, or U+FFFD for invalid sequences. */
  184. @@ -2316,39 +2355,124 @@ rescan_last_byte:
  185.                         }

  186.                         while (1) {
  187. -                                if (vc->vc_need_wrap || vc->vc_decim)
  188. -                                        FLUSH
  189. -                                if (vc->vc_need_wrap) {
  190. -                                        cr(vc);
  191. -                                        lf(vc);
  192. -                                }
  193. -                                if (vc->vc_decim)
  194. -                                        insert_char(vc, 1);
  195. -                                scr_writew(himask ?
  196. -                                             ((vc_attr << 8) & ~himask) + ((tc & 0x100) ? himask : 0) + (tc & 0xff) :
  197. -                                             (vc_attr << 8) + tc,
  198. -                                           (u16 *) vc->vc_pos);
  199. -                                if (DO_UPDATE(vc) && draw_x < 0) {
  200. -                                        draw_x = vc->vc_x;
  201. -                                        draw_from = vc->vc_pos;
  202. -                                }
  203. -                                if (vc->vc_x == vc->vc_cols - 1) {
  204. -                                        vc->vc_need_wrap = vc->vc_decawm;
  205. -                                        draw_to = vc->vc_pos + 2;
  206. -                                } else {
  207. -                                        vc->vc_x++;
  208. -                                        draw_to = (vc->vc_pos += 2);
  209. -                                }
  210. -
  211. -                                if (!--width) break;
  212. +                                if(is_utf8 == 0) {
  213. +                                        if (vc->vc_need_wrap || vc->vc_decim)
  214. +                                                FLUSH
  215. +                                        if (vc->vc_need_wrap) {
  216. +                                                cr(vc);
  217. +                                                lf(vc);
  218. +                                        }
  219. +                                        if (vc->vc_decim)
  220. +                                                insert_char(vc, 1);
  221. +                                        scr_writew(himask ?
  222. +                                                     ((vc_attr << 8) & ~himask) + ((tc & 0x100) ? himask : 0) + (tc & 0xff) :
  223. +                                                     (vc_attr << 8) + tc,
  224. +                                                   (u16 *) vc->vc_pos);
  225. +                                        scr_writew(0, (u16 *) vc->vc_pos + (vc->vc_screenbuf_size >> 1));
  226. +                                        if (DO_UPDATE(vc) && draw_x < 0) {
  227. +                                                draw_x = vc->vc_x;
  228. +                                                draw_from = vc->vc_pos;
  229. +                                        }
  230. +                                        if (vc->vc_x == vc->vc_cols - 1) {
  231. +                                                vc->vc_need_wrap = vc->vc_decawm;
  232. +                                                draw_to = vc->vc_pos + 2;
  233. +                                        } else {
  234. +                                                vc->vc_x++;
  235. +                                                draw_to = (vc->vc_pos += 2);
  236. +                                        }
  237. +
  238. +                                        if (!--width) break;
  239. +
  240. +                                        tc = conv_uni_to_pc(vc, ' '); /* A space is printed in the second column */
  241. +                                        if (tc < 0) tc = ' ';
  242. +
  243. +                                        notify_write(vc, c);
  244. +
  245. +                                        if (inverse) {
  246. +                                                FLUSH
  247. +                                        }

  248. -                                tc = conv_uni_to_pc(vc, ' '); /* A space is printed in the second column */
  249. -                                if (tc < 0) tc = ' ';
  250. -                        }
  251. -                        notify_write(vc, c);
  252. +                                } else {
  253. +                                        tc = 0xff;
  254. +                                        tc_1 = 0xfe;

  255. -                        if (inverse) {
  256. -                                FLUSH
  257. +                                        if (vc->vc_need_wrap || vc->vc_decim)
  258. +                                                FLUSH
  259. +                                        if (vc->vc_need_wrap) {
  260. +                                                cr(vc);
  261. +                                                lf(vc);
  262. +                                        }
  263. +
  264. +                                        if (vc->vc_decim)
  265. +                                                insert_char(vc, 1);
  266. +                                        scr_writew(himask ?
  267. +                                                     ((vc_attr << 8) & ~himask) + ((tc & 0x100) ? himask : 0) + (tc & 0xff) :
  268. +                                                     (vc_attr << 8) + tc,
  269. +                                                   (u16 *) vc->vc_pos);
  270. +                                        scr_writew(c,
  271. +                                                   (u16 *) vc->vc_pos + (vc->vc_screenbuf_size >> 1));
  272. +                                        if (DO_UPDATE(vc) && draw_x < 0) {
  273. +                                                draw_x = vc->vc_x;
  274. +                                                draw_from = vc->vc_pos;
  275. +                                        }
  276. +                                        if (vc->vc_x == vc->vc_cols - 1) {
  277. +                                                vc->vc_need_wrap = vc->vc_decawm;
  278. +                                                draw_to = vc->vc_pos + 2;
  279. +                                        } else {
  280. +                                                vc->vc_x++;
  281. +                                                draw_to = (vc->vc_pos += 2);
  282. +                                        }
  283. +
  284. +                                        if (!--width) break;
  285. +       
  286. +                                        tc = conv_uni_to_pc(vc, ' '); /* A space is printed in the second column */
  287. +                                        if (tc < 0) tc = ' ';
  288. +
  289. +                                        notify_write(vc, c);
  290. +
  291. +                                        if (inverse) {
  292. +                                                FLUSH
  293. +                                        }
  294. +
  295. +
  296. +                                        if (vc->vc_need_wrap || vc->vc_decim)
  297. +                                                FLUSH
  298. +                                        if (vc->vc_need_wrap) {
  299. +                                                cr(vc);
  300. +                                                lf(vc);
  301. +                                        }
  302. +
  303. +                                        if (vc->vc_decim)
  304. +                                                insert_char(vc, 1);
  305. +                                        scr_writew(himask ?
  306. +                                                     ((vc_attr << 8) & ~himask) + ((tc_1 & 0x100) ? himask : 0) + (tc_1 & 0xff) :
  307. +                                                     (vc_attr << 8) + tc_1,
  308. +                                                   (u16 *) vc->vc_pos);
  309. +                                        scr_writew(c,
  310. +                                                   (u16 *) vc->vc_pos + (vc->vc_screenbuf_size >> 1));
  311. +                                        if (DO_UPDATE(vc) && draw_x < 0) {
  312. +                                                draw_x = vc->vc_x;
  313. +                                                draw_from = vc->vc_pos;
  314. +                                        }
  315. +                                        if (vc->vc_x == vc->vc_cols - 1) {
  316. +                                                vc->vc_need_wrap = vc->vc_decawm;
  317. +                                                draw_to = vc->vc_pos + 2;
  318. +                                        } else {
  319. +                                                vc->vc_x++;
  320. +                                                draw_to = (vc->vc_pos += 2);
  321. +                                        }
  322. +
  323. +                                        if (!--width) break;
  324. +       
  325. +                                        tc = conv_uni_to_pc(vc, ' '); /* A space is printed in the second column */
  326. +                                        if (tc < 0) tc = ' ';
  327. +
  328. +                                        notify_write(vc, c);
  329. +
  330. +                                        if (inverse) {
  331. +                                                FLUSH
  332. +                                        }
  333. +                                }
  334.                         }

  335.                         if (rescan) {
  336. @@ -2919,7 +3043,7 @@ static int __init con_init(void)
  337.                 INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK);
  338.                 tty_port_init(&vc->port);
  339.                 visual_init(vc, currcons, 1);
  340. -                vc->vc_screenbuf = kzalloc(vc->vc_screenbuf_size, GFP_NOWAIT);
  341. +                vc->vc_screenbuf = kzalloc(vc->vc_screenbuf_size * 2, GFP_NOWAIT);
  342.                 vc_init(vc, vc->vc_rows, vc->vc_cols,
  343.                         currcons || !vc->vc_sw->con_save_screen);
  344.         }
  345. @@ -4141,9 +4265,15 @@ u16 screen_glyph(struct vc_data *vc, int
  346.         u16 w = scr_readw(screenpos(vc, offset, 1));
  347.         u16 c = w & 0xff;

  348. -        if (w & vc->vc_hi_font_mask)
  349. -                c |= 0x100;
  350. -        return c;
  351. +        u16 c_utf8 = scr_readw(screenpos_utf8(vc, offset, 1));
  352. +
  353. +        if ( (c == 0xff || c == 0xfe) && c_utf8 != 0){
  354. +                return c_utf8;
  355. +        }else{
  356. +                if (w & vc->vc_hi_font_mask)
  357. +                        c |= 0x100;
  358. +                return c;
  359. +        }
  360. }
  361. EXPORT_SYMBOL_GPL(screen_glyph);

  362. diff -Nurp linux-2.6.36.orig/drivers/video/console/bitblit.c linux-2.6.36/drivers/video/console/bitblit.c
  363. --- linux-2.6.36.orig/drivers/video/console/bitblit.c        2010-10-20 20:30:22.000000000 +0000
  364. +++ linux-2.6.36/drivers/video/console/bitblit.c        2010-10-24 16:49:39.445929000 +0000
  365. @@ -10,6 +10,8 @@
  366.   *  more details.
  367.   */

  368. +#include <linux/font.h>
  369. +#include "fonts_utf8.h"
  370. #include <linux/module.h>
  371. #include <linux/slab.h>
  372. #include <linux/string.h>
  373. @@ -43,6 +45,25 @@ static void update_attr(u8 *dst, u8 *src
  374.         }
  375. }

  376. +static int fbcon_softback_size = 32768;
  377. +
  378. +extern int fbcon_is_softback(const unsigned short *str);
  379. +
  380. +u16 utf8_pos(struct vc_data *vc, const unsigned short *utf8)
  381. +{
  382. +        unsigned long p = (long)utf8;
  383. +        if (p >= vc->vc_origin && p < vc->vc_scr_end) {
  384. +                return scr_readw((unsigned short *)(p + vc->vc_screenbuf_size));
  385. +        } else if (vc->vc_num == fg_console && fbcon_is_softback(utf8)){
  386. +                return scr_readw((unsigned short *)(p + fbcon_softback_size));
  387. +        } else {
  388. +                u16 extra_c;
  389. +                int c = *(int*)utf8;
  390. +                extra_c = (c >> 16 ) & 0x0000ffff;
  391. +                return extra_c;
  392. +        }
  393. +}
  394. +
  395. static void bit_bmove(struct vc_data *vc, struct fb_info *info, int sy,
  396.                       int sx, int dy, int dx, int height, int width)
  397. {
  398. @@ -83,14 +104,24 @@ static inline void bit_putcs_aligned(str
  399.         u32 idx = vc->vc_font.width >> 3;
  400.         u8 *src;

  401. +        int utf8_c = 0;
  402.         while (cnt--) {
  403. -                src = vc->vc_font.data + (scr_readw(s++)&
  404. -                                          charmask)*cellsize;
  405. -
  406. +                utf8_c = utf8_pos(vc, s);
  407. +                if(((scr_readw(s) & charmask) == 0xff || (scr_readw(s) & charmask) == 0xfe ) &&  utf8_c != 0){
  408. +                        if((scr_readw(s) & charmask) == 0xff){
  409. +                                src = font_utf8 + (utf8_c * 32);
  410. +                        }else{
  411. +                                src = font_utf8 + (utf8_c * 32 + 16);
  412. +                        }
  413. +                }else{
  414. +                        src = vc->vc_font.data + (scr_readw(s) &
  415. +                                                  charmask) * cellsize;
  416. +                }
  417.                 if (attr) {
  418.                         update_attr(buf, src, attr, vc);
  419.                         src = buf;
  420.                 }
  421. +                s++;

  422.                 if (likely(idx == 1))
  423.                         __fb_pad_aligned_buffer(dst, d_pitch, src, idx,
  424. @@ -118,14 +149,24 @@ static inline void bit_putcs_unaligned(s
  425.         u32 idx = vc->vc_font.width >> 3;
  426.         u8 *src;

  427. +        int utf8_c = 0;
  428.         while (cnt--) {
  429. -                src = vc->vc_font.data + (scr_readw(s++)&
  430. -                                          charmask)*cellsize;
  431. -
  432. +                utf8_c = utf8_pos(vc, s);
  433. +                if(((scr_readw(s) & charmask) == 0xff || (scr_readw(s) & charmask) == 0xfe ) && utf8_c != 0){
  434. +                        if((scr_readw(s) & charmask) == 0xff){
  435. +                                src = font_utf8 + (utf8_c * 32);
  436. +                        }else{
  437. +                                src = font_utf8 + (utf8_c * 32 + 16);
  438. +                        }
  439. +                }else{
  440. +                        src = vc->vc_font.data + (scr_readw(s) &
  441. +                                                  charmask) * cellsize;
  442. +                }
  443.                 if (attr) {
  444.                         update_attr(buf, src, attr, vc);
  445.                         src = buf;
  446.                 }
  447. +                s++;

  448.                 fb_pad_unaligned_buffer(dst, d_pitch, src, idx,
  449.                                         image->height, shift_high,
  450. @@ -241,6 +282,7 @@ static void bit_cursor(struct vc_data *v
  451.         struct fbcon_ops *ops = info->fbcon_par;
  452.         unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
  453.         int w = DIV_ROUND_UP(vc->vc_font.width, 8), c;
  454. +         int c_extra;
  455.         int y = real_y(ops->p, vc->vc_y);
  456.         int attribute, use_sw = (vc->vc_cursor_type & 0x10);
  457.         int err = 1;
  458. @@ -258,8 +300,17 @@ static void bit_cursor(struct vc_data *v
  459.         }

  460.           c = scr_readw((u16 *) vc->vc_pos);
  461. +         c_extra = utf8_pos(vc, (u16 *) vc->vc_pos);
  462.         attribute = get_attribute(info, c);
  463. -        src = vc->vc_font.data + ((c & charmask) * (w * vc->vc_font.height));
  464. +        if(((c&charmask) == 0xff || (c & charmask) == 0xfe) && c_extra != 0){
  465. +                if((c & charmask) == 0xff){
  466. +                        src = (char *) (font_utf8 + (c_extra * 32));
  467. +                }else{
  468. +                        src = (char *) (font_utf8 + (c_extra * 32 + 16));
  469. +                }
  470. +        }else{
  471. +                src = vc->vc_font.data + ((c & charmask) * (w * vc->vc_font.height));
  472. +        }

  473.         if (ops->cursor_state.image.data != src ||
  474.             ops->cursor_reset) {
  475. diff -Nurp linux-2.6.36.orig/drivers/video/console/fbcon.c linux-2.6.36/drivers/video/console/fbcon.c
  476. --- linux-2.6.36.orig/drivers/video/console/fbcon.c        2010-10-20 20:30:22.000000000 +0000
  477. +++ linux-2.6.36/drivers/video/console/fbcon.c        2010-10-24 16:49:39.515929000 +0000
  478. @@ -196,6 +196,14 @@ static void fbcon_start(void);
  479. static void fbcon_exit(void);
  480. static struct device *fbcon_device;

  481. +int fbcon_is_softback(const unsigned short *str)
  482. +{
  483. +        unsigned long p = (long)str;
  484. +        if(p >= softback_buf && p <softback_end)
  485. +                return 1;
  486. +        return 0;
  487. +}
  488. +
  489. #ifdef CONFIG_FRAMEBUFFER_CONSOLE_ROTATION
  490. static inline void fbcon_set_rotation(struct fb_info *info)
  491. {
  492. @@ -965,7 +973,7 @@ static const char *fbcon_startup(void)
  493.                         if (!softback_buf) {
  494.                                 softback_buf =
  495.                                     (unsigned long)
  496. -                                    kmalloc(fbcon_softback_size,
  497. +                                    kmalloc(fbcon_softback_size * 2,
  498.                                             GFP_KERNEL);
  499.                                 if (!softback_buf) {
  500.                                         fbcon_softback_size = 0;
  501. @@ -1268,10 +1276,7 @@ static void fbcon_putcs(struct vc_data *

  502. static void fbcon_putc(struct vc_data *vc, int c, int ypos, int xpos)
  503. {
  504. -        unsigned short chr;
  505. -
  506. -        scr_writew(c, &chr);
  507. -        fbcon_putcs(vc, &chr, 1, ypos, xpos);
  508. +        fbcon_putcs(vc, (unsigned short *)&c, 1, ypos, xpos);
  509. }

  510. static void fbcon_clear_margins(struct vc_data *vc, int bottom_only)
  511. @@ -1522,6 +1527,7 @@ static __inline__ void ypan_down_redraw(
  512. static void fbcon_redraw_softback(struct vc_data *vc, struct display *p,
  513.                                   long delta)
  514. {
  515. +        u16 charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
  516.         int count = vc->vc_rows;
  517.         unsigned short *d, *s;
  518.         unsigned long n;
  519. @@ -1584,6 +1590,8 @@ static void fbcon_redraw_softback(struct
  520.                                         start = s;
  521.                                 }
  522.                         }
  523. +                        if( ((scr_readw(s) & charmask) == 0xff || (scr_readw(s) & charmask) == 0xfe) && scr_readw(s + (vc->vc_screenbuf_size >> 1)) != 0){
  524. +                        }else{
  525.                         if (c == scr_readw(d)) {
  526.                                 if (s > start) {
  527.                                         fbcon_putcs(vc, start, s - start,
  528. @@ -1595,6 +1603,7 @@ static void fbcon_redraw_softback(struct
  529.                                         start++;
  530.                                 }
  531.                         }
  532. +                        }
  533.                         s++;
  534.                         d++;
  535.                 } while (s < le);
  536. @@ -1677,6 +1686,7 @@ static void fbcon_redraw_blit(struct vc_
  537.                         }

  538.                         scr_writew(c, d);
  539. +                        scr_writew(scr_readw(s + (vc->vc_screenbuf_size >> 1)), d + (vc->vc_screenbuf_size >> 1));
  540.                         console_conditional_schedule();
  541.                         s++;
  542.                         d++;
  543. @@ -1699,6 +1709,7 @@ static void fbcon_redraw_blit(struct vc_
  544. static void fbcon_redraw(struct vc_data *vc, struct display *p,
  545.                          int line, int count, int offset)
  546. {
  547. +        u16 charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
  548.         unsigned short *d = (unsigned short *)
  549.             (vc->vc_origin + vc->vc_size_row * line);
  550.         unsigned short *s = d + offset;
  551. @@ -1721,18 +1732,22 @@ static void fbcon_redraw(struct vc_data
  552.                                         start = s;
  553.                                 }
  554.                         }
  555. -                        if (c == scr_readw(d)) {
  556. -                                if (s > start) {
  557. -                                        fbcon_putcs(vc, start, s - start,
  558. -                                                     line, x);
  559. -                                        x += s - start + 1;
  560. -                                        start = s + 1;
  561. -                                } else {
  562. -                                        x++;
  563. -                                        start++;
  564. +                        if( ((scr_readw(s) & charmask) == 0xff || (scr_readw(s) & charmask) == 0xfe) && scr_readw(s + (vc->vc_screenbuf_size >> 1)) != 0){
  565. +                        }else{
  566. +                                if (c == scr_readw(d)) {
  567. +                                        if (s > start) {
  568. +                                                fbcon_putcs(vc, start, s - start,
  569. +                                                             line, x);
  570. +                                                x += s - start + 1;
  571. +                                                start = s + 1;
  572. +                                        } else {
  573. +                                                x++;
  574. +                                                start++;
  575. +                                        }
  576.                                 }
  577.                         }
  578.                         scr_writew(c, d);
  579. +                        scr_writew(scr_readw(s + (vc->vc_screenbuf_size >> 1)), d + (vc->vc_screenbuf_size >> 1));
  580.                         console_conditional_schedule();
  581.                         s++;
  582.                         d++;
  583. @@ -1762,6 +1777,7 @@ static inline void fbcon_softback_note(s

  584.         while (count) {
  585.                 scr_memcpyw((u16 *) softback_in, p, vc->vc_size_row);
  586. +                scr_memcpyw((u16 *) softback_in + (fbcon_softback_size >> 1), p + (vc->vc_screenbuf_size >> 1), vc->vc_size_row);
  587.                 count--;
  588.                 p = advance_row(p, 1);
  589.                 softback_in += vc->vc_size_row;
  590. @@ -2672,6 +2688,19 @@ static u16 *fbcon_screen_pos(struct vc_d
  591.         unsigned long p;
  592.         int line;
  593.        
  594. +        if (offset < 0) {
  595. +                offset = -offset - 1;
  596. +                if (vc->vc_num != fg_console || !softback_lines)
  597. +                        return (u16 *)(vc->vc_origin + offset + (vc->vc_screenbuf_size));
  598. +                line = offset / vc->vc_size_row;
  599. +                if (line >= softback_lines)
  600. +                        return (u16 *) (vc->vc_origin + offset - softback_lines * vc->vc_size_row + (vc->vc_screenbuf_size));
  601. +                p = softback_curr + offset;
  602. +                if (p >= softback_end)
  603. +                        p += softback_buf - softback_end;
  604. +                return (u16 *) (p + (fbcon_softback_size));
  605. +        }
  606. +
  607.         if (vc->vc_num != fg_console || !softback_lines)
  608.                 return (u16 *) (vc->vc_origin + offset);
  609.         line = offset / vc->vc_size_row;
  610. @@ -2779,6 +2808,8 @@ static int fbcon_scrolldelta(struct vc_d
  611.                                         q -= vc->vc_size_row;
  612.                                         scr_memcpyw((u16 *) q, (u16 *) p,
  613.                                                     vc->vc_size_row);
  614. +                                        scr_memcpyw((u16 *) (q + (vc->vc_screenbuf_size >> 1)), (u16 *) (p + (fbcon_softback_size >> 1)),
  615. +                                                    vc->vc_size_row);
  616.                                 }
  617.                                 softback_in = softback_curr = p;
  618.                                 update_region(vc, vc->vc_origin,
  619. diff -Nurp linux-2.6.36.orig/drivers/video/console/fbcon_ccw.c linux-2.6.36/drivers/video/console/fbcon_ccw.c
  620. --- linux-2.6.36.orig/drivers/video/console/fbcon_ccw.c        2010-10-20 20:30:22.000000000 +0000
  621. +++ linux-2.6.36/drivers/video/console/fbcon_ccw.c        2010-10-24 16:49:39.515929000 +0000
  622. @@ -17,6 +17,9 @@
  623. #include <asm/types.h>
  624. #include "fbcon.h"
  625. #include "fbcon_rotate.h"
  626. +#include "fonts_utf8.h"
  627. +
  628. +extern u16 utf8_pos(struct vc_data *vc, const unsigned short *utf8);

  629. /*
  630.   * Rotation 270 degrees
  631. @@ -105,13 +108,28 @@ static inline void ccw_putcs_aligned(str
  632.         u32 idx = (vc->vc_font.height + 7) >> 3;
  633.         u8 *src;

  634. +        int utf8_c = 0;
  635.         while (cnt--) {
  636. -                src = ops->fontbuffer + (scr_readw(s--) & charmask)*cellsize;
  637. -
  638. +                utf8_c = utf8_pos(vc, s);
  639. +                if(((scr_readw(s) & charmask) == 0xff || (scr_readw(s) & charmask) == 0xfe ) &&  utf8_c != 0){
  640. +                        char dst[16];
  641. +                        if((scr_readw(s) & charmask) == 0xff){
  642. +                                src = font_utf8 + (utf8_c * 32);
  643. +                        }else{
  644. +                                src = font_utf8 + (utf8_c * 32 + 16);
  645. +                        }
  646. +                        memset(dst, 0, 16);
  647. +                        rotate_ccw(src, dst, vc->vc_font.width,
  648. +                                  vc->vc_font.height);
  649. +                        src = dst;
  650. +                }else{
  651. +                        src = ops->fontbuffer + (scr_readw(s) & charmask)*cellsize;
  652. +                }
  653.                 if (attr) {
  654.                         ccw_update_attr(buf, src, attr, vc);
  655.                         src = buf;
  656.                 }
  657. +                s--;

  658.                 if (likely(idx == 1))
  659.                         __fb_pad_aligned_buffer(dst, d_pitch, src, idx,
  660. @@ -225,6 +243,7 @@ static void ccw_cursor(struct vc_data *v
  661.         struct fb_cursor cursor;
  662.         struct fbcon_ops *ops = info->fbcon_par;
  663.         unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
  664. +        int c_extra;
  665.         int w = (vc->vc_font.height + 7) >> 3, c;
  666.         int y = real_y(ops->p, vc->vc_y);
  667.         int attribute, use_sw = (vc->vc_cursor_type & 0x10);
  668. @@ -247,8 +266,22 @@ static void ccw_cursor(struct vc_data *v
  669.         }

  670.           c = scr_readw((u16 *) vc->vc_pos);
  671. +         c_extra = utf8_pos(vc, (u16 *) vc->vc_pos);
  672.         attribute = get_attribute(info, c);
  673. -        src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.width));
  674. +        if(((c&charmask) == 0xff || (c & charmask) == 0xfe) && c_extra != 0){
  675. +                char dst[16];
  676. +                if((c & charmask) == 0xff){
  677. +                        src = font_utf8 + (c_extra * 32);
  678. +                }else{
  679. +                        src = font_utf8 + (c_extra * 32 + 16);
  680. +                }
  681. +                memset(dst, 0, 16);
  682. +                rotate_ccw(src, dst, vc->vc_font.width,
  683. +                          vc->vc_font.height);
  684. +                src = dst;
  685. +        }else{
  686. +                src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.width));
  687. +        }

  688.         if (ops->cursor_state.image.data != src ||
  689.             ops->cursor_reset) {
  690. diff -Nurp linux-2.6.36.orig/drivers/video/console/fbcon_cw.c linux-2.6.36/drivers/video/console/fbcon_cw.c
  691. --- linux-2.6.36.orig/drivers/video/console/fbcon_cw.c        2010-10-20 20:30:22.000000000 +0000
  692. +++ linux-2.6.36/drivers/video/console/fbcon_cw.c        2010-10-24 16:49:39.515929000 +0000
  693. @@ -17,6 +17,9 @@
  694. #include <asm/types.h>
  695. #include "fbcon.h"
  696. #include "fbcon_rotate.h"
  697. +#include "fonts_utf8.h"
  698. +
  699. +extern u16 utf8_pos(struct vc_data *vc, const unsigned short *utf8);

  700. /*
  701.   * Rotation 90 degrees
  702. @@ -91,13 +94,28 @@ static inline void cw_putcs_aligned(stru
  703.         u32 idx = (vc->vc_font.height + 7) >> 3;
  704.         u8 *src;

  705. +        int utf8_c = 0;
  706.         while (cnt--) {
  707. -                src = ops->fontbuffer + (scr_readw(s++) & charmask)*cellsize;
  708. -
  709. +                utf8_c = utf8_pos(vc, s);
  710. +                if(((scr_readw(s) & charmask) == 0xff || (scr_readw(s) & charmask) == 0xfe ) &&  utf8_c != 0){
  711. +                        char dst[16];
  712. +                        if((scr_readw(s) & charmask) == 0xff){
  713. +                                src = font_utf8 + (utf8_c * 32);
  714. +                        }else{
  715. +                                src = font_utf8 + (utf8_c * 32 + 16);
  716. +                        }
  717. +                        memset(dst, 0, 16);
  718. +                        rotate_cw(src, dst, vc->vc_font.width,
  719. +                                  vc->vc_font.height);
  720. +                        src = dst;
  721. +                }else{
  722. +                        src = ops->fontbuffer + (scr_readw(s) & charmask)*cellsize;
  723. +                }
  724.                 if (attr) {
  725.                         cw_update_attr(buf, src, attr, vc);
  726.                         src = buf;
  727.                 }
  728. +                s++;

  729.                 if (likely(idx == 1))
  730.                         __fb_pad_aligned_buffer(dst, d_pitch, src, idx,
  731. @@ -209,6 +227,7 @@ static void cw_cursor(struct vc_data *vc
  732.         struct fb_cursor cursor;
  733.         struct fbcon_ops *ops = info->fbcon_par;
  734.         unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
  735. +        int c_extra;
  736.         int w = (vc->vc_font.height + 7) >> 3, c;
  737.         int y = real_y(ops->p, vc->vc_y);
  738.         int attribute, use_sw = (vc->vc_cursor_type & 0x10);
  739. @@ -231,8 +250,22 @@ static void cw_cursor(struct vc_data *vc
  740.         }

  741.           c = scr_readw((u16 *) vc->vc_pos);
  742. +         c_extra = utf8_pos(vc, (u16 *) vc->vc_pos);
  743.         attribute = get_attribute(info, c);
  744. -        src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.width));
  745. +        if(((c&charmask) == 0xff || (c & charmask) == 0xfe) && c_extra != 0){
  746. +                char dst[16];
  747. +                if((c & charmask) == 0xff){
  748. +                        src = font_utf8 + (c_extra * 32);
  749. +                }else{
  750. +                        src = font_utf8 + (c_extra * 32 + 16);
  751. +                }
  752. +                memset(dst, 0, 16);
  753. +                rotate_cw(src, dst, vc->vc_font.width,
  754. +                          vc->vc_font.height);
  755. +                src = dst;
  756. +        }else{
  757. +                src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.width));
  758. +        }

  759.         if (ops->cursor_state.image.data != src ||
  760.             ops->cursor_reset) {
  761. diff -Nurp linux-2.6.36.orig/drivers/video/console/fbcon_ud.c linux-2.6.36/drivers/video/console/fbcon_ud.c
  762. --- linux-2.6.36.orig/drivers/video/console/fbcon_ud.c        2010-10-20 20:30:22.000000000 +0000
  763. +++ linux-2.6.36/drivers/video/console/fbcon_ud.c        2010-10-24 16:49:39.525929000 +0000
  764. @@ -17,6 +17,9 @@
  765. #include <asm/types.h>
  766. #include "fbcon.h"
  767. #include "fbcon_rotate.h"
  768. +#include "fonts_utf8.h"
  769. +
  770. +extern u16 utf8_pos(struct vc_data *vc, const unsigned short *utf8);

  771. /*
  772.   * Rotation 180 degrees
  773. @@ -92,13 +95,28 @@ static inline void ud_putcs_aligned(stru
  774.         u32 idx = vc->vc_font.width >> 3;
  775.         u8 *src;

  776. +        int utf8_c = 0;
  777.         while (cnt--) {
  778. -                src = ops->fontbuffer + (scr_readw(s--) & charmask)*cellsize;
  779. -
  780. +                utf8_c = utf8_pos(vc, s);
  781. +                if(((scr_readw(s) & charmask) == 0xff || (scr_readw(s) & charmask) == 0xfe ) &&  utf8_c != 0){
  782. +                        char dst[16];
  783. +                        if((scr_readw(s) & charmask) == 0xff){
  784. +                                src = font_utf8 + (utf8_c * 32);
  785. +                        }else{
  786. +                                src = font_utf8 + (utf8_c * 32 + 16);
  787. +                        }
  788. +                        memset(dst, 0, 16);
  789. +                        rotate_ud(src, dst, vc->vc_font.width,
  790. +                                  vc->vc_font.height);
  791. +                        src = dst;
  792. +                }else{
  793. +                        src = ops->fontbuffer + (scr_readw(s) & charmask)*cellsize;
  794. +                }
  795.                 if (attr) {
  796.                         ud_update_attr(buf, src, attr, vc);
  797.                         src = buf;
  798.                 }
  799. +                s--;

  800.                 if (likely(idx == 1))
  801.                         __fb_pad_aligned_buffer(dst, d_pitch, src, idx,
  802. @@ -127,13 +145,28 @@ static inline void ud_putcs_unaligned(st
  803.         u32 idx = vc->vc_font.width >> 3;
  804.         u8 *src;

  805. +        int utf8_c = 0;
  806.         while (cnt--) {
  807. -                src = ops->fontbuffer + (scr_readw(s--) & charmask)*cellsize;
  808. -
  809. +                utf8_c = utf8_pos(vc, s);
  810. +                if(((scr_readw(s) & charmask) == 0xff || (scr_readw(s) & charmask) == 0xfe ) &&  utf8_c != 0){
  811. +                        char dst[16];
  812. +                        if((scr_readw(s) & charmask) == 0xff){
  813. +                                src = font_utf8 + (utf8_c * 32);
  814. +                        }else{
  815. +                                src = font_utf8 + (utf8_c * 32 + 16);
  816. +                        }
  817. +                        memset(dst, 0, 16);
  818. +                        rotate_ud(src, dst, vc->vc_font.width,
  819. +                                  vc->vc_font.height);
  820. +                        src = dst;
  821. +                }else{
  822. +                        src = ops->fontbuffer + (scr_readw(s) & charmask)*cellsize;
  823. +                }
  824.                 if (attr) {
  825.                         ud_update_attr(buf, src, attr, vc);
  826.                         src = buf;
  827.                 }
  828. +                s--;

  829.                 fb_pad_unaligned_buffer(dst, d_pitch, src, idx,
  830.                                         image->height, shift_high,
  831. @@ -255,6 +288,7 @@ static void ud_cursor(struct vc_data *vc
  832.         struct fb_cursor cursor;
  833.         struct fbcon_ops *ops = info->fbcon_par;
  834.         unsigned short charmask = vc->vc_hi_font_mask ? 0x1ff : 0xff;
  835. +        int c_extra;
  836.         int w = (vc->vc_font.width + 7) >> 3, c;
  837.         int y = real_y(ops->p, vc->vc_y);
  838.         int attribute, use_sw = (vc->vc_cursor_type & 0x10);
  839. @@ -278,8 +312,22 @@ static void ud_cursor(struct vc_data *vc
  840.         }

  841.           c = scr_readw((u16 *) vc->vc_pos);
  842. +         c_extra = utf8_pos(vc, (u16 *) vc->vc_pos);
  843.         attribute = get_attribute(info, c);
  844. -        src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.height));
  845. +        if(((c&charmask) == 0xff || (c & charmask) == 0xfe) && c_extra != 0){
  846. +                char dst[16];
  847. +                if((c & charmask) == 0xff){
  848. +                        src = font_utf8 + (c_extra * 32);
  849. +                }else{
  850. +                        src = font_utf8 + (c_extra * 32 + 16);
  851. +                }
  852. +                memset(dst, 0, 16);
  853. +                rotate_ud(src, dst, vc->vc_font.width,
  854. +                          vc->vc_font.height);
  855. +                src = dst;
  856. +        }else{
  857. +                src = ops->fontbuffer + ((c & charmask) * (w * vc->vc_font.height));
  858. +        }

  859.         if (ops->cursor_state.image.data != src ||
  860.             ops->cursor_reset) {

复制代码
回复 支持 反对

使用道具 举报

发表于 2011-1-8 22:38:16 | 显示全部楼层
很好,下回来用。支持硬盘启动吗,如何操作?
正在折腾龙梦8089A,gentoo N32,也准备用openbox,楼主共享下openbox的定制配置?
回复 支持 反对

使用道具 举报

发表于 2011-1-8 22:45:41 | 显示全部楼层
openbox的配置可以直接到 archlive的hg仓库下载,在overlay里面
回复 支持 反对

使用道具 举报

发表于 2011-1-9 13:20:06 | 显示全部楼层
N久不玩Linux了,看了有点心动。。。不过,不知道是否or如何从硬盘开始启动玩一下这个系统。我现在只有win7的系统,和几个EXt4的空闲分区。。。

谢啦,如果可以硬盘起来,俺就考虑重新回味一下archlinux啦。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-1-9 13:44:32 | 显示全部楼层
关于启动的说明:

http://mkarchlive.archlive.googl ... acc21d5e248b442eac0

基本上所有的资料都在  http://archlive.googlecode.com/
回复 支持 反对

使用道具 举报

发表于 2011-1-9 15:03:50 | 显示全部楼层
Post by carbonjiao;2125307
关于启动的说明:

http://mkarchlive.archlive.googl ... acc21d5e248b442eac0

基本上所有的资料都在  http://archlive.googlecode.com/


试一下,老提示说找不到archlive的模块(module),很晕倒。。
俺是把你提供的ISO所有文件都解压到D盘,NTFS的,然后用GRUB启动:
kernel /archlive/boot/i686.ker cn from=/dev/sda2/archlive ramdisk_size=6666 ramsize=60% quiet vga=789
initrd /archlive/boot/i686.img

怎么回事?
回复 支持 反对

使用道具 举报

发表于 2011-1-9 15:21:34 | 显示全部楼层
Post by jin.liu;2125312
试一下,老提示说找不到archlive的模块(module),很晕倒。。
俺是把你提供的ISO所有文件都解压到D盘,NTFS的,然后用GRUB启动:
kernel /archlive/boot/i686.ker cn from=/dev/sda2/archlive ramdisk_size=6666 ramsize=60% quiet vga=789
initrd /archlive/boot/i686.img

怎么回事?

  1. title Archlive
  2. root (hd0,3)
  3. kernel /archlive/boot/i686.ker archlivelabel=archlive from=archlive ramdisk_size=6666 ramsize=60% quiet vga=789 cn
  4. initrd /archlive/boot/i686.img
复制代码


然后在Win下将D盘卷标修改为archlive,再重启用Grub引导试试。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表