linux frame buffer grab
linuxµÄÇý¶¯¾ÍÊǸö×Ö·ûÉ豸£¬¿ÉÒÔÓÃread write ioctl mmap²Ù×÷£¬Í¨¹ý/dev/fbx¿ÉÒÔÏñÎļþÒ»ÑùÖ±½Ó¶Áд
½ØÆÁdd if=/dev/fb0 of=snapshot
»Ö¸´cat snapshot > /dev/fb0
¿ªÔ´µÄÓÐfbgrab¹¤¾ß£¬²»¹ýÊÇÉú³ÉpngÎļþ£¬ÎÒ×Ô¼ºÐ´ÁËÒ»¸öÉú³ÉbmpÎļþµÄ¹¤¾ß½Ðfbcap£¬Â¼ÖƳÉavi¸ñʽ£¬Í¨¹ýsocket»òserial°ÑÉ豸µÄ²Ù×÷·¢Ë͵½hostÉÏ£º£©¡£
±£´æbmpÎļþ´úÂ룺
int savebmp(char* filename, int size, int bmWidth, int bmHeight, int bmBitsPixel, unsigned char* buffer)
{
FILE *fp = NULL;
int j = bmHeight;
int nColors = 0;
int nPeletteLen = 0;
RGBQUAD *rgbquad = NULL;
fp = fopen(filename, "w+");
if(fp == NULL)
{
printf("open file :%s fail\n", filename);
return -1;
}
printf("size=%d, width=%d, height=%d, bitsPixel=%d\n", size, bmWidth, bmHeight, bmBitsPixel);
if (bmBitsPixel <= 8)
{
nColors = bmBitsPixel << 1;
nPeletteLen = nColors * sizeof(RGBQUAD);
rgbquad= malloc(sizeof(RGBQUAD)*nColors);
if (rgbquad == NULL)
{
fclose(fp);
return -1;
}
memset(rgbquad, 0, nColors * sizeof(RGBQUAD));
int index = 0;
for(index = 0; index < nColors; index++)
{
rgbquad[index].rgbBlue = index;
rgbquad[index].rgbGreen = index;
rgbquad[index].rgbRed = index;
}
#if 1
if (bmBitsPixel == 1)//blue word,white backgroud
{
rgbquad[nColors -2].rgbBlue = 255;
rgbquad[nColors -2].rgbGreen = 255;
rgbquad[nColors -2].rgbRed = 255;
rgbquad[nColors -1].rgbBlue = 0xff;
rgbquad[nColors -1].rgbGreen = 0;
rgbquad[nColors -1].rgbRed = 0;
}
#else
if (bmBitsPixel == 1)//white word,black backgroud
{
rgbquad[nColors -2].rgbBlue = 0 ;
rgbquad[nColors -2].rgbGreen = 0;
rgbquad[nColors -2].rgbRed = 0;
rgbquad[nColors -1].rgbBlue =0xFF;
rgbquad[nColors -1].rgbGreen = 0xff;
rgbquad[nColors -1].rgbRed = 0xFF;
}
#endif
}
printf("nColors=%d,pelettelen=%d\n",nColors, nPeletteLen);
//
BITMAPFILEHEADER bfh;
bfh.bfType = ((unsigned short)('M'<< 8)|'B');
bfh.bfRe
Ïà¹ØÎĵµ£º
±¾º¯ÊýµÄ·ÖÎöºÜÄѾßÌ壬ÒòÎªÉæ¼°Á˺ܶàarmµÄ´¦ÀíÆ÷ÐͺźÍÿ¸öÐͺŶÔÓ¦µÄcacheºÍwrite bufferµÄ¹¤×÷·½Ê½£¬ÕâÆ¬ÎÄÕÂÖ»ÊÇ×ö¼òµ¥µÄ¼Ç¼£¬·½±ãÒÔºóÁ˽â¸üÉîºó»ØÀ´ÔÙÀ´ÍêÉÆÕâ¸öº¯Êý¡£
Õâ¸öº¯ÊýµÄµ÷Óùý³ÌÈ磺start_kernel()->setup_arch()->paging_init()->memtable_init( ......
¾ÍÊÇÔÚÒÑÓеÄÊý¾Ý¿âʵÀýÉÏ´´½¨Ò»¸öеÄÕʺţ¬·ÃÎÊһЩеıí
²Ù×÷²½ÖèÈçÏ£º
1¡¢µÇ¼linux£¬ÒÔoracleÓû§µÇ¼£¨Èç¹ûÊÇrootÓû§µÇ¼µÄ£¬µÇ¼ºóÓà su - oracleÃüÁîÇл»³ÉoracleÓû§£©
2¡¢ÒÔsysdba·½Ê½À´´ò¿ªsqlplus£¬ÃüÁîÈçÏ£º sqlplus "/as sysdba"
3¡¢²é¿´ÎÒÃdz£¹æ½«Óû§±í¿Õ¼ä·ÅÖÃλÖà ......
free_bootmem()Õâ¸öº¯ÊýÊÇϵͳÆô¶¯³õÆÚÄÚ´æÊͷŵĺËÐĺ¯Êý£¬ÎÒÃÇÀ´¿´¿´ËüµÄ´úÂë¡£
void __init free_bootmem (unsigned long addr, unsigned long size)//addrÊÇÒªÊͷŵÄÎïÀíÆðʼµØÖ·£¬sizeÊÇÒªÊͷſռäµÄ´óС¡£
{
free_bootmem_core(NODE_DATA(0)->bdata, addr, size);//Ö±½ ......
shellÓï·¨£¨ÎåÏ
1.ÃüÁî¸ñʽ
2.ͨÅä·û
3.ÖØ¶¨Ïò
4.¹ÜµÀ
5.shellÖеÄÒýÓÃ
6.×Ô¶¯²¹ÆëÃüÁîÐÐ
ϵͳ¹ÜÀíά»¤
ls
pwd
cd
date
passwd
su
clear
man
who
w
uname
uptime
last
dmesg
free
ps
top
Îļþ¹ÜÀí±à¼
mkdir
more
cat
diff
grep
rm
touch
ln
file
cp
find
split
mv
ѹËõ½âѹ
zi ......
Ubuntu 7.10
ÔÚ°²×°Ê±£¬Ã»ÓÐÉèÖÃrootÃÜÂ룬ËùÒÔÕâ¾Í±ØÐëÔÚ°²×°Íê³ÉºóÉèÖà ÃüÁîÈçÏ£º
$ sudo passwd root
ÊäÈëÄãÏ£ÍûµÄrootÓû§µÄÃÜÂë
ÆäËüÃüÁ
Ò»¡¢°²×°Grub
$ grub
$ find /boot/grub/stage1
(hd0,*)
$ root (hd0,*)
$ setup (hd0,*)
$ quit
$ sudo dd if=/de ......