¹ØÓÚ linux ÄÚ´æ
Ê×ÏÈ£¬ÄÚ´æµÄ´óСÔÚlinuxÄÚºËÖеĻñÖª·½·¨
1.ͨ¹ýbootloader µÄ tag mem´«Èë¡£
Setup.c Öеĺ¯ÊýÈçÏ£º
static int __init parse_tag_mem32(const struct tag *tag)
{
if (meminfo.nr_banks >= NR_BANKS) {
printk(KERN_WARNING
"Ignoring memory bank 0x%08x size %dKB\n",
tag->u.mem.start, tag->u.mem.size / 1024);
return -EINVAL;
}
arm_add_memory(tag->u.mem.start, tag->u.mem.size);
return 0;
}
__tagtable(ATAG_MEM, parse_tag_mem32);
ÆäÖÐ×îÖØÒªµÄº¯ÊýΪ£º arm_add_memory
Õâ¸öº¯ÊýÏò meminfoÊý×éÖÐÌí¼ÓÁËÒ»Ïî¹ØÓÚ memµÄÃèÊö
2.ÁíÍâÒ»¸ö·½·¨£ºÍ¨¹ýÄÚºËÆô¶¯²ÎÊýmem=À´´«µÝ
Setup.c Öеĺ¯ÊýÈçÏ£º
static void __init early_mem(char **p)
{
static int usermem __initdata = 0;
unsigned long size, start;
/*
* If the user specifies memory size, we
* blow away any automatically generated
* size.
*/
if (usermem == 0) {
usermem = 1;
meminfo.nr_banks = 0;
}
start = PHYS_OFFSET;
size = memparse(*p, p);
if (**p == '@')
start = memparse(*p + 1, p);
arm_add_memory(start, size);
}
__early_param("mem=", early_mem);
ÆäÖеڶþÖÖ·½·¨¾ßÓиߵÄÓÅÏȼ¶¡£
ÁíÍ⣬»¹ÓÐÒ»ÖÖÐÞ¸ÄmemoryÊôÐԵİ취£º
mdesc->fixup(mdesc, tags, &from, &meminfo);
ÕâÖÖ·½·¨ÒÀÀµÓÚÌØ¶¨µÄ¿ª·¢Æ½Ì¨£¬ÔÚÆ½Ì¨³õʼ»¯µÄÃèÊö½á¹¹Öж¨Òå¡£
×îÖÕ£¬ËùÒԵĹØÓÚmemoryµÄÐÅϢͨ¹ýº¯Êý
paging_init(&meminfo, mdesc);
´«µÝ¸ø mem ³õʼ»¯µÄ²¿·Ö¡£
µÚ¶þ£¬memoryµÄ³õʼ»¯¡£
paging_init µÄ¶¨ÒåÔÚ arch/arm/mm/mmu.cÖС£
ÔÚ paging_init ×îÖØÒªµÄº¯ÊýÊÇ£ºbootmem_init
¸Ãº¯Êý¶¨ÒåÓÚ£ºarch/arm/mm/init.cÖС£
Ïà¹ØÎĵµ£º
±¸·ÝMBR·ÖÇø
0. ±¸·ÝÓ²Å̵ķÖÇøÐÅÏ¢£º
#fdisk /dev/sda -l > /tem/sda.txt
¡¡
¡¡¡¡1.ʹÓÃfdisk -l È·¶¨MBRλÖÃ
¡¡
¡¡¡¡2.±¸·ÝMBR
¡¡
¡¡¡¡dd if=/dev/sda1 of=/root/mbr bs=512 count=1
¡¡
¡¡¡¡3.»Ö¸´MBR
¡¡
¡¡¡¡dd if=/root/mbr of=/dev/sda1 bs=512 count=1
¡¡
¡¡ ......
Linux kernel ¹ØÓÚkeyboard²¿·Ö
keyboard.c ÓÃÓÚ´¦ÀíºÍ¼üÅÌÏà¹ØµÄinput_handler¡£ÆäÖаüÀ¨ºóÐøµÄ¼üÂëת»»ºÍÊä³ö
atkbd.c ³£ÓõļüÅ̲¼¾Ö£¬ÓÃÓÚ»ñµÃɨÃèÂ룬²¢½«Æä·¢Ë͵½input_handler Á´±íÖÐ
struct input_handler kbd_handler; ¼´Îªinput_handler Á´±íÖеÄÒ»¸öhandler
Òªhook¼üÅÌ»òÕ߯äËûinput²ãϵÄÉ豸ÐÅÏ¢£¬¾ ......
Èç¹ûÊÇÒÔtarballÐÎʽ°²×°°²×°£¬È¥rar
ÍøÕ¾ÏÂÔØÏàÓ¦°æ±¾µÄtarball¡£µØÖ·Îª
http://www.rarlab.com/
ÒÔ3.8°æ±¾ÎªÀý£¬Èç¹ûÊÇi386µÄƽ̨,Ö´ÐÐÒÔÏÂÃüÁ
$wget http://www.rarlab.com/rar
/rarlinux-3.8.0.tar.gz
rar
Èí¼þ²»ÐèÒª°²×°£¬Ö±½Ó½âѹµ½/usr/localÏ£¬ÒÔϲÙ×÷ÐèÒªÓÐroot
ȨÏÞ¡£
#tar zxvf rarlinux-3.8.0 ......
# uname -a # ²é¿´ÄÚºË/²Ù×÷ϵͳ/CPUÐÅÏ¢
# head -n 1 /etc/issue # ²é¿´²Ù×÷ϵͳ°æ±¾
# cat /proc/cpuinfo # ²é¿´CPUÐÅÏ¢
# hostname # ²é¿´¼ÆËã»úÃû
# lspci -tv # ÁгöËùÓÐPCIÉ豸
# lsusb -tv # ÁгöËùÓÐUSBÉ豸
# lsmod # Áгö¼ÓÔØµÄÄÚºËÄ£¿é
# env # ²é¿´»·¾³±äÁ¿ ×ÊÔ´
# free -m # ²é¿´ÄÚ´æÊ¹ÓÃÁ¿ºÍ½»»»Ç ......
1> ʹÓÃCDPATHÉèÖà cd ÃüÁîµÄ¹¤×÷Ŀ¼
[ramesh@dev-db ~]# pwd
/home/ramesh
[ramesh@dev-db ~]# cd mail
-bash: cd: mail: No such file or directory
[×¢Ò⣺ÔÚµ±Ç°Ä¿Â¼ÏÂѰÕÒMAILĿ¼]
[ramesh@dev-db ~]# export CDPATH=/etc
[ramesh@dev-db ~]# cd mail /etc/mail  ......