Linux怎么进入orloce数据库,CentOS 5.5裁剪笔记

因为要基于PC的小盒子做嵌入式开发,所以一直考虑现有linux发型版的裁剪。

权衡了很久,觉得cdlinux还是不够可靠。因为作者不再维护了

还是选择裁剪RedHat.

参考网上的一篇CentOS裁剪笔记.

手头的as5光盘镜像安装失败,说介质损坏,真的假的,网上下的iso,好几G呢

只好用Fedora14先试了。

先虚拟了一个2G的scsi硬盘,手工分区。/ 1.5G. swap 500M

选择最小化安装

一共198个包,安装完毕500M左右

Vmdisk使用686M

Df –k显示 495M

在虚拟了一个1G 的ide盘。手工分区 / 1023

同样选择最小化安装。

再虚拟了一个500M的ide盘,准备放裁剪后的

问题:

1.没有是否启用selinux的选项,以前有的应用会出错,必须关闭selinux

2.没有setup程序,网络配置换命令了?

3.默认没有sar

4.没有swap是否可以? 我在1g盘上安装时可以没有swap.(2g盘上有,装完后吧2g盘去掉了)

目标:

通过rpm进一步调整安装包和大小

先不进行裁剪,直接测试内存boot测试

Rpm –qa | wc –l  可以看到一共198个包

因为感觉fedola偏重桌面,所以换CentOS试试。

又搞了一个centos5.4 的镜像。

安装时怎么不认scsi的虚拟硬盘?

算了,先换ide的试试。

第一次4g

自定义安装,选了base和拨号网络,一共367包,一共1G(df –k看905M)

安装完毕,可以连接网络。作为母版

再装一个较小版的2G。

通过linux text方式可以进行精细的定制,保留了很少一部分功能。大约663M,252包

再装一个最小版的1.5G,全部都不选, 186包,574M

这次网络没问题了,但是setup,which等常用命令都没了。

[root@cent5 ~]# rpm -qa

filesystem-2.4.0-2.el5.centos

tzdata-2009k-1.el5

cracklib-dicts-2.8.9-3.3

centos-release-notes-5.4-4

libgcc-4.1.2-46.el5

rootfiles-8.1-1.1.1

zlib-1.2.3-3

glib2-2.12.3-4.el5_3.1

popt-1.10.2.3-18.el5

expat-1.95.8-8.2.1

bash-3.2-24.el5

libsepol-1.15.2-2.el5

nspr-4.7.4-1.el5_3.1

readline-5.1-3.el5

sed-4.1.5-5.fc6

elfutils-libelf-0.137-3.el5

libgpg-error-1.4-2

libgcrypt-1.4.4-5.el5

libpng-1.2.10-7.1.el5_3.2

libacl-2.2.39-3.el5

libcap-1.10-26

libtiff-3.8.2-7.el5_3.4

diffutils-2.8.1-15.2.3.el5

iptables-1.3.5-5.3.el5

slang-2.0.6-4.el5

libXau-1.0.1-3.1

iproute-2.6.18-10.el5

gnutls-1.4.1-3.el5_2.1

grep-2.5.1-55.el5

hmaccalc-0.9.6-1.el5

less-394-6.el5

cpio-2.6-23.el5

iputils-20020927-46.el5

checkpolicy-1.33.1-4.el5

ethtool-6-3.el5

wireless-tools-28-2.el5

libvolume_id-095-14.21.el5

sgpio-1.2.0_10-2.el5

libXdmcp-1.0.1-2.1

udftools-1.0.0b3-0.1.el5

file-4.17-15.el5_3.1

hdparm-6.6-2

centos-release-5-4.el5.centos.1

crontabs-1.10-8

xorg-x11-filesystem-7.1-2.fc6

libXrender-0.9.1-3.1

libXfixes-4.0.1-2.1

libXrandr-1.1.1-3.1

libXinerama-1.0.1-2.1

libselinux-1.33.4-5.5.el5

e2fsprogs-libs-1.39-23.el5

e2fsprogs-1.39-23.el5

findutils-4.2.27-6.el5

krb5-libs-1.6.1-36.el5

