阅读:3218回复:24
内核裁减
我的bsp是远峰提供的2410,在此基础上作的内核有20多M,听说中文字库就有10多M,请问如何压缩字体呢,如何裁减我的内核呢,我曾试着删除一些东西,但删了之后就编译错误,希望哪问高手指点一下,多谢了
|
|
最新喜欢:thinke...
|
沙发#
发布于:2005-01-13 08:17
有些特性由于与其他特性之间存在着依赖关系,因此是无法删除的。(1)你可以删除一些不必要的组件,如多媒体等。
(2)可以修改locale信息,去掉不需要的语言支持 |
|
|
板凳#
发布于:2005-01-13 09:13
可以换一个小的字库,2M的那种吧
|
|
地板#
发布于:2005-01-13 10:56
To bohezhou:
也可以修改已有变量的值或通过自定义变量来屏蔽一些不必要的功能。 |
|
|
论坛版主
|
地下室#
发布于:2005-01-13 13:42
我这边做的retail版,我觉得基本算最小了,你可以参考一下:
hlbase,只有内核,总大小不超过300k iabase,有display,touch panel,flash disk驱动,4.5M 以上都可以正常的跑 |
|
5楼#
发布于:2005-01-13 15:02
retail device是啥意思啊,最简单那种板子的意思嘛?
|
|
论坛版主
|
6楼#
发布于:2005-01-13 15:30
就是你的os image的release版本
|
|
7楼#
发布于:2005-01-13 21:59
这么晚了,怎么wxl_50685330大哥还在线上?你真是革命的老黄牛啊 :cool: :P
|
|
|
8楼#
发布于:2005-01-13 22:58
请问你们有小一点的中文字库吗,我刚接触ce不久,对各种环境变量不是很了解,你们有有关各种环境变量的说明资料吗,能否给我一份呢,bohezhou@163.com
|
|
|
9楼#
发布于:2005-01-14 09:52
(1)不好意思,没有小一点的中文字库,你可以去ms的网站上找找。
(2)你最好系统的看看PB的帮助文档,那上面的资料很全的。 |
|
|
论坛版主
|
10楼#
发布于:2005-01-14 16:58
昨天弄到快7点才把我的马儿医好,今天他又...哎,人生不如意,十之八九...
|
|
11楼#
发布于:2005-01-15 19:50
wxl_50685330,wwei_wang,wxl_50685330等高手快来看看:
我按照你们提供的方法,自定义了一些变量IMG_NOAUDIO,IMG_NOBATTERRY,IMG_NOTOUCH,IMGNOBLUETOOTH,IMGNOSECURITY为1,可编译完后内核大小并没有改变, 还有对locale文件进行了修改,我把不需要的语言都去掉了,也没用,这是为什么呢? 我自己写了一个修改了ip地址后保存注册表的程序,可是不成功,麻烦你们帮我看看是哪里出错了,多谢了 // SaveRegDlg.cpp : implementation file // #include "stdafx.h" #include "SaveReg.h" #include "SaveRegDlg.h" #include <Pkfuncs.h> #include <winbase.h> #include <Pwinreg.h> #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CSaveRegDlg dialog CSaveRegDlg::CSaveRegDlg(CWnd* pParent /*=NULL*/) : CDialog(CSaveRegDlg::IDD, pParent) { //{{AFX_DATA_INIT(CSaveRegDlg) m_ip = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CSaveRegDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CSaveRegDlg) DDX_Text(pDX, IDC_IP, m_ip); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CSaveRegDlg, CDialog) //{{AFX_MSG_MAP(CSaveRegDlg) ON_BN_CLICKED(IDC_CHANGIP, OnChangip) ON_BN_CLICKED(IDC_SAVEREG, OnSavereg) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CSaveRegDlg message handlers BOOL CSaveRegDlg::OnInitDialog() { CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon CenterWindow(GetDesktopWindow()); // center to the hpc screen // this->ShowWindow(SW_HIDE); // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control } CString str_ip; HKEY hKEY; void CSaveRegDlg::OnChangip() { // TODO: Add your control notification handler code here LPCWSTR data_Set=L"Comm\\PCI\\CS89001\\Parms\\TCPIP"; //打开与路径 data_Set 相关的hKEY,KEY_WRITE表示以写的方式打开。 long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_WRITE, &hKEY)); if(ret0!=ERROR_SUCCESS) { MessageBox(_T("错误: 无法打开有关的hKEY11!")); return; } str_ip=m_ip; // str_ip=L"192.168.30.250"; TCHAR lpb[15]; for(int i=0;i<str_ip.GetLength();i++) *(lpb+i) = (str_ip.GetAt(i)); lpb[i++]='\0'; DWORD type=REG_SZ; DWORD cbData_1=str_ip.GetLength()+1; long ret1=(::RegSetValueEx(hKEY, L"IpAddress", NULL,REG_MULTI_SZ, (BYTE *)lpb, 20)); if(ret1!=ERROR_SUCCESS) { MessageBox(_T("错误: 无法修改有关注册表信息!")); return; } RegCloseKey(hKEY); RegFlushKey(HKEY_LOCAL_MACHINE); } CString strRegBackup = L"\\hard disk\\RegBackup.reg"; CString strTmp = L"\\windows\\temp.reg"; void CSaveRegDlg::OnSavereg() { // TODO: Add your control notification handler code here ////////导出。在系统关闭前。 if(! RegCopyFile(strTmp)) ///导出注册表,用temp.reg做缓冲用。 { return; } if(! CopyFile(strTmp, strRegBackup, FALSE)) ///把temp.reg再复制到RegBackup.reg { return; } /////////导入。在系统启动时。 if(! CopyFile(strRegBackup, strTmp, FALSE)) { return; } if(! RegRestoreFile(strTmp)) ///恢复注册表 { return; } if(! KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL)) ///重新启动 { return; } } |
|
|
12楼#
发布于:2005-01-15 19:52
wxl_50685330,wwei_wang,wxl_50685330等高手快来看看:
我按照你们提供的方法,自定义了一些变量IMG_NOAUDIO,IMG_NOBATTERRY,IMG_NOTOUCH,IMGNOBLUETOOTH,IMGNOSECURITY为1,可编译完后内核大小并没有改变, 还有对locale文件进行了修改,我把不需要的语言都去掉了,也没用,这是为什么呢? 我自己写了一个修改了ip地址后保存注册表的程序,可是不成功,麻烦你们帮我看看是哪里出错了,多谢了 // SaveRegDlg.cpp : implementation file CString str_ip; HKEY hKEY; void CSaveRegDlg::OnChangip() { // TODO: Add your control notification handler code here LPCWSTR data_Set=L"Comm\\PCI\\CS89001\\Parms\\TCPIP"; //打开与路径 data_Set 相关的hKEY,KEY_WRITE表示以写的方式打开。 long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_WRITE, &hKEY)); if(ret0!=ERROR_SUCCESS) { MessageBox(_T("错误: 无法打开有关的hKEY11!")); return; } str_ip=m_ip; // str_ip=L"192.168.30.250"; TCHAR lpb[15]; for(int i=0;i<str_ip.GetLength();i++) *(lpb+i) = (str_ip.GetAt(i)); lpb[i++]='\0'; DWORD type=REG_SZ; DWORD cbData_1=str_ip.GetLength()+1; long ret1=(::RegSetValueEx(hKEY, L"IpAddress", NULL,REG_MULTI_SZ, (BYTE *)lpb, 20)); if(ret1!=ERROR_SUCCESS) { MessageBox(_T("错误: 无法修改有关注册表信息!")); return; } RegCloseKey(hKEY); RegFlushKey(HKEY_LOCAL_MACHINE); } CString strRegBackup = L"\\hard disk\\RegBackup.reg"; CString strTmp = L"\\windows\\temp.reg"; void CSaveRegDlg::OnSavereg() { // TODO: Add your control notification handler code here ////////导出。在系统关闭前。 if(! RegCopyFile(strTmp)) ///导出注册表,用temp.reg做缓冲用。 return; if(! CopyFile(strTmp, strRegBackup, FALSE)) ///把temp.reg再复制到RegBackup.reg return; /////////导入。在系统启动时。 if(! CopyFile(strRegBackup, strTmp, FALSE)) return; if(! RegRestoreFile(strTmp)) ///恢复注册表 return; if(! KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL)) ///重新启动 return; } |
|
|
13楼#
发布于:2005-01-15 19:56
CString str_ip;
HKEY hKEY; void CSaveRegDlg::OnChangip() { // TODO: Add your control notification handler code here LPCWSTR data_Set=L"Comm\\PCI\\CS89001\\Parms\\TCPIP"; //打开与路径 data_Set 相关的hKEY,KEY_WRITE表示以写的方式打开。 long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_WRITE, &hKEY)); if(ret0!=ERROR_SUCCESS) { MessageBox(_T("错误: 无法打开有关的hKEY11!")); return; } str_ip=m_ip; // str_ip=L"192.168.30.250"; TCHAR lpb[15]; for(int i=0;i<str_ip.GetLength();i++) *(lpb+i) = (str_ip.GetAt(i)); lpb[i++]='\0'; DWORD type=REG_SZ; DWORD cbData_1=str_ip.GetLength()+1; long ret1=(::RegSetValueEx(hKEY, L"IpAddress", NULL,REG_MULTI_SZ, (BYTE *)lpb, 20)); if(ret1!=ERROR_SUCCESS) { MessageBox(_T("错误: 无法修改有关注册表信息!")); return; } RegCloseKey(hKEY); RegFlushKey(HKEY_LOCAL_MACHINE); } CString strRegBackup = L"\\hard disk\\RegBackup.reg"; CString strTmp = L"\\windows\\temp.reg"; void CSaveRegDlg::OnSavereg() { // TODO: Add your control notification handler code here ////////导出。在系统关闭前。 if(! RegCopyFile(strTmp)) ///导出注册表,用temp.reg做缓冲用。 return; if(! CopyFile(strTmp, strRegBackup, FALSE)) ///把temp.reg再复制到RegBackup.reg return; /////////导入。在系统启动时。 if(! CopyFile(strRegBackup, strTmp, FALSE)) return; if(! RegRestoreFile(strTmp)) ///恢复注册表 return; if(! KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL)) ///重新启动 return; } |
|
|
14楼#
发布于:2005-01-15 19:57
lpb[i++]='';
DWORD type=REG_SZ; DWORD cbData_1=str_ip.GetLength()+1; long ret1=(::RegSetValueEx(hKEY, L"IpAddress", NULL,REG_MULTI_SZ, (BYTE *)lpb, 20)); if(ret1!=ERROR_SUCCESS) { MessageBox(_T("错误: 无法修改有关注册表信息!")); return; } RegCloseKey(hKEY); RegFlushKey(HKEY_LOCAL_MACHINE); } CString strRegBackup = L"\hard disk\RegBackup.reg"; CString strTmp = L"\windows\temp.reg"; void CSaveRegDlg::OnSavereg() { // TODO: Add your control notification handler code here ////////导出。在系统关闭前。 if(! RegCopyFile(strTmp)) ///导出注册表,用temp.reg做缓冲用。 { return; } if(! CopyFile(strTmp, strRegBackup, FALSE)) ///把temp.reg再复制到RegBackup.reg { return; } /////////导入。在系统启动时。 if(! CopyFile(strRegBackup, strTmp, FALSE)) { return; } if(! RegRestoreFile(strTmp)) ///恢复注册表 { return; } if(! KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL)) ///重新启动 { return; } } |
|
|
15楼#
发布于:2005-01-17 11:51
注册表恢复后,ip地址是多少?应该不是以前的那个吧?
|
|
|
16楼#
发布于:2005-01-17 15:03
To bohezhou:
我按照你们提供的方法,自定义了一些变量IMG_NOAUDIO,IMG_NOBATTERRY,IMG_NOTOUCH,IMGNOBLUETOOTH,IMGNOSECURITY为1,可编译完后内核大小并没有改变, 还有对locale文件进行了修改,我把不需要的语言都去掉了,也没用,这是为什么呢? ////////////////// 兄弟,你怎么搞的?什么locale文件?你最终用的是中文还是英文? 如果是debug版,你就修改debug的locale setting,否则就修改release下的locale setting。 |
|
|
论坛版主
|
17楼#
发布于:2005-01-17 15:41
兄弟儿,那些环境变量是控制内核之外的的东西的,内核不大,最小就400K(我记得最小有过200k的,但没找到,我刚找到的最小406k),大是大在外围可能加了好多乱七八糟的东西,你要注意,内核是指的kern.exe或kernkitl.exe,而不是nk.nb0/nk.bin(这些叫os image,只是有时候大家说成内核了)。最小的平台只包含2个东西:nk.exe和filesys.exe。
|
|
18楼#
发布于:2005-01-20 09:17
各位老大,谁有标准的中文字库啊?给我一份好么?
|
|
19楼#
发布于:2005-01-22 20:36
呵呵,我是错把nk.bin当成了内核,那这些环境变量是不是控制nk.bin的大小,不过我加了是没什么作用的?那我想减少nk.bin的大小,除了直接删除一些组件,还有其它的方法吗?
to wwei_wang 我的是release版的,你说的locale setting是不是平台设置里的,我是修改了,可nk.bin的大小也是没有变化. 还有我的那个注册表的网卡注册表项错了,所以提示说无法打开注册表,呵呵,我回去再试试 |
|
|
上一页
下一页