bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
阅读:3216回复:24

内核裁减

楼主#
更多 发布于:2005-01-12 20:09
我的bsp是远峰提供的2410,在此基础上作的内核有20多M,听说中文字库就有10多M,请问如何压缩字体呢,如何裁减我的内核呢,我曾试着删除一些东西,但删了之后就编译错误,希望哪问高手指点一下,多谢了

最新喜欢:

thinkerwinthinke...
薄荷的滋味
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-13 08:17
有些特性由于与其他特性之间存在着依赖关系,因此是无法删除的。(1)你可以删除一些不必要的组件,如多媒体等。
(2)可以修改locale信息,去掉不需要的语言支持
Come on, let us drive the world.
chang_nicolas
驱动小牛
驱动小牛
  • 注册日期2004-08-26
  • 最后登录2007-03-29
  • 粉丝0
  • 关注0
  • 积分370分
  • 威望39点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-13 09:13
可以换一个小的字库,2M的那种吧
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-13 10:56
To bohezhou:
也可以修改已有变量的值或通过自定义变量来屏蔽一些不必要的功能。
Come on, let us drive the world.
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-01-13 13:42
我这边做的retail版,我觉得基本算最小了,你可以参考一下:

hlbase,只有内核,总大小不超过300k

iabase,有display,touch panel,flash disk驱动,4.5M

以上都可以正常的跑
根据地的兄弟们,团结就是力量
chang_nicolas
驱动小牛
驱动小牛
  • 注册日期2004-08-26
  • 最后登录2007-03-29
  • 粉丝0
  • 关注0
  • 积分370分
  • 威望39点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-01-13 15:02
retail device是啥意思啊,最简单那种板子的意思嘛?
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-01-13 15:30
就是你的os image的release版本
根据地的兄弟们,团结就是力量
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-01-13 21:59
这么晚了,怎么wxl_50685330大哥还在线上?你真是革命的老黄牛啊 :cool: :P
Come on, let us drive the world.
bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-01-13 22:58
请问你们有小一点的中文字库吗,我刚接触ce不久,对各种环境变量不是很了解,你们有有关各种环境变量的说明资料吗,能否给我一份呢,bohezhou@163.com
薄荷的滋味
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-01-14 09:52
(1)不好意思,没有小一点的中文字库,你可以去ms的网站上找找。
(2)你最好系统的看看PB的帮助文档,那上面的资料很全的。
Come on, let us drive the world.
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-01-14 16:58
昨天弄到快7点才把我的马儿医好,今天他又...哎,人生不如意,十之八九...

根据地的兄弟们,团结就是力量
bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
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;
}

}
薄荷的滋味
bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
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;
}
薄荷的滋味
bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
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;
}
薄荷的滋味
bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
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;
}

}
薄荷的滋味
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-01-17 11:51
注册表恢复后,ip地址是多少?应该不是以前的那个吧?

Come on, let us drive the world.
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
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。
Come on, let us drive the world.
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2005-01-17 15:41
兄弟儿,那些环境变量是控制内核之外的的东西的,内核不大,最小就400K(我记得最小有过200k的,但没找到,我刚找到的最小406k),大是大在外围可能加了好多乱七八糟的东西,你要注意,内核是指的kern.exe或kernkitl.exe,而不是nk.nb0/nk.bin(这些叫os image,只是有时候大家说成内核了)。最小的平台只包含2个东西:nk.exe和filesys.exe。
根据地的兄弟们,团结就是力量
jinhualee
驱动牛犊
驱动牛犊
  • 注册日期2004-09-01
  • 最后登录2007-03-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2005-01-20 09:17
各位老大,谁有标准的中文字库啊?给我一份好么?
bohezhou
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2007-06-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望27点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2005-01-22 20:36
呵呵,我是错把nk.bin当成了内核,那这些环境变量是不是控制nk.bin的大小,不过我加了是没什么作用的?那我想减少nk.bin的大小,除了直接删除一些组件,还有其它的方法吗?

to wwei_wang
我的是release版的,你说的locale setting是不是平台设置里的,我是修改了,可nk.bin的大小也是没有变化.
还有我的那个注册表的网卡注册表项错了,所以提示说无法打开注册表,呵呵,我回去再试试
薄荷的滋味
上一页
游客

返回顶部