python-2.4.3-27.el5

cairo-1.2.4-5.el5

libsemanage-1.9.1-4.4.el5

rpm-libs-4.4.2.3-18.el5

pango-1.14.9-6.el5.centos

audit-libs-python-1.7.13-2.el5

python-sqlite-1.1.7-1.2.1

cracklib-2.8.9-3.3

udev-095-14.21.el5

SysVinit-2.86-15.el5

openldap-2.3.43-3.el5

passwd-0.73-1

cups-libs-1.3.7-11.el5

device-mapper-event-1.02.32-1.el5

logrotate-3.7.4-9

rpm-python-4.4.2.3-18.el5

libselinux-utils-1.33.4-5.5.el5

net-tools-1.60-78.el5

authconfig-5.3.21-6.el5

system-config-securitylevel-tui-1.6.29.1-2.1.el5

vim-minimal-7.0.109-6.el5

python-iniparse-0.2.3-4.el5

gtk2-2.10.4-20.el5

ecryptfs-utils-75-5.el5

yum-fastestmirror-1.1.16-13.el5.centos

fipscheck-lib-1.2.0-1.el5

dbus-libs-1.1.2-12.el5

dbus-1.1.2-12.el5

dbus-glib-0.73-8.el5

mcstrans-0.2.11-3.el5

dmraid-events-1.0.0.rc13-53.el5

openssh-server-4.3p2-36.el5

sysklogd-1.4.1-44.el5

dhcpv6-client-1.0.10-17.el5

selinux-policy-targeted-2.4.6-255.el5

module-init-tools-3.3-0.pre3.1.54.el5

kernel-2.6.18-164.el5

hal-0.5.8.1-52.el5

pm-utils-0.99.3-10.el5.centos

setup-2.5.58-7.el5

basesystem-8.0-5.1.1.el5.centos

glibc-common-2.5-42

nash-5.1.19.6-54

termcap-5.5-1.20060701.1

gnu-efi-3.0c-1.1

glibc-2.5-42

chkconfig-1.3.30.1-2

mktemp-1.5-23.2.2

audit-libs-1.7.13-2.el5

libtermcap-2.0.8-46.1

info-4.8-14.el5

ncurses-5.5-24.20060715

nss-3.12.3.99.3-1.el5.centos.2

sqlite-3.3.6-5

freetype-2.2.1-21.el5_3

bzip2-libs-1.0.3-4.el5_2

libstdc++-4.1.2-46.el5

gawk-3.1.5-14.el5

libattr-2.4.32-1.1

keyutils-libs-1.2-1.el5

libjpeg-6b-37

db4-4.3.29-10.el5

libxml2-2.6.26-2.1.2.8

atk-1.12.2-1.fc6

libsysfs-2.0.0-6

iptables-ipv6-1.3.5-5.3.el5

keyutils-1.2-1.el5

pcre-6.6-2.el5_1.7

libusb-0.1.12-5.1

procps-3.2.7-11.1.el5

gzip-1.3.5-10.el5.centos

binutils-2.17.50.0.6-12.el5

tcl-8.4.13-4.el5

tcp_wrappers-7.6-40.7.el5

mingetty-1.07-5.2.2

gdbm-1.8.0-26.2.1

dmidecode-2.9-1.el5

cyrus-sasl-lib-2.1.22-5.el5

sysfsutils-2.0.0-6

ed-0.2-39.el5_2

libhugetlbfs-1.3-3.el5

setserial-2.17-19.2.2

RedHat-logos-4.9.99-11.el5.centos

bitstream-vera-fonts-1.10-7

libX11-1.0.3-11.el5

libXext-1.0.1-2.1

libXcursor-1.1.7-1.1

libXi-1.0.1-3.1

grub-0.97-13.5

device-mapper-1.02.32-1.el5

shadow-utils-4.0.17-14.el5

kpartx-0.4.7-30.el5

coreutils-5.97-23.el5

openssl-0.9.8e-12.el5

fontconfig-2.4.1-7.el5

newt-0.52.2-12.el5

cryptsetup-luks-1.0.3-5.el5

libXft-2.1.10-1.1

libselinux-python-1.33.4-5.5.el5

python-elementtree-1.2.6-5

yum-metadata-parser-1.1.2-3.el5.centos

pam-0.99.6.2-6.el5

util-linux-2.13-0.52.el5

m2crypto-0.16-6.el5.6

libuser-0.54.7-2.el5.5

usermode-1.88-3.el5.2

device-mapper-multipath-0.4.7-30.el5

lvm2-2.02.46-8.el5

rpm-4.4.2.3-18.el5

tar-1.15.1-23.0.1.el5

psmisc-22.2-7

MAKEDEV-3.23-1.2

prelink-0.4.0-2.el5

rhpl-0.194.1-1

python-urlgrabber-3.1.0-5.el5

hicolor-icon-theme-0.9-2.1

trousers-0.3.1-4.el5

initscripts-8.45.30-2.el5.centos

yum-3.2.22-20.el5.centos

policycoreutils-1.33.12-14.6.el5

openssh-4.3p2-36.el5

dmraid-1.0.0.rc13-53.el5

kbd-1.12-21.el5

fipscheck-1.2.0-1.el5

openssh-clients-4.3p2-36.el5

setools-3.0-3.el5

dhclient-3.0.5-21.el5

selinux-policy-2.4.6-255.el5

mkinitrd-5.1.19.6-54

hwdata-0.213.16-1.el5

pciutils-2.2.3-7.el5

kudzu-1.2.57.1.21-1.el5.centos

[root@cent5 ~]#

一种思路是使用rpm –e –test 挨个尝试卸载没用的包。

一种思路就是按照网上的思路,直接复制目录结构,再复制有用文件,构造最小系统。

先采用步骤2

同时挂接4G和1.5G 的硬盘,选择从4G启动(可以通过vmware 调整顺序,或者bios调整启动顺序)

可是,faint,启动以后看到的内容却是1.5G盘上的内容,用fdisk –l看明明hda是4G,可是df –k看,hda却只有1G。怀疑是vmware的bug,支持单硬盘?

重新装了一个最小版的1G,安装时双硬盘,装在hdb上,选择boot记录不是MBR,而是hdb的第一分区。这回终于对了。

还有一个问题,就是虚拟机的网络老有问题,麻烦(把无线关了似乎好点)

4g:对应完整版

2g:  无用。已删除。

1.5g:  575M  不能和4G共同启动。可独立启动,用于验证rpm卸载功能。

1g 最小版

512M 用于验证裁剪后的小系统启动

问题:

1G的盘后来发现无法启动了,奇怪。(原来可以的,还改过hostname)

只好用cdlinux修复一下grub(用修复盘和grubinstall都不行)

正常了(可以启动,也可以作为从盘和4g盘一起启动)

首先把hdb mount起来

Mount /dev/hdb1 /mnt/hdb

用df –k看,大小为576M

可以看到dev目录下是空的

先全部复制到2G盘上(免得以后再挂双硬盘)

Cd /root

Cp –cpR /mnt/hdb .

卸载hdb,留待以后可以进一步缩减

通过sftp把相关脚本先传上去cp_and_rm.sh

开始裁剪,首先运行cp_and_rm.sh

少了misc和initrd两个目录

得到的目标目录有156M之多

超过了原作者说的80M

接下来复制usr目录 cp_usr.sh,少了一些命令(最小版没有)

[root@locent5old ~]# ./cp_usr.sh

cp: cannot stat `/usr/share/nmap': No such file or directory

cp: cannot stat `/usr/bin/ftp-rfc': No such file or directory

cp: cannot stat `/usr/bin/nmap': No such file or directory

cp: cannot stat `/usr/sbin/traceroute': No such file or directory

cp: cannot stat `/usr/sbin/traceroute6': No such file or directory

cp: cannot stat `/usr/sbin/vsftpd': No such file or directory

cp: cannot stat `/usr/sbin/x86info': No such file or directory

cp: cannot stat `/usr/lib/libslang-utf8.so.*': No such file or directory

cp: cannot stat `/usr/lib/libwrap.so.*': No such file or directory

[root@locent5old ~]#

一共177M,虽然大了点(例如selinux,我感觉完全可以去掉)

接下来准备把它搞到一个硬盘上

修改/boot/grub/grub.conf  (使用ramdisk)

修改/boot/grub/device.map (先不改)

修改fstab

修改rc.sysinit

#创建256M的ramdisk镜像文件并mount在/mnt/test上

使用原作者提供的mkramdisk.sh

通过gzip压缩(注:没有用cramfs或者squashfs)

得到50M的system.img

比想象中小

再搞一个500M的vm硬盘出来挂上

参照前面吧cdlinux装到硬盘的思路,先做一个可以引导的硬盘

Fdisk –l可以看到没有格式化的hdb

分区

[root@locent5old ~]# fdisk /dev/hdb

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel. Changes will remain in memory only,

until you decide to write them. After that, of course, the previous

content won't be recoverable.

The number of cylinders for this disk is set to 1064.

There is nothing wrong with that, but this is larger than 1024,

and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other OSs

(e.g., DOS FDISK, OS/2 FDISK)

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): p

Disk /dev/hdb: 549 MB, 549453824 bytes

16 heads, 63 sectors/track, 1064 cylinders

Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot      Start         End      Blocks   Id  System

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-1064, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-1064, default 1064):

Using default value 1064

Command (m for help): m

Command action

a   toggle a bootable flag

b   edit bsd disklabel

c   toggle the dos compatibility flag

d   delete a partition

l   list known partition types

m   print this menu

n   add a new partition

o   create a new empty DOS partition table

p   print the partition table

q   quit without saving changes

s   create a new empty Sun disklabel

t   change a partition's system id

u   change display/entry units

v   verify the partition table

w   write table to disk and exit

x   extra functionality (experts only)

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

[root@locent5old ~]# fdisk -l

Disk /dev/hda: 4294 MB, 4294967296 bytes

255 heads, 63 sectors/track, 522 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System

/dev/hda1   *           1         382     3068383+  83  Linux

/dev/hda2             383         447      522112+  82  Linux swap / Solaris

Disk /dev/hdb: 549 MB, 549453824 bytes

16 heads, 63 sectors/track, 1064 cylinders

Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot      Start         End      Blocks   Id  System

/dev/hdb1               1        1064      536224+  83  Linux

[root@locent5old ~]#

格式化

mkfs.ext3 /dev/hdb1

Mount

Mkdir –p /mnt/test

Mount /dev/hdb11 /mnt/test

#复制boot/目录到U盘

cp -cpR my_CentOS/boot /mnt/test/

#复制新的initrd文件和相关grub配置文件

cp system.img /mnt/test/boot/

再来是安装grub

参照cdlinux的硬盘安装方法(可以用cdlinux或者centos5.5的livecd)

Mkdir –p boot/grub

/usr/share/grub/i386-RedHat

Cp * cp * /mnt/test/boot/grub

Cd /mnt/test//boot/grub

Grub

root (hd0,0)

Setup (hd0)

boot成功!

注:换grubinstall试了试

grub-install --root-directory=/mnt/test /dev/hdb

这个启动会进入grub菜单…

怀疑是/dev/hdb的问题

换用512M硬盘重启。。。结果进了grub的菜单?

手动boot报缺libc.so.6

重新来过

用Cdlinux的光盘启动来安装grub, 这回启动成功了。但是init报错

还是libc.so.没权限?

离胜利还差一步

重新mount sysimg

把启动信息输出到串口

还是没权限

禁用selinux

再试

这回成功进入登陆页面了

不过登陆失败?

离成功越来越近了

将boot菜单改为单用户模式。从串口登录成功。

还差一点点了。

怀疑是login 相关的库不全

直接mount上4G盘,一个一个复制

/usr/bin/passwd

/usr/sbin/useradd

/usr/lib/libuser.so.*

/usr/lib/libcrack.so*

/usr/lib/cracklib*

/usr/share/cracklib*

终于,useradd,passwd,su都可用了。

重新mk_ramdisk,生成新的system.img,重启,ok了!

庆祝一下

[root@Fedora512 ~]# df -k

df -k

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/ram0               253871    162844     91027  65% /

none                    257668         0    257668   0% /dev/shm

[root@fedora512 ~]#

[root@fedora512 ~]#

top - 20:14:56 up 1 min,  2 users,  load average: 0.23, 0.12, 0.04

Tasks:  37 total,   1 running,  36 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 96.6%id,  0.0%wa,  3.4%hi,  0.0%si,  0.0%st

Mem:    515340k total,   292232k used,   223108k free,     1120k buffers

Swap:        0k total,        0k used,        0k free,    19232k cached

[root@fedora512 ~]# mount

mount

/dev/ram0 on / type ext2 (rw)

none on /proc type proc (rw)

none on /sys type sysfs (rw)

none on /dev/pts type devpts (rw,gid=5,mode=620)

none on /dev/shm type tmpfs (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

[root@fedora512 ~]#

[root@fedora512 ~]#

个别命令还缺一些库文件,不过无伤大雅了

clear: error while loading shared libraries: libncursesw.so.5: cannot open shared object file: No such file or directory

[root@fedora512 grub]# ldd /usr/bin/clear

ldd /usr/bin/clear

linux-gate.so.1 =>  (0x0068a000)

libncursesw.so.5 => not found

libdl.so.2 => /lib/libdl.so.2 (0x004dd000)

libc.so.6 => /lib/libc.so.6 (0x00d08000)

/lib/ld-linux.so.2 (0x00511000)

[root@fedora512 grub]#

初步的裁剪,得到的my_CentOS大小约为190M,放在256M的ramdisk运行

保留了除/usr目录下的全部库文件和配置文件

内核与原发行版相同

下一步的目标,一是继续精简模板的大小(通过rpm –e实现)

二是逐步添加需要的用户命令以及库文件(perl,sar等)

2个用于追踪命令相关库的命令

Ldd

Strace

从裁剪的过程可以了解。最终的系统大小主要取决于:

1)      初始安装的最小系统大小

2)      后期选择的用户程序的大小

由于采用系统安装程序可以定制的不多。

先考虑通过rpm卸载实现。一共

发现和Fedora不同,可以卸载的非常少。。。

就卸了3个包。意义不大。

536468

还是算了

反正现在的pc内存大。

权衡一下,还是抱枕感和最新版一致,更重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于C++&OPENCV 的全景图像拼接 C++是一种广泛使用的编程语言,它是由Bjarne Stroustrup于1979年在新泽西州美利山贝尔实验室开始设计开发的。C++是C语言的扩展,旨在提供更强大的编程能力,包括面向对象编程和泛型编程的支持。C++支持数据封装、继承和多态等面向对象编程的特性和泛型编程的模板,以及丰富的标准库,提供了大量的数据结构和算法,极大地提高了开发效率。12 C++是一种静态类型的、编译式的、通用的、大小写敏感的编程语言,它综合了高级语言和低级语言的特点。C++的语法与C语言非常相似,但增加了许多面向对象编程的特性,如类、对象、封装、继承和多态等。这使得C++既保持了C语言的低级特性,如直接访问硬件的能力,又提供了高级语言的特性,如数据封装和代码重用。13 C++的应用领域非常广泛,包括但不限于教育、系统开发、游戏开发、嵌入式系统、工业和商业应用、科研和高性能计算等领域。在教育领域,C++因其结构化和面向对象的特性,常被选为计算机科学和工程专业的入门编程语言。在系统开发领域,C++因其高效性和灵活性,经常被作为开发语言。游戏开发领域中,C++由于其高效性和广泛应用,在开发高性能游戏和游戏引擎中扮演着重要角色。在嵌入式系统领域,C++的高效和灵活性使其成为理想选择。此外,C++还广泛应用于桌面应用、Web浏览器、操作系统、编译器、媒体应用程序、数据库引擎、医疗工程和机器人等领域。16 学习C++的关键是理解其核心概念和编程风格,而不是过于深入技术细节。C++支持多种编程风格,每种风格都能有效地保证运行时间效率和空间效率。因此,无论是初学者还是经验丰富的程序员,都可以通过C++来设计和实现新系统或维护旧系统。3

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值