2009년 10월 28일 수요일

CentOS에서 동영상보기



CentOS를 설치하고, 여러가지를 배우다보니,

동영상플레이어를 만질기회가 없다가,

동영상 하나 볼일이 있어서, 프로그램에 설치돼돼있는 토템플레이어로

열어보니, 실행이 안됐습니다.

그래서, 검색해보니, 볼수있는방법이 있더군요,

그걸 소개 합니다.

순서는 코덱을 먼저 설치하고, mplayer를 설치하고,

아마도 mplayer의 제어화면역할을 하는지, smplayer을

설치하는것까지 입니다. 그러고나면, 안되던 토템플레이어도

실행이 됩니다.

밑에 써있는 내용을 모두 한줄한줄 실행시키는 겁니다.


yum -y install yum-priorities

rpm -Uvh http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

yum -y install gstreamer

yum -y install gstreamer-tools

yum -y install gstreamer-plugins-base

yum -y install gstreamer-plugins-good

yum -y install gstreamer-plugins-bad

yum -y install gstreamer-plugins-ugly

yum -y install mplayer

yum -y install smplayer

이상입니다.

레드햇계열에는 다 통용될듯싶습니다.


2009년 10월 26일 월요일

CentOS54 php5.3

http://www.webtatic.com/blog/2009/06/php-530-on-centos-5/

PHP 5.3 on CentOS 5
Posted 20th June 2009 by Andrew Thompson | 63 Comments

My previous articles on installing PHP on CentOS dealt with installing PHP 5.2.6. I have found this to have some bugs that kill the process without error information. One bug I found, which was on an x86_64 server, was that converting an object to a string did this.

So, I have compiled the latest PHP version, 5.2.10 5.3.0, and put it in my own repository for easy installation. I have compiled it for CentOS 5 i386 and x86_64, and provided the source RPMS in the repo, if anyone wants to compile it for another OS or architecture.

Update 2009-07-03 – I updated the version to PHP 5.3, which was released a few days before. This includes many new features such as closures, namespaces, and packaged scripts in phar files, which I’ll blog about soon. Check out PHP changelog for more details.
Update 2009-09-01 – Added a note about deprecated errors, and how to silence them. Also I have included a tip that might help those of you struggling to install.

I have also included the same php extensions I mentioned in my other article, php-mcrypt, php-mhash, php-mssql and php-tidy

To install, first you must tell rpm to accept rpm’s signed by me:

rpm --import http://repo.webtatic.com/yum/RPM-GPG-KEY-webtatic-andy

Then add the yum repository information to yum:

cd /etc/yum.repos.d/
wget http://repo.webtatic.com/yum/webtatic.repo

Now you can install php by doing:

yum --enablerepo=webtatic install php

Or update an existing installation of php, which will also update all of the other php modules installed:

yum --enablerepo=webtatic update php

If this does not work correctly, try disabling all other repositories while installing/updating, by adding the –disablerepo=* option. This will stop other dependencies from being installed, so you may want to install them first.

yum --disablerepo=* --enablerepo=webtatic update php

Deprecated Errors

Once you are running the new version, you may get “deprecated” errors in your error logs. This isn’t bad, it just means to tell you that some of the functions you are using are no longer prefered, and may be removed in a future major release. An example of this is the ereg functions. Preg functions are prefered over these, as they are much faster and more powerful, and in all cases do at least the same thing.

If upgrading the functions are not an option, and you would like to hide the deprecated errors from your error log, for example on a production server, just edit your /etc/php.ini file, find the line:

error_reporting = E_ALL

and replace to:

error_reporting = E_ALL & ~E_DEPRECATED

PHP 5.2.10

I am also maintaining a PHP 5.2.10 release, so should you prefer to install that (for reasons like incompatibilities or testing), you can force it to install that instead by doing:

yum --enablerepo=webtatic --exclude=php*5.3* update php

Or you can add to the /etc/yum.repos.d/webtatic.repo the line:

exclude=php*5.3*

Related Posts

* Installing PHP 5.2.6 on CentOS 5 – extra extensions
* Installing PHP 5.2.6 on CentOS 5
* Git 1.6.4 on CentOS 5
* Get an “A” in YSlow with Webtatic Optimizer
* PHP public key cryptography using OpenSSL
* Generating a random PHP identifier

This entry was posted on at 10:13 am and is filed under Server Admin, Software using CentOS, PHP as tag(s). You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
« mod_auth_mysql digest authentication patch
PHP public key cryptography using OpenSSL »
63 Responses to “PHP 5.3 on CentOS 5”

1.
Matt says:
21st June 2009 at 3:32 pm

Thanks for this!
Reply
2.
Andy says:
23rd June 2009 at 12:04 pm

Noticed Fedora 11 has a version of php 5.2.9, so I built a new version based on that (a few modifications were needed for CentOS), and put it in the repo.

This version has the additional patches that Fedora added, and comes in a single source RPM. There are a few additonal RPMs as well, such as a ZTS (Zend Thread Safety) compilation which will work better on Httpd Worker mpm.
Reply
3.
iNoize says:
25th June 2009 at 1:48 pm

Hmm got some Trouble
php-gd-5.2.10-4.x86_64 from webtatic has depsolving problems
–> Missing Dependency: libt1.so.5()(64bit) is needed by package php-gd-5.2.10-4.x86_64 (webtatic)
Error: Missing Dependency: libt1.so.5()(64bit) is needed by package php-gd-5.2.10-4.x86_64 (webtatic)
Reply
4.
Aurelian says:
30th June 2009 at 2:16 pm

–> Missing Dependency: libt1.so.5 is needed by package php-gd-5.2.10-4.i386 (webtatic)
Error: Missing Dependency: libt1.so.5 is needed by package php-gd-5.2.10-4.i386 (webtatic)

Why do i get this error?! I have installed CENTOS using

http://www.howtoforge.com/perfect-server-centos-5.3-i386-ispconfig-2

As tutorial. I’m complete newbie in LINUX. Please guide me through this.
Reply
5.
Andy says:
30th June 2009 at 10:42 pm

Sorry, it appears to be a rpm dependency that was missing in Fedora’s spec file I used. I’ve compiled new i386 and x64 binaries that have the correct dependencies, so you should just be able to attempt again and it’ll work.

I’ll try mentioning it to them, as it must be an issue on Fedora as well. The base install may include the package or something though.
Reply
6.
Joseph says:
3rd July 2009 at 9:14 am

First off, thanks for providing these packages! I’ve just installed PHP 5.3.0 on CentOS 5.3 and it is working great!

However, when trying to install php-gd I get an error similar to what Aurelian is reporting above:

php-gd-5.3.0-1.i386 from webtatic has depsolving problems
–> Missing Dependency: libt1.so.5 is needed by package php-gd-5.3.0-1.i386 (webtatic)
php-gd-5.3.0-1.i386 from webtatic has depsolving problems
–> Missing Dependency: t1lib is needed by package php-gd-5.3.0-1.i386 (webtatic)
Error: Missing Dependency: libt1.so.5 is needed by package php-gd-5.3.0-1.i386 (webtatic)
Error: Missing Dependency: t1lib is needed by package php-gd-5.3.0-1.i386 (webtatic)

Any ideas?
Reply
7.
Andy says:
3rd July 2009 at 12:07 pm

right, figured out the problem, t1lib was part of rpmforge’s repository (I always set that one up as it has a few extra packages I use)

I’ve removed the t1lib dependency and recompiled a new version of 5.3.0, so you can install/update to that and it should work fine.
Reply
*
Joseph says:
3rd July 2009 at 4:21 pm

Awesome! Works now. Thanks so much for your work.
8.
Hamid says:
25th July 2009 at 6:23 pm

Andy, thanks for providing help and yum sources. However, after doing “yum –enablerepo=webtatic update php”, I get:

–> Missing Dependency: php-api = 20041225 is needed by package php-pecl-Fileinfo-1.0.4-3.el5.centos.x86_64 (installed)
Error: Missing Dependency: php-api = 20041225 is needed by package php-pecl-Fileinfo-1.0.4-3.el5.centos.x86_64 (installed)

I am doing this on CentOS 5.2 64-bit for PHP 5.3 although I would be happy with PHP 5.2.10. Is your solution expected to work for me?
Reply
*
Andy says:
25th July 2009 at 6:27 pm

Hi Hamid,

PHP 5.3 actually contains the fileinfo extension as part of its default extensions.

You can remove the pecl extension and the rpms will install the fileinfo extension as part of the base php-common package.
*
Hamid says:
25th July 2009 at 8:53 pm

Hi Andy. Thanks for the guidance. I did:

yum remove php-pecl-Fileinfo.x86_64

ran PHP 5.3’s ./configure, make, make test & make install. php -v gives tons of errors relating to shared extensions written to /usr/lib/20090626 instead of the 64-bit one defined in /usr/lib64/php/modules.

Is there any hope in building PHP 5.3.0 on Centos 5.2-64?
*
Andy says:
25th July 2009 at 8:58 pm

sorry I don’t understand why you are building PHP 5.3? The repo contains that version, so you don’t need to compile.
9.
Hamid says:
26th July 2009 at 2:00 am

Andy, I have tried yum upgrade php.x86_64 & yum update php.x86_64 to no avail. Also, I tried yum upgrade of most other php packages installed:
php.x86_64
php-cli.x86_64
php-common.x86_64
php-dba.x86_64
php-devel.x86_64
php-gd.x86_64
php-imap.x86_64
php-ldap.x86_64
php-mbstring.x86_64
php-mysql.x86_64
php-odbc.x86_64
php-pdo.x86_64
php-pear.noarch
php-pear-DB.noarch
php-pear-Date.noarch
php-pecl-Fileinfo.x86_64
php-tidy.x86_64
php-xml.x86_64

which result in “No Packages marked for Update”.

I have your repo in my repo list. Can you point me in the right direction?

Many thanks, Andy.
Reply
10.
Andy says:
26th July 2009 at 9:31 am

hmm, my .repo file seems to act funny with the source repo definition in. I’ve deleted that part, so if you re-download it, yum should work better.

all you should have to do is:
yum –enablerepo=webtatic update php
Reply
11.
Hamid says:
26th July 2009 at 5:57 pm

Andy, now it’s at least trying:

#yum –enablerepo=webtatic update php

–> Processing Dependency: php-api = 20041225 for package: php-pecl-Fileinfo
–> Processing Dependency: php-api = 20041225 for package: php-pecl-memcache
–> Finished Dependency Resolution
php-pecl-Fileinfo-1.0.4-3.el5.centos.x86_64 from installed has depsolving problems
–> Missing Dependency: php-api = 20041225 is needed by package php-pecl-Fileinfo-1.0.4-3.el5.centos.x86_64 (installed)
php-pecl-memcache-2.2.3-1.el5_2.x86_64 from installed has depsolving problems
–> Missing Dependency: php-api = 20041225 is needed by package php-pecl-memcache-2.2.3-1.el5_2.x86_64 (installed)
Error: Missing Dependency: php-api = 20041225 is needed by package php-pecl-memcache-2.2.3-1.el5_2.x86_64 (installed)
Error: Missing Dependency: php-api = 20041225 is needed by package php-pecl-Fileinfo-1.0.4-3.el5.centos.x86_64 (installed)

except that I already have php-pecl-memcache installed:

# yum install php-pecl-memcache.x86_64
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: http://www.cyberuse.com
* updates: mirror.anl.gov
* addons: mirror.raystedman.net
* extras: http://www.cyberuse.com
Setting up Install Process
Parsing package install arguments
Package php-pecl-memcache-2.2.3-1.el5_2.x86_64 already installed and latest version
Nothing to do

I don’t even see your repo in the list.
Reply
*
Andy says:
26th July 2009 at 11:02 pm

Sorry Hamid, I haven’t built any of CentOS’s php-pecl-* packages with PHP 5.3.

It probably would be a good idea to, so I’ll try and sort that out soon, but in the meantime the only alternative is to uninstall all of them and “pecl install memcache” yourself. Fileinfo is already contained in the php packages, so you wont need to manually compile that.
*
Hamid says:
26th July 2009 at 11:31 pm

Thank you kindly Andy.
12.
Chip says:
29th July 2009 at 2:58 am

Thanks a ton, Andy! This was a huge help.
Reply
13.
Klaus says:
29th July 2009 at 10:13 pm

Great work! Thanks for the great packages, Andy. Really appreciated.

Any chance you can provide a package with curl? Thanks! :)
Reply
14.
TonyG says:
30th July 2009 at 4:23 am

My current php version is “5.1.6-20.el5_2.1″. I followed the instructions and got the following error, what can I do to resolve?:

….
—> Package php-ncurses.i386 0:5.2.10-5 set to be updated
–> Processing Dependency: php-common = 5.2.10-5 for package: php-ncurses
—> Package php-snmp.i386 0:5.3.0-3 set to be updated
—> Package php-pdo.i386 0:5.3.0-3 set to be updated
—> Package php-mysql.i386 0:5.3.0-3 set to be updated
—> Package php-imap.i386 0:5.3.0-3 set to be updated
—> Package php-xml.i386 0:5.3.0-3 set to be updated
–> Finished Dependency Resolution
Error: Missing Dependency: php-common = 5.2.10-5 is needed by package php-ncurses
Reply
15.
Andy says:
30th July 2009 at 7:50 am

@Klaus – php-curl is provided by the php-common package which should already be installed as it is a dependency of the php package, if that’s what you mean?

@TonyG – php-ncurses was removed from php’s distribution in 5.3, however you could “yum remove php-ncurses”, and “pecl install ncurses” when you’ve upgraded php, as it should be in pecl’s repository.
Reply
16.
brian says:
31st July 2009 at 5:34 pm

I have been able to install the 5.2.10 packages from your repo, which is great, but I am also trying to use your mhash and mcrypt packages. They seem to have installed correctly, however they do not show up in phpinfo() when run through apache. They DO show up if phpinfo() is run from the command line “php” command. Any ideas?

I’m using CentOS 5.3 32-bit.
Reply
*
Andy says:
31st July 2009 at 6:32 pm

The only situation I’d expect that to occur would be if you haven’t reloaded apache, sorry if you have already.
17.
brian says:
31st July 2009 at 8:07 pm

I have reloaded apache and found these messages in the error log:
PHP Warning: PHP Startup: mcrypt: Unable to initialize module\nModule compiled with module API=20060613, debug=0, thread-safety=0\nPHP compiled with module API=20060613, debug=0, thread-safety=1\nThese options need to match\n in Unknown on line 0
PHP Warning: PHP Startup: mhash: Unable to initialize module\nModule compiled with module API=20060613, debug=0, thread-safety=0\nPHP compiled with module API=20060613, debug=0, thread-safety=1\nThese options need to match\n in Unknown on line 0

This is my apache version: httpd-2.2.3-22.el5.centos.1
Reply
18.
Michael Mansour says:
2nd August 2009 at 5:20 pm

Hi Andy. I’ve just used your 5.2.10 RPM’s on Scientific Linux 5.3 (RHEL 5 derivative like CentOS).

They installed fine.

I used to use the Jason Litka’s (utterramblings) RPM’s for php 5.2.6 but he hasn’t updated in a long time. I have also tried remi which wouldn’t install without upgrading MySQL 5.0.45 to 5.1.x.

I’m glad your php 5.2.10 installs without the problems above.

However, one really good php module supplied by utterramblings is the php-xcache module, which is the php accelerator, one of the fastest open source ones around.

Could you compile this into your repo please?

I found a src rpm here:

http://yum.aclub.net/pub/linux/centos/5/umask/SRPMS/

I’m also wondering how with yum, you can tell it not to list the php 5.3.0 RPM’s on a yum list (or yum check-update) and concentrate only on the 5.2.x series?

Lastly, I wouldn’t mind emailing you directly outside of these comments sections but I couldn’t find an email address for you.

Could you email me please as I have some questions which aren’t really suitable for these comments.

Thanks for providing all this btw, you’re a life saver.
Reply
*
Andy says:
2nd August 2009 at 10:56 pm

Updated the article to show how to install just the PHP 5.2.10 version.

@Michael Thanks, I’ve sent you an email.
19.
Toby says:
3rd August 2009 at 3:07 pm

Hi there,

Great article, thanks for posting this. Would I be able to use your repository to add php-devel to my PHP 5.2.9 installation?

Cheers,

Toby
Reply
*
Andy says:
3rd August 2009 at 6:27 pm

Hi Toby,

I’d recommend upgrading to php 5.2.10, which is in this repository, including its php-devel package, as it is only a bugfix release, and shouldn’t have incompatibilities with my previous php 5.2.9 release.

I’d rather not maintain multiple bugfix releases, as there is a lot of overhead in having to recompile them with additional patches.
*
Toby says:
3rd August 2009 at 8:45 pm

Ok Andy, thanks for the tip, I’ll give it a try!

Best wishes,

Toby
20.
Toby says:
4th August 2009 at 1:51 pm

Hi Andy,

Sorry to bother you again. Trying to upgrade to 5.2.10 as suggested gives me a similar missing dependency to that mentioned by Joseph above:

php-gd-5.2.10-5.i386 from webtatic has depsolving problems
–> Missing Dependency: t1lib is needed by package php-gd-5.2.10-5.i386 (webtatic)
php-gd-5.2.10-5.i386 from webtatic has depsolving problems
–> Missing Dependency: libt1.so.5 is needed by package php-gd-5.2.10-5.i386 (webtatic)
Error: Missing Dependency: t1lib is needed by package php-gd-5.2.10-5.i386 (webtatic)
Error: Missing Dependency: libt1.so.5 is needed by package php-gd-5.2.10-5.i386 (webtatic)

Is there anything I can do to work around this? And presumably if I can get this to work I then just do an install of php-devel from your repository?

Thanks again,

Toby
Reply
*
Andrew Thompson says:
4th August 2009 at 3:10 pm

Hi Toby,

Sorry, I had only removed the t1lib dependency from the 5.3 version. I’ve compiled a new php 5.2.10 one now which you can use.
21.
Toby says:
4th August 2009 at 5:19 pm

Hi Andy,

I’m really sorry to keep bugging you, it seems unfair given all your good work! Having upgraded to 5.2.6 it ’seems’ to have toasted my install. My Apache error_log now shows this on restart:

PHP Warning: PHP Startup: bcmath: Unable to initialize module\nModule compiled with module API=20060613, debug=0, thread-safety=0\nPHP compiled with module API=20060613, debug=0, thread-safety=1\nTh$
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/curl.so’ – /usr/lib/php/modules/curl.so: undefined symbol: file_globals in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/dbase.so’ – /usr/lib/php/modules/dbase.so: undefined symbol: core_globals in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/gd.so’ – /usr/lib/php/modules/gd.so: undefined symbol: core_globals in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/json.so’ – /usr/lib/php/modules/json.so: undefined symbol: executor_globals in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/mbstring.so’ – /usr/lib/php/modules/mbstring.so: undefined symbol: sapi_globals in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/mysql.so’ – /usr/lib/php/modules/mysql.so: undefined symbol: executor_globals in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/mysqli.so’ – /usr/lib/php/modules/mysqli.so: undefined symbol: executor_globals in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/pdo.so’ – /usr/lib/php/modules/pdo.so: undefined symbol: executor_globals in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/pdo_mysql.so’ – /usr/lib/php/modules/pdo_mysql.so: undefined symbol: php_pdo_register_driver in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/pdo_sqlite.so’ – /usr/lib/php/modules/pdo_sqlite.so: undefined symbol: executor_globals in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/zip.so’ – /usr/lib/php/modules/zip.so: undefined symbol: executor_globals in Unknown on line 0

and phpinfo() is missing a bunch of sections (including mysql, bcmath etc).

Any idea what’s happened? Should I/can I roll back to the previous version?

Sorry to pester you with so many questions, I’m far from the Linux ninja I should be.

Toby
Reply
*
Toby says:
4th August 2009 at 6:36 pm

PS Actually, I should probably mention that after the PHP upgrade I installed php-devel from your repository followed by httpd-devel and apc, although apc has now been removed.
*
Toby says:
4th August 2009 at 6:46 pm

PPS Final two installs were from centos repository
*
Andrew Thompson says:
4th August 2009 at 6:52 pm

Hi Toby, I’ve sent you an email, so you can reply to me from the email if you’d like.
22.
Tom says:
4th August 2009 at 8:10 pm

Thank you for providing these packages!!

I am trying to use this to install lilac and it’s saying “PHP’s POSIX support is not available. POSIX support is required for the importer/exporter/autodiscovery to function”

Was this compiled with “–disable-posix” or is there something else wrong?
Reply
*
Andrew Thompson says:
4th August 2009 at 8:20 pm

At some point fedora split off the posix and other process extensions from the base install, you can install it doing “yum install php-process”
*
Tom says:
5th August 2009 at 12:50 am

Andrew,

Thank you so much. That was what I needed.

Tom
*
Lawal Adekunle says:
5th August 2009 at 4:59 pm

@ Andrew Thompson. Thanks so much for your post. You saved ma a whole lot of headache. i was installing centreon and it kept giving me Critical: php-posix functions are not installed. Now its Solved thanks a lot
23.
Matt Farmer says:
5th August 2009 at 9:02 am

Hey Andy,

Thanks for putting this all together. I’m also running into dependency issues with php-common.

# yum –enablerepo=webtatic update php

–> Finished Dependency Resolution
php-ncurses-5.2.10-6.i386 from webtatic has depsolving problems
–> Missing Dependency: php-common = 5.2.10-6 is needed by package php-ncurses-5.2.10-6.i386 (webtatic)
sb-publish-3.0.1-200705230939.noarch from installed has depsolving problems
–> Missing Dependency: any-php-sqlite2 is needed by package sb-publish-3.0.1-200705230939.noarch (installed)
php-mhash-5.2.10-6.i386 from webtatic has depsolving problems
–> Missing Dependency: php-common = 5.2.10-6 is needed by package php-mhash-5.2.10-6.i386 (webtatic)
Error: Missing Dependency: php-common = 5.2.10-6 is needed by package php-mhash-5.2.10-6.i386 (webtatic)
Error: Missing Dependency: any-php-sqlite2 is needed by package sb-publish-3.0.1-200705230939.noarch (installed)
Error: Missing Dependency: php-common = 5.2.10-6 is needed by package php-ncurses-5.2.10-6.i386 (webtatic)
Reply
*
Andrew Thompson says:
5th August 2009 at 9:53 am

Hi Matt,

Try “yum update –enablerepo=webtatic php*”. Possibly it’s trying to satisfy dependencies without upgrading them.

Also your output says something about “sb-publish”, which doesn’t look like it works with it.
24.
Matt Farmer says:
5th August 2009 at 5:05 pm

Thanks for your reply Andy,

That command gives a very similar reply. Could it be because the extensions in your repository are version 5.2.10-6 and not 5.3.0?

# yum list –enablerepo=webtatic php-mhash*
–snip–
Installed Packages
php-mhash.i386 5.2.6-1.el5.art installed
Available Packages
php-mhash.i386 5.2.10-6 webtatic
Reply
*
Andrew Thompson says:
5th August 2009 at 6:37 pm

@Matt
PHP 5.3 made mhash obsolite, and moved its functionality into php-hash which is installed by default.

I’ll compile a new version of 5.3 with the correct obsolite’s
25.
Joomla Developer says:
9th August 2009 at 4:39 am

Thanks a lot this worked like a charm on my CentOS 5.3 installation.
Reply
26.
Chas says:
11th August 2009 at 10:32 pm

Hmm the 5.4.10 seems have have broken some extensions and phpmyadmin

error_log:
Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/mysqli.so’ – /usr/lib/php/modules/mysqli.so: undefined symbol: executor_globals in Unknown on line 0

Linux yn 2.6.16.38-xenU #2 SMP Wed Aug 13 21:03:44 EDT 2008 i686 i686 i386 GNU/Linux

I installed the glibc compatability libraries but that didn’t help

suggestions? I’m rolling back for now – Chas.
Reply
27.
waynem says:
15th August 2009 at 3:02 am

I installed the PHP 5.3 on a Centos 5.3 unit, and it loaded and installed great, however, I needed to use either Zend or Ioncube with my software, and neither products have a PHP 5.3 compatible product. They will however work with PHP 5.2.10 I tried to re-install your 5.2.10 version, but it gives errors stating that no files were marked for “upgrade”. Probably because they are now 5.3 version, and 5.2.10 would be a “rollback” in versions. How can I rollback your PHP 5.3 upgrade and then install the 5.2.10 version ??

I am sure others will also run into this problem.

Thanks,
Wayne
Reply
28.
Andrew Thompson says:
15th August 2009 at 12:38 pm

Sorry about the 5.2.10 version not working before. I rebuilt exactly the same spec on another server and it now works.

As for downgrading, there doesn’t seem to be any easy way other than to “yum remove php*” then install again with the exclude (the yum-allowdowngrade plugin doesn’t seem to work), .
Reply
29.
waynem says:
17th August 2009 at 5:40 pm

The removal worked great, however, when I now try to update ( or “install” ) to the 5.2.10 version with the –exclude=*5.3* tag I get that I am missing dependencies for php-common = 5.2.10-6.1 and php-cli = 5.2.10-6.1 !!!

And the “update” will not load these dependencies.

Is there anyway to load these separately, so the php-5.2.10 version will load and run properly ?

Thanks again,
Wayne
Reply
30.
waynem says:
17th August 2009 at 8:43 pm

I was able to manually re-install the 5.2.10 versions using your RPMs and all is well.

Thank you,
Hopefully Zend and ION cube will get their act together and we can then upgrade to the 5.3 version.

Wayne
Reply
*
Andrew Thompson says:
18th August 2009 at 12:47 pm

Yep, you can manually install individual or multiple packages via rpm,
e.g.
rpm -i http://repo.webtatic.com/yum/centos/5/i386/php-cli-5.2.10-6.1.i386.rpm

Wish I could work out how people get to the state of the repository not finding packages, but in all my tests I haven’t found any problems. In theory it should work exactly correct if not having mixed up with other repositories or guides.
31.
rhino says:
27th August 2009 at 8:26 pm

Nice work! I was able to update my centos5 box to php5.3 when remi’s repo was missing a dependency…yours worked like a champ. Thanks!
Reply
32.
Kevin Lane says:
31st August 2009 at 5:34 am

Hi. I was having the same issue with no updates found until I realized that the version of CentOS I installed had priorities enabled by default. I had to put: priority=1 into your repo to make it find the updates.

Thanks for this page though as it helped a lot.
Reply
33.
Alex W says:
1st September 2009 at 8:56 pm

Although Andrew has already said it, I’m going to repeat that if you are missing packages, you can download and individually install them from here

http://repo.webtatic.com/yum/centos/5/i386/

With the 5.2.10 install, I found that mcrypt wasn’t being installed when I did

yum –enablerepo=webtatic –exclude=php*5.3* update php

but I was able to download it and install it manually afterwards

(and thanks Andrew, you’ve been a life saver)
Reply
34.
various ramblings says:
2nd September 2009 at 12:51 pm

[...] installing php5.3 with xml support on centos [...]
Reply
35.
Camulos says:
8th September 2009 at 9:16 am

thanx so much! I was looking for this :) ( PHP 5.2.10 !!)
Reply
36.
Alex says:
17th September 2009 at 1:05 am

You’re a life saver. One thing you have to add is XCache 1.3.0 which supports PHP 5.3. I dug up your email addy and I’ll email you the srpm.

Thanks!
Alex
Reply
37.
Deep says:
19th September 2009 at 5:06 pm

Hi Andy,

I managed to upgrade my PHP from 5.1.6 to 5.2.10. But then I wanted to install imap.

I did yum install php-imap, which surprisingly looking at the older version

[root@00:16:3e:69:96:bf-my00001 yum.repos.d]# yum install php-imap
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* epel: mirror.nus.edu.sg
* updates: mirror.nus.edu.sg
* base: mirror.nus.edu.sg
* addons: mirror.nus.edu.sg
* extras: mirror.nus.edu.sg
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
–> Running transaction check
—> Package php-imap.x86_64 0:5.1.6-23.2.el5_3 set to be updated
–> Processing Dependency: php-common = 5.1.6-23.2.el5_3 for package: php-imap
–> Processing Dependency: libc-client.so.1()(64bit) for package: php-imap
–> Running transaction check
—> Package php-imap.x86_64 0:5.1.6-23.2.el5_3 set to be updated
–> Processing Dependency: php-common = 5.1.6-23.2.el5_3 for package: php-imap
—> Package libc-client.x86_64 0:2004g-2.2.1 set to be updated
–> Finished Dependency Resolution
php-imap-5.1.6-23.2.el5_3.x86_64 from updates has depsolving problems
–> Missing Dependency: php-common = 5.1.6-23.2.el5_3 is needed by package php-imap-5.1.6-23.2.el5_3.x86_64 (updates)
Error: Missing Dependency: php-common = 5.1.6-23.2.el5_3 is needed by package php-imap-5.1.6-23.2.el5_3.x86_64 (updates)

I tried to run the rpm directly from your server:

# rpm -i http://repo.webtatic.com/yum/centos/5/x86_64/php-imap-5.2.11-1.x86_64.rp...

but this is giving me error:

error: Failed dependencies:
libc-client.so.1()(64bit) is needed by php-imap-5.2.11-1.x86_64

Need your help.

Thanx in advance.

Regards,
Deep
Reply
*
Andrew Thompson says:
20th September 2009 at 2:43 pm

Hi Deep,

You need to set the enablerepo flag whenever you install any packages that depend on my version, e.g.
yum install –enablerepo=webtatic php-imap

Also the reason the rpm -i failed was because rpm on its own doesn’t resolve dependencies. You would need to install the dependency beforehand.

You can lookup the package that the dependency is in by doing:
yum provides libc-client.so.1

In this case its libc-client, but names aren’t always the same.
38.
PHP 5.3 « devspan says:
28th September 2009 at 7:02 pm

[...] only has PHP 5.1 in it’s repository but Andy Thomson is hosting a 5.3 repo at Webtatic.com with a step by step guide on installing it from fresh or [...]
Reply
39.
John says:
17th October 2009 at 4:56 pm

Hi, I think I’ve everything set up! Thankyou for your great job!

I’m just missing the php_mysql.so : where can I find it?
Reply
*
Andrew Thompson says:
23rd October 2009 at 6:22 pm

php_mysql.so should be part of the php-mysql package (along with mysqli, pdo_mysql). Is yum not resolving it as a dependency?
40.
Jonathan Lambert says:
19th October 2009 at 1:34 pm

http://us2.php.net/manual/en/pcre.installation.php

It looks like you compiled PCRE support without –enable-utf8… this breaks frameworks like Kohana, which require it. Not sure how to fix this without recompiling (which is what I did) from source.

I might suggest it. :)

TY for your efforts!
Reply
*
Andrew Thompson says:
23rd October 2009 at 6:21 pm

Interesting, I only really modified the Fedora PHP package, so it only has the configure options that that adds.

Maybe though PHP 5.3 acts differently with this option and I need to add it. I’ll have a look later next week.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

http://fri8nd.egloos.com/2629817

PHP 설치 리눅스관련

* 작성시간 : 2009/10/12 16:21
* 퍼머링크 : fri8nd.egloos.com/2629817
* 작성자 : ceojune
* 덧글수 : 0

PHP 설치과정에 대해서 이야기 하고자 한다.

PHP 와 아파치를 동적으로 연동하기 위해서는 몇가지 설정이 필요하며, 아파치가 동적으로 돌아가기 위해서 DSO support 형식으로 PHP 가 지원 하여야 한다.

PHP 설치도 다른 어플리케이션과 마찬가지로

Source 설치 및 RPM 설치가 있다. RPM 방식설치는 레드햇 엔터프라이즈 5.4 버전에서 설치 되어있다.

일단은 RPM 형식으로 설치 되어있는 PHP 를 삭제를 해야한다.

#rpm -qa | grep php

하게 되면, php 에 대한 rpm 패키지들이 설치 되어있는지 확인해 볼 수 있다.

삭제를 위해서는

#rpm -e 해당rpm

해서 삭제가 가능 하다.

패키지가 연동되어있기 때문에 의존성을 무시하고 설치하려면,

#rpm -e php --nodeps <= nodeps 옵션을 줘야 삭제가 가능 하다.

이렇게 해서 PHP 를 삭제하였다면,

www.PHP.net 에 접속해서 php 를 다운 받도록 하자.

다운 받은 파일을 압축을 해제 하면

#tar zxvf php.5.3.0.tar.gz 으로 압축을 해제 하자 !

압축을 해제 했다면 설정을 컴파일 하기 전에 설정을 먼저 해줘야한다.

# ./configure --with-apxs2=/usr/local/apache/bin/apxs --with-mysql-=/usr/local/mysql
--with-config-file-path=/usr/local/apache/conf --with-exec-dir=/usr/local/apache/bin

으로 설정을 해줘야한다.

위와 같이 설정을 하는 이유는
--with-apxs2 는 PHP 가 아파치 데몬에 DSO 모듈로 로딩되도록 하기 위해서 apxs 파일을 위치 지정하는 것이고
--with-mysql 은 mysql과 연동하기 위해서 설치되어있는 위치를 가르키는 일이다.
--with-config-file-path 는 php.ini 파일 경로를 지정하는 옵션이며,
--with-exec-dir 은 아파치 데몬의 실행경로를 지정하는 일을 한다.

위와 같이 설정이 끝났다면, #make && make instaill

php 소스가 있는 곳에서
#cp php.ini-production /usr/local/apache/conf/php.ini 를 복사한다.

apache 설정을 해줘야하는 데 /usr/local/apache/conf/httpd.conf 파일을 vi 로 열어서

ServerName 을 편집해주고,
AddType 이 있는 부분에
AddType application/x-httpd-php .php .html .html .inc .php5 .php4
AddType application/x-httpd-php-source .phps
를 설정해준다.

이 설정은 파일을 해석할 때 어떠한 확장자를 해석 할 수 있는지 정의 해주는 부분이다.

이 후 apache 를 재시작 해주면 된다.
# /usr/local/apache/bin/apachectl restart

빵 !!

하면 된다... .....

But......

# /usr/local/apache/bin/apachectl start
httpd: Syntax error on line 99 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied

위와 같은 메세지를 만나게 될 것이다. ! 봉착 문제의 봉착 !
문제가 발생한것이다. 이것은 PHP 가 동적으로 DSO 모듈로 제대로 선언되지 못한것과 Shared Object 의 보안 설정 문제나 SeLInux 문제 일 수 있습니다.

이것을 해결하기 위해서는 PHP 동적 모듈이 문제 일 경우는 압축 해제 부터 다시 해서 해결 하면 되며,

보안 설정 문제 이면 아래와 같이 해결 하면 됩니다.

#/sbin/restorecon -R -v /usr/local/apache/modules/libphp5.so

#/usr/bin/chcon -t texrel_shlib_t /usr/local/apache/modules/libphp5.so

위와 같이 해결시에도 문제가 해결 되지 않은 경우 SELinux 를 설정을 해줘야한다.

# /etc/sysconfig/selinux 파일을 vi 로 열어서 아래의 항목과 같이 SELinux 를 해제 해줘야한다. !

SELINUX=disabled

위와 같이 해결 하면 된다.

이상 mysql + apache + php 연동으로 서버 구축을 해보았음.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

http://jonnychoe.egloos.com/5101760

[CentOS5.3] APM 설치 Linux

* by 멋진쟈니
* 2009/09/03 17:14
* jonnychoe.egloos.com/5101760
* 덧글수 : 0

<1.mysql>

./configure --prefix=/usr/local/mysql --localstatedir=/home/sqldata --enable-assembler --without-debug --with-mysqld-user=mysql --with-charset=utf8 --with-extra-charsets=complex --enable-thread-safe-client

컴파일시 에러뜨면 아래 설치
rpm -qa |grep gcc
yum -y install gcc-c++ gcc-gfortran

make
make install

/usr/local/mysql/bin/mysql_install_db
/usr/local/mysql/bin/mysqld_safe &

/usr/local/mysql/bin/mysqladmin -u root password '암호'
접속
/usr/local/mysql/bin/mysql -u root -p
show databases;

<2.apache2>

/server/mpm/prefork/prefork.c 파일에서
#define DEFAULT_SERVER_LIMIT 4096(256->4096)

/server/mpm/worker/worker.c 파일에서
#define DEFAULT_THREAD_LIMIT 256

./configure --prefix=/usr/local/apache2 --enable-so --enable-modules=all --enable-mods-shared=all --enable-ssl=shared --enable-rewrite=shared --enable-cache --enable-disk-cache --enable-mem-cache

<3.php>

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-sysvshm=yes --enable-sysvsem=yes --enable-debug=no --enable-track-vars=yes --with-ttf --with-iconv --enable-mbstring --enable-sockets --with-freetype-dir=/usr/local/freetype --enable-mbregex --enable-exif --with-gd --enable-gd-native-ttf --with-xmlrpc --with-config-file-path=/usr/local/php --with-ldap=/usr --with-zlib-dir=/usr/lib --enable-calendar

make: warning: Clock skew detected. Your build may be incomplete.

의미

컴파일 한 파일들이 현재의 시스템 시간보다 빠른다는 의미다.

해결 방법

file의 시간을 변경 해주면 된다.

컴파일 하기전 아래의 명령어를 실행시킨다.

touch *

Apache : "Cannot load /usr/local/apache2/modules/libphp5.so"
# service httpd restart
httpd: Syntax error on line 53 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied

SOLUTION ......................................

chcon -t texrel_shlib_t /usr/local/apache2/modules/libphp5.so

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Redhat 7.3 에서는 SQL서버를 설치하면 기본적으로 Mysql이 아닌 pgsql (postgress SQL)을 기본 DB로 PHP가 설정됩니다. (이는 phpinfo 파일에서 확인할 수 있음)
이것도 모르고 당연히 RPM으로 설치하면 PHP와 Mysql 이 연동 가능하리라 생각하신분들 많으셨을겁니다.

Mysql 과 PHP 를 RPM 으로 연동시켜주기 위해서 php-mysql 모듈이 필요한데 Redhat Linux CD 배포판 에서는 어찌된일인지 php-mysql-7.x.x.rpm 파일을 포함하고 있지 않습니다.

따 라서 현재 설치되어 있는 PHP 버젼과 동일한 버젼의 php-mysql RPM 패키지를 구하여서 설치한후 php.ini 파일에 mysql.so 모듈을 등록시켜준 다음 apache 를 다시띄워주면 PHP와 Mysql 이 연동됩니다. (phpinfo 파일을 확인해보시면 Mysql 이 등록되어 있음을 확인할수 있음)

파일다운로드 http://rpmfind.rediris.es/

RPM 설치후 제로보드를 사용하시고자 하시는 분들은 꼭 확인하세요. 참고로 php.ini 에서 file upload 가 기본적으로 Off 되어 있다는 사실도 확인하세요 !!

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

CentOS 와 PHP5.2

* Posted at 2009/03/25 14:01

CentOS 는 태생이 RHEL 계열인지라, RehHat에서 PHP 버전을 관리하는 방식을 따르게 됩니다. 설치형 블로그인 textcube도 PHP 5.2 이상을 지원한다고 선언한 이 마당에서, 아직 RHEL 계열이 5.1에서 멈춰있군요.

이런 쓰레드도 있고, 이런 쓰레드도 있네요. 둘다 PHP5.2를 언제 지원할 예정이냐는 이야기들입니다.

더 찾아보니, Upgrading to PHP 5.2.3 on RHEL and CentOS 이라는 글이 있군요.

Source 받아서 rpmbuild --rebuild php-5.2.5-jason.2.src.rpm 로 간단히 rpm을 만들 수가 있고, /usr/src/RPMS 에서 찾으시면될 것 같습니다.

http://www.php.net/

phpmyadmin을 사용하려하니, yum install phpmyadmin 이 안먹혔다.
그래서, 어차피 /var/www/html(centos,redhat)안에서 웹페이지처럼
작동할것이라서, 그냥 갖다가 복사해놨다.
그런데, php5.2 이상을 요구한다고 문구를 내보내며, 작동이 안됐다.

그래서 이젠 아예 누가 하는것처럼 5.2이상버젼(소스)을 가져다가
rpm으로 컴파일한후에 설치할 생각을 하게됐다.
http://www.php.net/에가서, 5.30으로 받았다.

/usr/src/soso/폴더를 만들어서, 그안에다 압축을 풀어놓고는,
soso/php-5.3.0/로 들어가서.
.configure

http://www.zend.com/en/products/server-ce/downloads

CD굽기_CentOS

http://www.linuxtopia.org/online_books/centos_linux_guides/centos_linux_...

00 mkisofs명령 이미지만들기

mkisofs명령은 iso9660규격으로 CD, DVD용 이미지를 만들고, 거의모든
종류의 파일을 iso에 포함할수있고, CD는 760m이하, DVD는 4.7G이하로
파일을 용량을 제한해야 합니다.

/home/user/폴더를 백업하고싶고, /home/user/junk/폴더내용은 불필요해서,
빼고, 래드햇이나, 윈도우에서 사용가능한 iso9660의 iso이미지를 제작하는
명령어는::

mkisofs -o backup.iso -x /home/joeuser/junk/ -J -R -A -V -v /home/joeuser/

제작된 iso이미지는 커서가 있는 현재폴더에 만들어지고,
또한 만들어진 iso이미지는 cdrecord명령으로 CDR,CDRW,
DVDR,DVDRW 로 구울수 있습니다.

mkisofs --help를 실행하면, 엄청난 옵션을 볼수있고,
나중에 LiveDVD용 iso이미지를 만들때 유용할것입니다.

00 cdrecord DVD굽기명령

cdrecord는 매우 강력한 CDR, CDRW, DVDR, DVDRW 를
굽는 명령어입니다.
굽는 명령을 실행하기전에 자신의 DVDROM의 디바이스주소를
알아내는 명령을 먼저 실행하여야합니다.
cdrecord -scanbus 를 실행하면 아래와 같이 디바이스상태가
출력됩니다.
출력된 자신의 디바이스주소를
cdrecord명령어를 적을때, 옵션란에다, 적어주기 위해서입니다.

0,0,0 0) 'HL-DT-ST' 'DVDRAM GH22LS50 ' 'TL01'
0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *

바로위에서, mkisofs로 백업형태로 만든 iso화일같은 경우는,
꼭 root사용자상태에서 명령을 실행해야하고,
그렇치않은 경우라도, CD,DVD매체를 뻑내지않기위해서는,
root사용자상태에서 작업해야할것같습니니다.

참고로 터미널상태에서, 완전한 root사용자를 만들기위해서는,
래드햇, 페도라, 센토스에서는,
su -엔터누름, 또는 su - root엔터누름 을 해주면됩니다.
우분투에서 보통쓰던 su엔터누름, su root엔터누름이 아니고,

위에 나온 표는 예시로 보이는 cdrom형식일뿐입니다,
먼저 자신의 cdrom형식을 알기위해선,
cdrecord -scanbus를 실행한후에,
굽기명령으로 실행해야합니다.
cdrecord -v -eject speed=4 dev=0,0,0 backup.iso

쓰기속도 4배속 디바이스주소 0,3,0 자세한설명 -v
완료후디스크꺼냄 -eject

CDRW,DVDRW 자료를 지우는명령
물론 여기서도 자신의 DVD의 디바이스주소를 알아내기위하여,
cdrecord -scanbus를 실행해서 나온 결과값을 보고나서,
그것을 넣어줘야합니니다.

cdrecord -eject --dev=0,0,0 --blank=all

디바이스주소 (0,0,0), 지우기=모두다.

윈도우에서 네로, 알콜 로 익숙하게 시디를 구워보다,
리눅스에서, 그래도 우분투, 데비안에서는 그런데로,
브라세 인지, 그런 GUI형식의 시디굽는 프로그램이
있는데, 센토스엔 없어서, 뻑날까봐 좀 신경도 쓰여서,
먼저 RW로 실험을 해본후에, CDR을 구워봤는데,
잘구워졌고, 명령어를 직접 적어넣어줘서 하는것빼고는,
윈도우에서 쓰던 GUI방식의 네로와 다른게 없었습니다.
이상입니다.

CentOS54 웹서버동작

00 CentOS 터미널에서, 완전한 root권한취득법은
su -엔터, su - root엔터 이다.
센토스, 래드햇, 페도라은 같은 계열이므로
같을것으로 추정된다.
보통 우분투에서의 방법으로는 반쪽짜리 root권한만을
얻을수있다. 그것을 실험해보는 방법은
시스템의 보안과 관련있는 명령인 ntsysv를 해봐서,
잘되면, 완전한root, 안되면 반쪽자리root로 판별함,
su엔터, su root엔터 이것들이 반쪽짜리다.

00. ntsysv로 다양한서비스를 개폐할수있다.
esc,tab,space,enter키로 조절한다.

00 standalone방식(독립식, 각자놀기식,지방분권식,군현통치제)과,
inetd방식(중앙집중식, 중앙통제식, 왕권통치제)이 있는데,
아니 이젠 inetd방식은 더욱더 진화해서, xinetd방식으로
현재 쓰여지고있다. xinetd방식은 중앙처리방식, 종합관리방식이다.


00 xinetd의 시작과 종료해보기

#cat /etc/services | more
이렇게하면 서비스상황을 한눈에 볼수있다.

#/etc/rc.d/init.d/xinetd stop
#/etc/rc.d/init.d/xinetd start
#/etc/rc.d/init.d/xinetd restart

#vi /etc/xinetd.conf
#cd /etc/xinetd.d
/etc/xinetd.d/# ls
이안에 있는 파일들은 각각의 서비스구성화일이다.
vi로 열어서 편집해주면 서비스를 개폐할수있다.
주로 disable = no 로 바꿔어주면 가능상태로 바뀐다.

#vi /etc/httpd/conf/httpd.conf
#/etc/rc.d/init.d/httpd start
#/etc/rc.d/init.d/httpd stop
#/etc/rc.d/init.d/httpd restart

#ps -ef | grep httpd
위에서처럼 서비스를 활성, 비활성으로 바꾸는것은
일회성이어서, 지금 현재의 부팅상태에서는
통용되는 방식이나. 나중에 재부팅됐을때조차도,
통용되게하려면, ntsysv를 실행한후에,
httpd를 체크하고 확인을 눌러줘야한다.

00 이번엔 아파치와 친구인 mysql에 대한것이다.

#mysql
#ps -ef | grep mysql

2009년 10월 24일 토요일

Cent OS 커널컴파일

CentOS 54, 커널컴파일,

00 CentOS는 Fedora, RedHat 의 친구사이라, 같을줄 알았는데,

조금은 달랐다.

00 먼저 CentOS용 커널컴파일도구를 다운받는다.

# yum install gcc
# yum install ncurses-devel
# yum install rpm-build
# yum install bison

00 커널소스를 다운받고, 압축을 푼다.

# cd /usr/src

/usr/src/ # wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.32-rc5.tar...

/usr/src/ # tar xvjf linux-2.6.32-rc5.tar.bz2

/usr/src/ # ln -s linux-2.6.32-rc5 linux

00 메뉴구성및 청소,

cd /usr/src/linux

/usr/src/linux/ # make clean

/usr/src/linux/ # make mrproper

/usr/src/linux/ # make menuconfig

00 컴파일실행

/usr/src/linux/ # make rpm

00 커널생성확인작업,

에러없이 잘됐다면,

/usr/src/redhat/SRPMS/ 에는

kernel-2.6.32rc5-1.src.rpm 이 생기고,

그리고, 자신의 CPU종류에 따라서, 각기다른폴더안에 만들어지는데,

뭐,, 그렇다고, 전혀 다른폴더는 아니고,

/usr/src/redhat/RMPS/ 이 안에 다양한 폴더가 있는데,

그것들이 모두 CPU종류별로 구분돼있는것이다.

지금 사용중인 나의 CPU는 32비트용 이므로,

컴파일작업한 커널이

/usr/src/redhat/RPMS/i386 안에 만들어진다.

다른타입의 CPU라면 옆에 폴더에 만들어질것이다.

만들어진 커널이미지의 이름은,

kernel-2.6.32rc5-1.i386.rpm 으로 만들어진다.

00 커널설치작업

이젠 그리로 들어가서,

# cd /usr/src/redhat/RPMS/i386

바로 여기서 커널설치명령을 내린다.

# rpm -ivh --nodeps kernel-2.6.32rc5-1.i386.rpm

여기서 --nodeps 는 의존성에러방지용이다.

00 이젠 ramdisk를 수동으로 만들어야한다.
이게없으면 부팅이 안되기 때문이다.

# cd /boot

boot/ # mkinitrd initrd-2.6.32-rc5.img 2.6.32-rc5

00 grub.conf에다 새로운커널을 적용하는 문구를 적어줘야한다.

cd /boot/grub

/boot/grub/ # vi grub.conf

/boot/grub/ # vi menu.lst

00 재부팅

# reboot

00 재부팅후에 uname -r 해줘서,
새로운 커널명이 나오면 커널작업이 성공한것이다.

수동명령(Fedora식 명령)
yum install rpm-build 를 안하고하니,
에러유발로 이렇게도 해봤다.
그러나, 이것 적용 안할 예정

make all
make modules_install
make install

그리고,
vi /etc/modprobe.conf 로 수정해줘야한다는데,
글쎄 그건 자동으로 되는것같은데,

커널을 완전히 설치한후에,

1. 모듈들의 의존성을 만들어주기위해서,

# depmod 2.6.32-rc5 를 한다드라,

2./boot/ # mkinitrd -v initrd-2.6.32-rc5.img 2.6.32-rc5

이렇게하다 에러 나오면, No module dm-mem-cache found for kernel 2.6.32-rc5, aborting.

/boot/ # mkinitrd --without-dmraid -v initrd-2.6.32-rc5.img 2.6.32-rc5

그런데, 여기서,,
depmod 와 mkinitrd 명령이 안먹힌다.
yum으로보니, 물건은 있다는데,
왜 작동을 안하냐고???
나중에 보자...

3./boot/grub/grub.conf 를 수정해야한다.
밑에 내용을 참고할것,

1 title CentOS (2.6.32-rc5)
2 root (hd0,0)
3 kernel /vmlinuz-2.6.32-rc5 ro root=/dev/VolGroup00/LogVol00
4 initrd /initrd-2.6.32-rc5.img

The file /boot/grub/grub.conf will be like this:

01 # grub.conf generated by anaconda
02 #
03 # Note that you do not have to rerun grub after making changes to this file
04 # NOTICE: You have a /boot partition. This means that
05 # all kernel and initrd paths are relative to /boot/, eg.
06 # root (hd0,0)
07 # kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
08 # initrd /initrd-version.img
09 #boot=/dev/sda
10 default=0
11 timeout=5
12 splashimage=(hd0,0)/grub/splash.xpm.gz
13 hiddenmenu
14 title CentOS (2.6.18-128.el5)
15 root (hd0,0)
16 kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/VolGroup00/LogVol00
17 initrd /initrd-2.6.18-128.el5.img
18 title CentOS (2.6.32-rc5)
19 root (hd0,0)
20 kernel /vmlinuz-2.6.32-rc5 ro root=/dev/VolGroup00/LogVol00
21 initrd /initrd-2.6.32-rc5.img


http://www.fogonacaixadagua.com.br/2009/09/how-to-compile-a-new-kernel-i...

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

[root@localhost boot]# ls -al
합계 46813
drwxr-xr-x 4 root root 1024 10월 25 13:22 .
drwxr-xr-x 23 root root 4096 10월 25 11:22 ..
-rw-r--r-- 1 root root 161 9월 3 18:16 .vmlinuz-2.6.18-164.el5xen.hmac
-rw-r--r-- 1 root root 952318 9월 3 18:16 System.map-2.6.18-164.el5xen
-rw-r--r-- 1 root root 1293759 10월 25 12:54 System.map-2.6.32-rc5
-rw-r--r-- 1 root root 68285 9월 3 18:16 config-2.6.18-164.el5xen
-rw-r--r-- 1 root root 82676 10월 25 12:54 config-2.6.32-rc5
drwxr-xr-x 2 root root 1024 10월 25 13:38 grub
-rw------- 1 root root 3234265 10월 24 18:22 initrd-2.6.18-164.el5xen.img
drwx------ 2 root root 12288 10월 24 18:11 lost+found
-rw-r--r-- 1 root root 80032 3월 13 2009 message
-rw-r--r-- 1 root root 107385 9월 3 18:16 symvers-2.6.18-164.el5xen.gz
-rwxr-xr-x 1 root root 36121495 10월 25 12:42 vmlinux-2.6.32-rc5.bz2
-rw-r--r-- 1 root root 2225793 9월 3 18:16 vmlinuz-2.6.18-164.el5xen
-rw-r--r-- 1 root root 2332320 10월 25 12:54 vmlinuz-2.6.32-rc5
-rwxr-xr-x 1 root root 817160 9월 3 19:06 xen-syms-2.6.18-164.el5
-rw-r--r-- 1 root root 375877 9월 3 16:27 xen.gz-2.6.18-164.el5

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

[root@localhost grub]# ls -al
합계 263
drwxr-xr-x 2 root root 1024 10월 25 13:38 .
drwxr-xr-x 4 root root 1024 10월 25 13:22 ..
-rw-r--r-- 1 root root 63 10월 24 18:33 device.map
-rw-r--r-- 1 root root 7584 10월 24 18:33 e2fs_stage1_5
-rw-r--r-- 1 root root 7456 10월 24 18:33 fat_stage1_5
-rw-r--r-- 1 root root 6720 10월 24 18:33 ffs_stage1_5
-rw------- 1 root root 855 10월 25 13:34 grub.conf
-rw------- 1 root root 646 10월 25 13:30 grub2.conf
-rw-r--r-- 1 root root 6720 10월 24 18:33 iso9660_stage1_5
-rw-r--r-- 1 root root 8192 10월 24 18:33 jfs_stage1_5
lrwxrwxrwx 1 root root 11 10월 24 18:33 menu.lst -> ./grub.conf
-rw-r--r-- 1 root root 6880 10월 24 18:33 minix_stage1_5
-rw-r--r-- 1 root root 9248 10월 24 18:33 reiserfs_stage1_5
-rw-r--r-- 1 root root 55808 3월 13 2009 splash.xpm.gz
-rw-r--r-- 1 root root 512 10월 24 18:33 stage1
-rw-r--r-- 1 root root 104988 10월 24 18:33 stage2
-rw-r--r-- 1 root root 7072 10월 24 18:33 ufs2_stage1_5
-rw-r--r-- 1 root root 6272 10월 24 18:33 vstafs_stage1_5
-rw-r--r-- 1 root root 8904 10월 24 18:33 xfs_stage1_5

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

/boot/grub/grub.conf

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/hdc
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
##title CentOS (2.6.32-rc5)
## root (hd0,0)
## kernel /xen.gz-2.6.32-rc5
## module /vmlinuz-2.6.32-rc5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
## module /initrd-2.6.32-rc5.img

title CentOS (2.6.18-164.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-164.el5
module /vmlinuz-2.6.18-164.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-164.el5xen.img

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

이건 분위기바꿔서, /boot/안의 화일과
/boot/grub/grub.conf 의 내용중에서,
xen어쩌구,, 하는 화일 때문인데,
그것을 해결하려면, menuconfig를
다시 해야겠네,,
rpm이 웬수다.

http://derwynd.com/2008/11/10/fedoraredhat-kernel-rpm-with-xen-reiserfs/

https://lists.sdsc.edu/pipermail/npaci-rocks-discussion/2008-September/0...

Fedora/Redhat Kernel RPM with Xen & reiserfs

Posted On November 10, 2008

Filed under Uncategorized

Comments Dropped leave a response

Download the src rpm

(eg. kernel-2.6.18-92.el5.src.rpm)

$ rpm -ivh kernel-2.6.18-92.el5.src.rpm

$ cd /usr/src/redhat/SPECS/

$ rpmbuild -bb kernel-2.6.spec

This will build
kernel-2.6.18-92.el5.x86_64.rpm kernel-devel-2.6.18-92.el5.x86_64.rpm
kernel-debug-2.6.18-92.el5.x86_64.rpm kernel-headers-2.6.18-92.el5.x86_64.rpm
kernel-debug-debuginfo-2.6.18-92.el5.x86_64.rpm kernel-xen-2.6.18-92.el5.x86_64.rpm
kernel-debug-devel-2.6.18-92.el5.x86_64.rpm kernel-xen-debuginfo-2.6.18-92.el5.x86_64.rpm
kernel-debuginfo-2.6.18-92.el5.x86_64.rpm kernel-xen-devel-2.6.18-92.el5.x86_64.rpm
kernel-debuginfo-common-2.6.18-92.el5.x86_64.rpm

Install the following rpm
$ kernel-xen-2.6.18-53.el5 xen-libs

Check the grub.conf file the xen lines will be added

#boot=/dev/sda
default=2
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-53.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-53.el5
module /vmlinuz-2.6.18-53.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-53.el5xen.img
title Red Hat Enterprise Linux Server (2.6.18-53.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-53.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-53.el5.img

If you list the files in /boot/ are added
vmlinuz-2.6.18-53.el5
initrd-2.6.18-53.el5.img
xen.gz-2.6.18-53.el5
xen-syms-2.6.18-53.el5

Now to build the kernel from the BUILD dir

$ cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64/
$ make menuconfig

——————————————————————-

Processor type and features —>
[*] Enable Xen compatible kernel

File systems —>
Reiserfs support
[ ] Enable reiserfs debug mode
[ ] Stats in /proc/fs/reiserfs
[*] ReiserFS extended attributes
[ ] ReiserFS POSIX Access Control Lists
[ ] ReiserFS Security Labels

XEN —>
[*] Privileged Guest (domain 0)
<*> Backend driver support
Block-device backend driver
Block-device tap backend driver
Network-device backend driver
[ ] Pipelined transmitter (DANGEROUS)
Network-device loopback driver
PCI-device backend driver
PCI Backend Mode (Virtual PCI) —>
[ ] PCI Backend Debugging
< > TPM-device backend driver
Block-device frontend driver
Network-device frontend driver
<*> Framebuffer-device frontend driver
<*> Keyboard-device frontend driver
[*] Scrub memory before freeing it to Xen
[ ] Disable serial port drivers
<*> Export Xen attributes in sysfs
Xen version compatibility (3.0.2 and later) —>

——————————————————————-
Build the kernel (if you have not changed the Makefile the subversion is EXTRAVERSION = -92.el5debug)

This will create vmlinuz-2.6.18-92.el5debug

$ mkinitrd /boot/initrd-2.6.18-92.el5debug.img 2.6.18-92.el5debug
(For the initrd img)

Add lines to grub.conf
——————————————————————
default=2
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-53.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-53.el5
module /vmlinuz-2.6.18-53.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-53.el5xen.img
title Red Hat Enterprise Linux Server (2.6.18-53.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-53.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-53.el5.img
title Red Hat Enterprise Linux Server (2.6.18-53.el5Debxen)
root (hd0,0)
kernel /xen.gz-2.6.18-53.el5
module /vmlinuz-2.6.18-92.el5debug ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-92.el5debug.img
——————————————————————

Reboot

xen.gz-2.6.32-rc5
xen.gz-2.6.18-164.el5

grub.conf 와의 관계규명.

xen홈피주소::
http://www.xen.org/
xen details 1::
http://wiki.xensource.com/xenwiki/Korean

xen details 2 centos5::
http://www.howtoforge.com/centos_5.0_xen

xen kernel details::
http://wiki.xensource.com/xenwiki/Kernel.org_Linux_on_Xen

http://wiki.xensource.com/xenwiki/XenDom0Kernels

http://article.gmane.org/gmane.comp.emulators.xen.user/40892

이런저런 xen에 관한 문서를 보면서, 흝어보니,
xen은 커널등을 암호화, 가상화화하는 방법으로 개발된것이고,
물론 커널만이 아니라, 다양한것들을 망라하고 있었다.
그런데 내가 목적으로 했던 2.6.32-rc5 같은 최신버젼에는
적용할수가 현재 없고, xen 개발자들이 연구중에 있는것같다.
여기 센토스54에 있는 2.6.18 버젼이 아직은 xen 을 적용한
최신버젼이고, 나는 여기서, 커널 업을 잠깐 보류해야할것같다.





2009년 10월 22일 목요일

DEBIAN 커널컴파일

데비안은 우분투와 친구사이라 같을줄 알았는데,

조금 다르고, 그것도 아주 중요한 부분에서,

차이점을 보여서 처음엔 좀 당황했었습니다.

시작하겠습니다.

00 커널소스다운로드

# cd /usr/src
/usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.32-rc5.tar.bz2
/usr/src # tar xvjf linux-2.6.32-rc5.tar.bz2
/usr/src # ln -s linux-2.6.32-rc5 linux

00 컴파일도구들, 패키지설치,

# apt-get install kernel-package
# apt-get install libncurses5-dev
# apt-get install fakeroot
# apt-get install zlib1g-dev
# apt-get install libssl-dev

00 컴파일설정

# cp /boot/config-xxxx /usr/src/linux/.config
이것은 이전의 컨피그를 재활용하려는 것입니다.
새롭게 구성하려면, 안해도 됩니다.

# make menuconfig
구성작업을 합니다.

00 컴파일 실행

# make-kpkg --initrd --revision=k2 binary-arch
이렇게하면, kernel_image, kernel_image_mysql, header_image 이렇게 3개의 .deb화일이
/usr/src/에 만들어지는데, 아마도 인베이드리눅서들이 쓰는 방법같고,
dpkg로 설치할때도 3개를 따로따로 모두 해주어야합니다.
그래서 인베이드리눅서가 아닌이상,
아래와 같이 단순하게 하여, .deb화일을 1개만 만듭니다.

# make-kpkg --initrd --revision=k2 kernel_image
이것을 실행 시키면, 2-3시간이 걸립니다.
에러없이 제대로 작업이 됐다면, /usr/src/안에 .deb화일이 만들어졌습니다.

00 컴파일된 이미지를 설치합니다.

dpkg -i kernel-image-2.6.32-rc5.deb

여기서 /boot 폴더안으로 들어가 봅니다.
cd /boot
그런데, initrd이미지가 안만들어지는 경우가 있습니다.
내_데비안에서 그런일이 일어나는 바람에 웹을 엄청나게
뒤졌으나, 한국사이트는 물론이고, 외국사이트에도,
몇년전의 lilo시절의 문장들만 있고, 이것은 없었습니다.
그러다 어떻게 어떤 외국사이트에 비슷한 사례를 발견하고는,
힌트를 얻어서 해봤더니 돼더군요,
그래서 그것을 소개합니다.

데비안계열은 다른것은 모두 자동으로 잡아주는데,
initrd_image를 안만들고, /boot/grub/grub.cfg화일안의 내용에도 역시
initrd_image를 안적어놨습니다.
그래서, 먼저 /boot로 들어가서는,

# cd /boot
# mkinitramfs -o initrd.img-2.6.32-rc5 2.6.32-rc5 엔터침
이렇게하여, initrd.img-2.6.32-rc5를 수동으로 만들어놓고는,
/boot/grub/grub.cfg 문장을 nano로 열어서,
이전의 initrd커널이미지문장을 복사해서,
새로작업한 커널문장에다 붙여넣기한후에
겨우 새로운 커널로 부팅할수 있었습니다.

그리고 한번, /lib/modules/폴더안을 살펴보기 바랍니다.
그곳에 각커널별로 모듈들이 모여있습니다.

이상입니다.

stage3설치

stage3(gentoo)설치.


처음엔 그래픽화면으로 설치해서 써보려고하다가, 내PC의 랜카드가 On_Boarn(보드에 포함된)용

랜카드인 SIS900용이 인식불능으로, 인터넷을 못하는 바람에 하는수없이 커널컴파일을 하다가,

커널컴파일후에 부팅이 안되는 문제가 너무 많이 나와서, stage3로 설치하면 랜카드를 인식할수

있을까하다가,,, 웹에서 stage3설치기를 보려고했더니, 따라하면 곧 부팅불능되게 써놨더군요.

차라리 쓰지나 말든지, 아니면 제대로 쓰든지... 그래도 이해는 됩니다.

젠투설명서가 모두 영어로 돼있고, 어휘를 불필요하게 어려운 어휘를 써놔서,

쉬운어휘를 선택해도 됐을텐데,, 저도 사전 꽤나 봐야했습니다. 그런 그렇고,,


젠투를 아예 안쓰는 하드에 따로 설치하려고, 하드디스크를 찾아서, 젠투라이브를 걸어서,

부팅해보니, 전에 설치해봤던 리눅스버젼들이 남아있어서, 그런데, grub방식으로

부팅하는것들은 좀 질겨서, 잘 안씻어지므로, 먼저, HirenBootingCD로 부팅해서,

MBR만지는 툴로 잘 씻어줍니다. MBR툴중에는 MBR-WORK가 쓰기에 아주 편합니다.

MBR-WORK를 선택해 들어간후에, 모든 MBR을 지워버리는번호를 선택하고 Yes하고,

그다음은 표준MBR을 설치하는번호를 선택하고 Yes한후에 E를 누르고 재부팅합니다.

그리고 이젠 HirenBootingCD를 빼고, 젠투라이브시디를 넣어서 부팅합니다.

MBR을 께끗히 씻은 하드라서, MBR은 모두 0(zero)로 채워져 있습니다.

하드디스크를 fdisk로 파티션작업을 해야하는데, Gentu_LiveCD, Gentu_LiveDVD, 또,

다른라이브시디 KnoppixLiveCD 마다 /dev/를 잡는법을 조금씩 달라서,

/dev/sda로도 되고, /dev/hdc로 잡히더군요, 그런데, GeutuLiveCD에서는

/dev/sda로 잡혔습니다. 그래서, 여기서는 /dev/sda로 써나가겠습니다.

여기서 이 얘기를 하는 이유는, 나증에 /etc/fstab, /etc/mtab, /proc/mounts,

또 /boot/grub/grub.conf 안에 들어갈내용에 한번 정한 fdisk의 /dev/sda가 똑같이

나와야하기 때문이다. grub이 잠깐씩 미쳐서, 자동으로 아무렇게나 쓰는 때도 있어서입니다.

00 파티션작업하기

먼저 터미널을 띄운후에, 디폴트로 일반사용자로 돼있으므로, sudo su엔터로 root사용자로 바꾼다.
참고로 사용한 하드의 용량은 20GB 입니다.

livecdgentoo# fdisk -l

livecdgentoo# fdisk /dev/sda

밑에는 fdisk모드에서 실행한 명령어이다.

n > p > 1 > enter침 > +200M 엔터침,
n > p > 2 > enter침 > +2048M 엔터침,
n > p > 3 > enter침 > enter침,
t > 2 > 82 엔터침, 그리고는, w 엔터침
이렇게해서 파티션작업은 완료됐습니다.

00 포멧 하기.

mke2fs /dev/sda1 엔터침,
mkswap /dev/sda2 엔터침,
mke2fs -j /dev/sda3 엔터침,

00 마운트하기(기본마운트)

swapon /dev/sda2
mount /dev/sda3 /mnt/gentoo
mkdir /mnt/gentoo/boot
mount /dev/sda1 /mnt/gentoo/boot

00 stage3 다운로드

여기서 밑에 명령으로 현재 커서위치폴더에 받아지므로, 위치는 /mnt/gentoo/ 입니다.
livecdgentoo# wget http://ftp.daum.net/gentoo/releases/x86/2008.0/stages/stage3-i686-2008.0.tar.bz2
이젠 받아진 그위치에서 압축을 풉니다.
livecdgentoo# tar xvjf stage3*

00 portage 다운로드

다운받을곳으로 커서를 이동시켜놓고 하기위해서,
livecdgentoo# cd /mnt/gentoo/usr
livecd /usr# wget http://ftp.daum.net/gentoo/snapshots/portage-latest.tar.bz2
livecd /usr# tar xvjf portage-lat*

00 컴파일환경변수설정 들쳐보기

아직은 vi가 설치 안됐으므로, nano로 엽니다.
# nano /mnt/gentoo/etc/make.conf
참고로 사용중인 PC의 cpu는 amd2600Mhz one_core 입니다.
밑에는 make.conf의 내용입니다.

CFLAGS = " -O2 -march = i686 -pipe "
CXXFLAGS = " -O2 -march = i686 -pipe "
CHOST = " i686 - pc -Linux - gnu "

이렇게 3줄이 활성상태로 적혀있었다.
이것은 자동으로 생성된것인데, 수정할 필요도 없고,
수정하면 오히려 오류발생빈도가 높아보인다.

00 미러설정(다운받을 장소를 미리 정해놓는 작업)

livecdgentoo# mirrorselect -i -o >> /mnt/gentoo/etc/make.conf
이렇게하면, 조금있다가, 뭔 화면이 뜨는데, 스크롤을 제일 밑으로 내리면,
다운이 잘되는 한국서버들이 보일겁니다. space와 tab키를 이용해서,
*표시를 한후에 엔터합니다.

00 DNS정보를 복사하기(chroot명령전에 해야합니다)

# cp -L /etc/resolv.conf /mnt/gentoo/etc/

00 proc, dev를 마운트 한다,(마무리_마운트)

# mount -t proc proc /mnt/gentoo/proc
이것을 mount -t proc none /mnt/gentoo/proc 이렇게도 하는것같으나,
위에것이 더 좋아보인다.

# mount -o bind /dev /mnt/gentoo/dev

00 마운트돼있는 /mnt/gentoo/를 루트, 즉 / 로 전환시켜준다.
이름하야, chroot작업,

# chroot /mnt/gentoo /bin/bash
# env-update
#source /etc/profile

00 최근의 portage트리를 받는다.

# emerge --sync
이 작업을 한후에 메시지에서, emerge update 하라고 하는데,
안하는것이 좋은것같았다.

# emerge --oneshot portage

00 패키지설치를 위한 환경설정을 확인해본다.

/etc/make.conf 내용을 한번 들쳐본다.
# nano /etc/make.conf
# ls -FGg /etc/make.profile

00 한국어를 추가한다.

# nano /etc/locale.gen

밑에다 아래내용을 추가한다.

ko_KR.UTF-8 UTF-8
ko_KR.EUC-KR EUC-KR

00 커널을 설치한다.(고수분이 아니면 genkernel명령방식으로 설치한다)
컴파일중에 줄줄이 뜨는 메시지를 보니, portage까지 하나하나 들쳐보면서
컴파일하는것으로 봐서, genkernel로 하는게 좋아 보인다.

# emerge gentoo-sources
소스를 받고,풀고, 심볼릭링크까지 자동으로 진행돼서, 바로,,
# ls -l /usr/src/linux
# emerge genkernel
# cp /boot/config* /usr/src/linux버젼/.config
이것은 전에쓰던 재활용해보려는 방법인데, 아예 새로운방식으로
하려면 이작업은 필요없을수도 있다.

#genkernel --menuconfig all
이때 먼저, /etc/genkernel.conf 문장을 참고한다.
menuconfig화면에서, 원하는 항목을 골라서 선택하고는 저장하고, 끝내면,
/usr/src/linux버젼명/폴더안에 .config화일로 저장되는데,
그냥 ls 로는 안보이고, ls -al 로 해야 보인다.
이미 genkernel 이 실행되고 있을것이다.
여기서 2-3시간이 걸리므로, 아예 다른일을 하면서, 시간을 보낸다.

00 부팅될 이미지 확인 작업,
# ls /boot/kernel* /boot/initramfs*

00 부팅시에 마운트될 파티션설정및 확인,

# nano /etc/fstab
# nano /proc//mounts
# nano /etc/mtab

00 시스템이름을 정한다.

# nano /etc/conf.d/hostname
이것은 그냥 손을 안대면, 디폴트로 localhost 이다.

00 네트워크를 설정한다.

이것은 대부분 dhcp(자동으로, 또는 dhcpcd 라는 데몬으로 ip를 받아오므로
그냥 dhcp로 아래와 같이 정한다.

# nano /etc/conf.d/net
이렇게 화일을 열어서,
config_eth0 = ("dhcp") 를 적어주고, 저장한다.

여기서 nano 사용법은 아주쉽습니다. 수정한후에, 수정한것을 저장하고 나오려면,
ctrl+O를 한꺼번에 누르고는 뭐라고 물어보는 문장이 나오면, 엔터치고나서,
ctrl+X를 한꺼번에 누르면 저장하고는 나온것이다.

# rc-update add net.eth0 default
net문장을 수정한후에, 시스템에 적용시켜주는 문장입니다.

00 root의 암호를 정한다.
이 작업을 안하면 하드로 부팅후에 로그인을 할수없다.
# passwd

00 우선,, 시스템의 필수화일을 설치한다.
재부팅이 된후에 당장에 필요한것...

# emerge syslog-ng
# rc-update add syslog-ng default

00 DHCP를 설치한다 (dhcp_client)
dhcp로 ip를 받아와야 네트워킹을 할수있다. 그래서,

# emerge dhcpcd
# dhcpcd eth0

00 부트로더(BootLoader)인 Grub를 설치한다.
이부분이 웹상에 있는 설명들에 부팅불능이 나오게 써놔서, 훈련 많이 했습니다.

# emerge grub
grub를 다운합니다. 그리고 기본설치를 합니다.
# nano /boot/grub/grub.conf
이렇게 grub.conf를 한번 봐봅니다.

00 Grub을 다운받고, 기본설치는 됐으니,
Grub의 뒷마무리작업을 해야 합니다.
그렇치않으면 부팅불능사태가 납니다.

# grep -v rootfs /proc/mounts > /etc/mtab
# grub-install --no-floppy /dev/sda
# grub --no-floppy
이렇게 하고나면, grub의 내부명령상태를 진입합니다.
그러면서, 프롬프트가 grub>로 바뀝니다.

grub> find /boot/grub/stage1
PC의 응답화면 => (hd0,0)
응답화면을 보고는 밑에것을 타이핑합니다.

grub> root (hd0,0)
grub> setup (hd0)
grub> quit

00 응용프로그램들 설치,

# emerge vim
# emerge vixie-cron
# rc-update add vixie-cron default
# emerge cvs

00 genkernel과 grub이 자동으로 해주기는 하나,
다시 한번 필수화일들 점검,,

00 재부팅,

stage3설치기가 상당히 긴데, 다른분들은 저같이
헛고생 안했으면 하는 바램으로, 이렇게 글을 올립니다.

2009년 10월 8일 목요일

33


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

1. Minimal Install CD를 받아 굽는다.

2. CD를 넣고 부팅한다. 캐릭터 해상도는 80X25, 키보드 레이아웃은 기본으로 잡는다.

3. 네트워크를 잡는다. 안되면 잠 못잔다. -_-;

4. fdisk로 기존의 파티션을 알아서 적당히 날려먹는다.

- 메모리가 2GB 이상인 경우 스왑을 적게 잡거나 잡지 않는다 (시스템 성능에 문제 있을 수 있음)

- 기본적으로 루트와 부트 파티션을 만드는데 도움말을 보면 /opt 나 /usr /var 등을 만들라고 한다.

하드가 널럴하면 그렇게 하든가...



5. 잡은 파티션을 포맷한다. mke2fs -j 명령으로 ext3 타입의 파일시스템을 만들든지

mke2fs로 ext2 파일시스템을 만든다. 스왑파티션이 있다면 mkswap 을 만든다.

예) mke2fs -j /dev/hda1

mke2fs -j /dev/hda2

mkswap /dev/hda3



6. 스왑 파티션은 가동시키고 나머지 파티션은 마운트 한다. 마운트 타겟 기준 루트는 /mnt/gentoo 이다.

예) mkdir /mnt/gentoo/boot

mount /dev/hda1 /mnt/gentoo/boot

mount /dev/hda2 /mnt/gentoo

swapon /dev/hda3

mkdir /mnt/gentoo/dev

mkdir /mnt/gentoo/proc

mount -t proc proc /mnt/gentoo/proc

mount -o bind /dev /mnt/gentoo/dev

env-update

source /etc/profile



7. 우선 /mnt/gentoo 로 이동한 후에 다음 명령을 실행한다.

links http://www.gentoo.org/main/en/mirrors.xml



8. 어떤 Stage TarBall 을 받을 것인가... 를 결정하고 Page Down 키를 눌러서 카이스트 서버를 찾는다. Portage도 함께 받는다.

releases/x86/2007.0/stages/ 에 가면 스테이지 별로 파일들이 있다. 공식핸드북에서는 md5sum을 체크하라고 되어 있지만 사실 그럴 필요는 없다고 본다. Portage는 출시버전에만 맞춰서 받으면 된다. 이는 snapshots/ 에 가면 있다. 최신버전은 최신날자로 되어 있다.



9. tar xvjpf 명령을 사용해서 Stage TarBall 파일을 풀고 tar jxvf 명령으로 Portage 파일을 푼다. portage 파일을 풀 떄 경로문제로 인해 명령은 필히 다음과 같이 해야 한다.

tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr



10. /mnt/gentoo/etc/make.conf 파일을 손보라고 나와있지만 사실 우리가 건드릴 필요가 없다. 대부분 젠투 패키지 부팅시 알아서 설정된다.



11. 다음의 명령을 사용하여 젠투 미러를 설정한다. 컬러 박스 화면이 나오면 Default 서버를 선택하도록 하라. 다른 서버는 느리거나 먹통일 가능성이 많다.

mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf



12. 루트의 주체를 전환한다.

cp -L /etc/resolv.conf /mnt/gentoo/etc/


chroot /mnt/gentoo /bin/bash



13. 시스템 리빌드. ( Stage 1 Only ! ! )

cd /usr/portage/scripts

(중간에 /bin/perl 문제 때문에 멈춘다. 그러니 반드시 다음 명령 실행후 부트스트래핑 하고 시스템이머징 한다.)

emerge --nodeps gdbm libperl perl

./bootstrap.sh

emerge -e system



14. 커널 완성

좀 무식하게 하는 방법이라면 커널을 직접 생성해서 /boot에 복사하는 방법이 있지만 genkernel 스크립트가 존재하기 때문에 이따위 삽질은 안해도 된다.... 그런데 만약 이 방법으로 한 커널이 문제가 발생한다면 커널을 과감하게 새로 설정하고 컴파일 한후 (Architecture)/bzImage 를 /boot에 적당한 이름으로 바꾸어서 복사하도록 한다.



emerge genkernel

zcat /proc/config.gz > /usr/share/genkernel/x86/kernel-config-2.6

genkernel all



15. /etc/fstab 편집, /etc/mtab 복사

부팅시 올바른 디스크, 파티션 인식을 위해서는 반드시 FileSystem Table 을 올바로 기재해야 한다.

마운트 테이블을 /etc/mtab으로 복사한다.

grep -v rootfs /proc/mounts > /etc/mtab


16. GRUB, crontab 설치

부팅시 필요한 부트로더와 데몬 실행 관리자를 설치한다. 설명은 GentooDoc 에 잘 나와있다.



17. 재부팅 시험

커널 패닉 메세지를 보고 조금씩 수정하면 된다. 본인은 커널을 다시 설정하고 컴파일을 하여 /boot에 다시 심고 GRUB에 udev 옵션을 주고 램디스크를 뺐다.

PCG-SRC55TL은 PCMCIA와 ORINOCO 내장 랜카드 Intel e100, Intel 그래픽, Alps Pointing device... (거기까지 -_-) 등이 있으므로

이러한 것들을 고려하여 커널 설정을 해준다. 외장형 CD-ROM을 달고 있다면 OHCI1394와 SCSI 에 체크한다.



18. 마무리

처음부팅했을때 경우에 따라서는 /dev 가 제대로 설치되지 않았다는 둥 뭐라는 둥 하는 메세지가 뜬다. 그러면 다음 나온 것과 같이 뜰 것이다.

mkdir /mnt/fixit

mount --bind / /mnt/fixit

cp -a /dev/* /mnt/fixit/dev/

umount /mnt/fixit/dev

rmdir /mnt/fixit



완전 똑같다고 보긴 어렵겠지만 여하튼 스크린에 뜬대로 명령어 5줄을 실행한다.

그리고 다음 두줄을 실행한다. (역시 기억난대로 쓴 것이니 스크린 메세지를 참조할 것)

rm /etc/issue

mv /etc/issue.oldfix /etc/issue



19. 부팅메세지 확인

이제 vixie-cron이 잘 실행되는 모습을 볼 수 있을 것이다.

설치가 완전히 끝났으므로 Portage와 Stage 관련 파일을 루트에서 제거한다.

Enjoy! :)



마무리 : 2007/12/28 새벽 04:00
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

젠투리눅스 설치하기 - Stage 0

0.준비과정
젠투의 설치과정은 시작하는 stage에 따라 3가지로 구분되며 준비과정은 stage에 상관없이 반드시 거쳐야 하는 설치과정이다.

0.1.VMware
Gentoo Linux를 VMware 에 설치하고자할 때 해야하는 일이다. 실제 머신에 설치할 경우에는 "0.2.CD받기"로 건너뛰어라.

0.1.1.가상머신만들기
File > New > Virtual Machine
Virtual machine configuration: Custom
Virtual machine format: New - Worksatation 5
Guest operationg system: Linux, Other Linux 2.6.x kernel
Virtual machine name: Gentoo Linux
Location: D:\VMware\Gentoo Linux
Processors: Two
Memory: 512MB
Network connection: Use host-only networking
I/O adapter types: IDE Adapter (ATAPI)
SCSI Adapters: BusLogic >> 꼭 기억하고 있어야 나중에 커널 컴파일할 때 커널패닉 안만납니다.
Disk: Create a new virtual disk
Virtual Disk Type: SCSI (Recommended)
Disk Size (GB): 36GB
Disk file: Gentoo Linux

0.1.2.네트워크설정

0.1.2.1.Host OS 설정
제어판 > 네트워크연결 > 인터넷에 직접 연결된 어댑터 > 속성 > 고급
인터넷 연결 공유, 다른 네트워크 사용자가 이 컴퓨터의 인터넷 연결을 통해 연결을 할 수 있도록 허용에 체크
홈 네트워킹 연결: VMware Network Adapter VMnet1
방화벽설정:
1.없애기
제어판 > 네트워크 연결 > 로컬 영역 연결 > 속성 > 고급 > Windows 방화벽 > 설정 > 고급 > 네트워크 연결 설정 > 로컬 영역 연결 > 체크해제
2.예외
포트추가: 22, SSH


0.1.2.2.VMware 설정
VM > Settings > Ethernet에서 Host-Only로 설정

0.1.2.3.Guest OS 설정
IP: 192.168.0.180
Subnet Mask: 255.255.255.0
Gateway: 192.168.0.1
DNS: 192.168.0.1

0.2.CD받기
젠투 시디는 아래의 주소에서 받을 수 있다.
http://www.gentoo.org/main/en/where.xml

0.3.네트워크설정
부팅을 한 후 ifconfig 혹은 net-setup을 통하여 네트워크설정을 한다.

0.3.1.ifconfig 이용
아래는 VMware를 이용할 경우의 네트워크 설정이다.

# ifconfig eth0 192.168.0.180 netmask 255.255.255.0 broadcast 192.168.0.255
# route add default gw 192.168.0.1
# echo nameserver 192.168.0.1 > /etc/resolv.conf

실제 머신을 이용할 경우에는 자신의 환경에 맞는 네트워크 설정을 하면 된다.

0.3.2.net-setup 이용

# net-setup eth0
아래는 net-setup eth0를 실행시켰을 때 설정해야할 값입니다.

ip address : 네트웍카드에 할당하려는 IP주소 = > ex) 192.168.0.180
broadcast address : 네트웍안의 모든 호스트에 브로트캐스트할 IP 주소 = > ex) 192.168.0.255
network mask : 호스트와 네트웍을 확인하기 위한 주소 범위를 보여주는 IP 주소와 함께 사용되는 마스크 => ex) 255.255.255.0
gateway : 외부로 나가는 패킷을 전송하기 위한 IP 주소 => ex) 192.168.0.1

0.4.원격설치환경설정
젠투의 강점중의 하나가 원격설치를 지원한다는 것이다.
VMware에 설치할 경우 ctrl+shift를 이용해서 가상머신과 실제머신을 왔다갔다해야 하는데
원격설치를 이용하면 가상머신은 켜두기만 하고 실제머신에서 ssh를 이용하므로 ctrl+shift를 이용할 필요가 없다.
또한 설치하는 머신이 가상머신이라는 것만 다르고, 나머지는 실제머신과 똑같다.

0.4.1.root 암호설정

livecd # passwd

암호를 묻는 프롬프트가 나오면 원하는 암호를 입력한다.
필자는 그냥 vmware라고 입력했다.

0.4.2.ssh

livecd # /etc/init.d/sshd start

이제 ssh client를 실행시켜서 vmware로 접속하도록 하자.

0.5.파티션설정
젠투에서 사용할 하드디스크의 파티션을 설정한다.

0.5.1.파티션 계획

/boot: 100MB
: 1024MB
/ : 나머지 MB


livecd ~ # fdisk /dev/sda :: fdisk 모드로 진입하는 명령어이다.



아래는 fdisk mode에서 실행하는 명령어이다.

n > p > 1 > [enter] > +100MB
n > p > 2 > [enter] > +1024MB
n > p > 3 > [enter] > [enter]
t > 2 > 82
w


0.5.2.포맷

livecd ~ # mke2fs /dev/sda1 :: boot 파티션 ext2으로 포맷
livecd ~ # mkswap /dev/sda2 :: swap 파티션으로 포맷
livecd ~ # mke2fs -j /dev/sda3 :: root 파티션 ext3으로 포멧


0.5.3.마운트

livecd root # swapon /dev/sda2 :: swap으로 잡은 파티션을 사용하도록 설정한다.
livecd root # mount /dev/sda3 /mnt/gentoo :: root로 잡은 파티션을 마운트한다.
livecd root # mkdir /mnt/gentoo/boot :: boot 디렉토리를 만든다. /boot 마운트 포인트 생성하기 livecd root # mount /dev/sda1 /mnt/gentoo/boot :: boot 파티션을 마운트 한다. /boot 파티셜을 활성화한다.

이제 준비과정이 모두 끝났다. 원하는 설치방법에 따라 Stage 1, Stage2, Stage 3 부터 설치를 시작한다.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

젠투리눅스 설치하기 - Stage 1


1.stage1 시작
stage1의 목적은 bootstrap이다.
bootstrap은 stage2의 system을 설치하기 위한 컴파일 환경을 만드는 작업이다.

1.1.Stage 1 타르볼 다운로드 및 압축해제

livecd ~ # cd /mnt/gentoo
livecd gentoo # wget http://ftp.jaist.ac.jp/pub/Linux/Gentoo/releases/x86/2007.0/stages/stage1-x86-2007.0.tar.bz2
livecd gentoo # tar -xvjf stage1-x86-2007.0.tar.bz2 :: 기본적으로 필요한 파일들이 생성된다.

1.2.네임서버정보 복사

livecd gentoo # cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf


1.3.미러설정

livecd gentoo # mirrorselect -i -o >> /mnt/gentoo/etc/make.conf


1.4.컴파일 환경 설정

livecd gentoo # vi /mnt/gentoo/etc/make.conf


아래는 필자의 컴파일 환경 설정이다.

# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /etc/make.conf.example for a more detailed example.
CFLAGS="-O2 -mtune=i686 -pipe"
CXXFLAGS="${CFLAGS}"
# This should not be changed unless you know exactly what you are doing. You
# should probably be using a different stage, instead.
CHOST="i686-pc-linux-gnu"

GENTOO_MIRRORS="http://ftp.daum.net/gentoo/ http://ftp.jaist.ac.jp/pub/Linux/Gentoo/ ftp://ftp.jaist.ac.jp/pub/Linux/Gentoo/ http://ftp.iij.ad.jp/pub/linux/gentoo/ ftp://ftp.iij.ad.jp/pub/linux/gentoo/ http://ftp.kaist.ac.kr/pub/gentoo/ ftp://ftp.kaist.ac.kr/gentoo/ "
* 우리나라 미러는 심심하면 죽어 있으므로 가까운 나라 일본서버를 추가해놓았다.
* 다음미러가 요즘 괜찮다고 하네요.

1.5.proc 사용설정

livecd gentoo # mount -t proc proc /mnt/gentoo/proc

proc 의 용도는 아래와 같다.

따라서 proc를 마운트 한다는 것은 시스템상에서 생성되는 프로세스를 관리한다는 의미이며,
proc를 마운트하지 않고는 물리HDD로 이동할 수 없다.

1.6.물리HDD로 이동(chroot)

livecd gentoo # chroot /mnt/gentoo /bin/bash
livecd / # env-update
livecd / # source /etc/profile

1.7.portage tree 가져오기

livecd / # emerge --sync ::/usr/portage로 portage tree를 다운로드한다.

1.8.bootstrap

livecd / # cd /usr/portage/
livecd portage # scripts/bootstrap.sh

시스템에 맞게 gcc, gliblc 등의 C 컴파일러를 설치하는 과정이다.
이 과정을 bootstrap이라고 하며 이 과정을 마치게 되면 젠투를 시스템에 설치하기 위한 컴파일러 설치가 끝난 것이다.

VMware의 경우 스냅샷을 찍어두는 것이 좋다.
스냅샷이름: Stage1 완료

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

젠투리눅스 설치하기 - Stage 2


2.stage 2 시작
stage2부터 시작한다는 것은 bootstrap과정은 이미 완료된 것이다.
stage2의 목적은 기본적인 젠투시스템을 설치하는 것이다.

2.1.System 설치

livecd / # env-update :: bootstrap하면서 설치한 패키지를 적용한다.
livecd / # source /etc/profile :: bootstrap하면서 설치한 패키지를 적용한다.
livecd / # emerge --nodeps gdbm libperl perl :: perl과 perl에 의존적인 패키지를 설치하기 위해서 필요하다... 이거 안해주면 두고 두고 골치아파진다. 꼭 해주자.
livecd / # env-update :: 위에서 설치한 패키지를 적용한다.
livecd / # source /etc/profile :: 위에서 설치한 패키지를 적용한다.
livecd / # emerge -e system :: system을 설치한다.
livecd / # emerge -epv system :: system 파일이 정상적으로 설치가 되었는지 확인
livecd / # env-update :: system을 설치하면서 설치한 패키지를 적용한다.
livecd / # source /etc/profile :: system을 설치하면서 설치한 패키지를 적용한다.

아래의 유틸리티는 필수 유틸리티이며 설치되어 있는지 확인할 것

livecd / # emerge sys-apps/util-linux :: mount 등의 필수 유틸 설치
livecd / # emerge sys-apps/shadow :: passwd 설치
livecd / # emerge sys-process/psmisc :: kill
livecd / # emerge sys-apps/module-init-tools :: lsmod 설치
livecd / # emerge sys-process/procps :: ps 설치
livecd / # emerge man :: man 설치
livecd / # USE="-zlib" emerge sys-apps/pciutils :: sys-apps/hal 에러방지

2.2.컴퓨터 이름 및 도메인 설정

# echo HOSTNAME=\"{YourComputerName}\" > /etc/conf.d/hostname :: 이제 /etc/hostname 은 사용하지 않는다.
# /etc/hosts :: 아래는 내용을 추가한다.


127.0.0.1 {YourComputerName}.{YourDomain} {YourComputerName} localhost

2.3.네트워크설정

# nano /etc/conf.d/net

아래는 필자의 네트워크설정이다.

config_eth0=( "192.168.0.180 netmask 255.255.255.0 brd 192.168.0.255" )
routes_eth0=( "default gw 192.168.0.1" )


# rc-update add net.eth0 default :: 컴퓨터 부팅시 자동시작 되도록 설정한다.

VMware의 경우 스냅샷을 찍어두는 것이 좋다.
스냅샷이름: Stage2 완료

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

젠투리눅스 설치하기 - Stage 3


3.stage 3 시작
stage3의 목적은 커널 및 부트로더 설치이다.
stage3를 마치고 나면 기본적인 젠투시스템을 가지게 된다.

3.1.시스템 시간 설정

livecd portage # ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime


위의 명령어는 서울을 기준으로 시스템 시간을 설정하는 것이다.

3.2.파티션 정보 설정

livecd portage # nano -w /etc/fstab


아래는 필자의 파티션 정보 설정이며 자신의 시스템에 맞는 파티션 정보를 설정한다. 참고로 boot 파티션의 noauto는 꼭 빼준다.


proc /proc proc default 0 0
/dev/sda1 /boot ext2 noatime 1 2
/dev/sda3 / ext3 noatime 0 1
/dev/sda2 none swap sw 0 0
/dev/hdc /mnt/cdrom auto noauto,ro 0 0
shm /dev/shm tmpfs nodev,nosuid,noexec 0 0

3.3.kernel 설치
커널을 설치하는 방법에는 Gentoo전용으로 이미 컴파일된 커널을 설치하는 방법과 kernel.org에서 직접 받아다가 컴파일해서 사용하는 방법 2가지가 있다.

3.3.1.Gentoo 전용 Kernel 설치

livecd portage # emerge gentoo-sources :: 커널을 소스를 받는다. 준비과정을 끝내고 stage3 로 바로 왔을 경우 이 과정이 완료된 상태이다.
livecd portage # emerge genkernel
livecd portage # genkernel all


3.3.2.사용자 Kernel 설치

livecd portage # cd /usr/src
livecd src # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2
livecd src # tar -xvjf linux-2.6.23.tar.bz2
livecd src # ln -sf linux-2.6.23 linux
livecd src # cd linux
livecd linux # make mrproper :: .config에 설정된 내용을 삭제
livecd linux # make menuconfig :: .config 파일을 편집해주는 GUI, 설정값은 아래를 참고하라.
livecd linux # make clean
livecd linux # make bzImage :: 커널이미지를 만든다.
livecd linux # cp arch/i386/boot/bzImage /boot/bzImage-2.6.23 :: 커널이미지를 부트파티션으로 이동시킨다.
livecd linux # make modules :: 커널에서 사용할 모듈을 만든다.
livecd linux # make modules_install :: 커널에서 사용할 모듈을 설치한다.

아래는 VMware에 설치할 경우의 커널설정이다. (kernel 2.6.23 기준)

Enable loadable module support --->
--- Enable loadable support
[*] Module unloading
[*] Forced module unloading
[*] Automatic kernel module loading
Processor type and features --->
+ Processor family (Core 2/newer Xeon)
(2) Maximum number of CPUs (2-255)
Device Drivers --->
+ SCSI device support --->
--- SCSI device support
<*> SCSI disk support
<*> SCSI generic support
++ SCSI Transports
[*] SCSI low-level drivers --->
+++ <*> BusLogic SCSI support
+++ [*] Omit FlashPoint support
+ Fusion MPT device support --->
++ <*> Fusion MPT ScsiHost drivers for SPI
++ <*> Fusion MPT ScsiHost drivers for FC
++ <*> Fusion MPT ScsiHost drivers for SAS
++ (128) Maximum number of scatter gather entries (16 - 128)
++ <*> Fusion MPT misc device (ioctl) driver
++ [*] Fusion MPT logging facility
+ Network device support --->
++ Ethernet (10 or 100Mbit) --->
+++ [*] EISA, VLB, PCI and on board controllers
+++ <*> AMD PCnet32 PCI support
+ Sound --->
++ Advanced Linux Sound Architecture --->
+++ <*> Advanced Linux sound Architecture
+++ <*> OSS Mixer API
+++ <*> OSS PCM (digital audio) API
++++ PCI devices --->
+++++ <*> (Creative) Ensoniq AudioPCI 1371/1373
File systems --->
+ DOS/FAT/NT Filesystems --->
++ (949) Default codepage for FAT
++ (EUC-KR) Default iocharset for FAT
++ <*> NTFS file system support
++ [*] NTFS debugging support
++ [*] NTFS write support
+ Native Language Support --->
++ (utf8) Default NLS Option
++ <*> Codepage 437 (United States, Canada)
++ <*> Korean charset (CP949, EUC-KR)
++ <*> NLS ISO 8859-1 (Latin 1; Western European Languages)
++ <*> NLS UTF8

3.3.3.Kernel Panic
커널패닉의 원인은 딱 3가지다.
1. 잘못된 커널 설정으로 커널컴파일
2. 부트로더가 설정파일
3. /etc/fstab

아래는 대표적인 커널패닉의 예이다.
Kernel Panic 1

메시지
VFS: Unable to mount root fs via NFS, trying floppy
VFS: Insert root floppy and press ENTER
원인
grub/grub.conf 설정이 잘못되어 있다. 특히 root=
해결책
grub/grub.conf 를 정확하게 설정한다.

Kernel Panic 2

메시지
Kernel panic - not syscing: VFS : Unable to mount root fs on unknown-block(0,0)
원인
리눅스가 부팅시SCSI 방식 의 하드 디스크를 마운트하지 못하는 것이다.
해결책
SCSI 방식의 하드 디스크상에서 부팅 할 수 있도록 커널 컴파일 환경을 설정한다.


3.4.필수 패키지 설치

3.4.1.SSH Daemon 설치

livecd linux #emerge openssh
livecd linux #rc-update add sshd default

3.4.2.Log Daemon 설치

livecd linux #emerge app-admin/syslog-ng
livecd linux #rc-update add syslog-ng default


3.4.3.Cron Daemon 설치

livecd linux #emerge vixie-cron
livecd linux #rc-update add vixie-cron default

vixie-cron, fcron, dcron 중의 하나를 설치할 수 있다.

3.4.4.reiserfsprogs 설치

livecd linux #emerge reiserfsprogs

3.4.5.Hotplug 설치

livecd linux # emerge hotplug
livecd linux # rc-update add hotplug default

3.4.6.vim 설치

livecd linux # emerge vim :: vi 에디터 설치

에러 메시지

Can't open perl script "/usr/lib/perl5/5.8.8/ExtUtils/xsubpp"
해결책
livecd linux # USE="-perl -libperl" emerge vim

3.5.사용자 설정

3.5.1.root 패스워드 설정

#passwd


3.5.2.일반 사용자 추가

# adduser {MyUser} -m -d /home/{MyUser} -G users,wheel,audio -s /bin/bash
# passwd {MyUser}

3.6.Bootloader 설치

3.7.1.lilo 설치

3.7.2.grub설치

# emerge grub
# grub :: grub모드로 진입
grub> root (hd0,0) :: boot 파티션 설정하기 , hd0 = 0번째 하드디스크, 0 = 첫번째 파티션
grub> setup (hd0) :: MBR이 올라갈 곳을 지정한다.
grub> quit



# nano /boot/grub/grub.conf

아래와 같이 편집

default 0
timeout 30
#background image
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title=Gentoo Linux (2.6.22)
root (hd0,0)
kernel /bzImage-2.6.22 root=/dev/sda3

VMware의 경우 스냅샷을 찍어두는 것이 좋다.
스냅샷이름: Stage3 완료

3.8.재부팅

# etc-update
# exit :: chroot 빠져나오기
livecd gentoo # cd /
livecd / # umount /mnt/gentoo/boot
livecd / # umount /mnt/gentoo/proc
livecd / # umount /mnt/gentoo
livecd / # reboot

이제 여러분은 해야할 일이 아직 많이 남은 뼈대만 있는 젠투 시스템(bare bone)을 가지게 되었다.
이제 부터는 자신에게 필요한 어플리케이션을 스스로 찾아서 설치해보기 바란다.
당신에게 man과 emerge의 가호가 함께 하기를...

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

젠투리눅스 설치하기 - X Window 설치

Change History

2007.11.14
기본로케일을 eucKR로 했더니 요즘 대세가 UTF-8이라고 하시는 분이 있어서 변경했습니다.^^
2008.01.03
emerge gnome하면 잡다한 것이 너무 많이 설치되어서 emerge gnome-light으로 변경했습니다.

X Server 설치

{YourServerName} ~ # emerge xorg-x11 :: X-Server 설치
{YourServerName} ~ # env-update :: Update the system variables
{YourServerName} ~ # source /etc/profile
{YourServerName} ~ # Xorg -configure :: 자동으로 하드웨어 설정을 검색하고 root 홈 디렉토리에 xorg.conf.new 파일을 생성, 화면이 검어지면서 아무것도 안됨
{YourServerName} ~ # X -config /root/xorg.conf.new :: Xorg -configure가 자동으로 잡아준 설정을 테스트
X -config /root/xorg.conf.new를 실행하면 바둑판 무늬 배경에 마우스 커서만 보이는데 마우스가 잘 동작하는지 화면 해상도는 제대로 잡혔는지 확인하고 제대로 되었다 싶으시면 설정파일을 기본 위치로 복사해 준다. 원하는 설정이 제대로 나오지 않는다면 설정파일(/root/xorg.conf.new)을 직접 수정하거나 xorgcfg 혹은 xorgconfig 명령으로 수동설정해준다.
아래의 화면이 X -config /root/xorg.conf.new 를 실행했을때 나타나는 화면이다.




{YourServerName} ~ # mv /root/xorg.conf.new /etc/X11/xorg.conf :: X-Server 설정파일을 원래 위치로 이동
{YourServerName} ~ # startx :: X-Server 시작

아래의 화면이 startx했을때의 화면이다.



@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

/bin, /usr/bin 과 /sbin, /usr/sbin의 차이

/bin, /usr/bin, /sbin, /usr/sbin 은 모두 명령어가 저장되는 디렉토리 입니다.

이 디렉토리에 차이가 있으니 그것은 아래의 표와 같습니다.

디렉토리 용도 사용권한
/bin 기본적인 명령어 일반 사용자
/sbin 시스템 관리를 위한 명령어 슈퍼유저(root)
/usr/bin /bin에 있는 명령을 제외한 기본적인 명령어
일반 사용자

/usr/sbin /sbin에 있는 명령을 제외한 시스템 관리를 위한 명령어 슈퍼유저(root)

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

젠투에서 중요한 설정파일들

/etc/make.conf
- 패키지를 다운받을 저장소 설정
- 패키지를 컴파일할 때 줄 옵션

/etc/rc.conf
- x server를 구동할 때 사용할 데스크탑환경 지정

/etc/resolv.conf
- 네임서버

/etc/env.d/02useretc
- 시스템이 처음 구동되거나 env-update 수행시 시스템 변수에 추가할 목록 지정

/etc/locales.gen
- 지역설정

/etc/conf.d/net
- 네트워크 카드 설정

/etc/fstab
- 부팅할 때 마운트할 장치 설정

/etc/X11/xorg.conf
- x 서버를 구동할 때 사용할 장치와 드라이버 설정

/usr/src/linux/.config
- 커널 설정

/boot/grub/grub.conf
- Grub 설정

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

소스설치과정

configure

Makefile이 만들어집니다.

Makefile은 컴파일 옵션이 저장된 파일입니다.

make

소스코드를 실제로 컴파일한 후 binary 파일을 생성합니다.

make install

생성된 binary 파일을 지정된 디렉토리로 이동시켜 줍니다.

보통 "/usr/local/프로그램이름" 이나 "/usr/local/bin" 에 위치하며 --prefix 옵션으로 변경가능 합니다.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@



젠투리눅스 설치 방법 젠투리눅스
2004/06/16 23:52

http://blog.naver.com/joldan23/140003340217
이 포스트를 보낸곳 ()


(..적수네동네에 올린글인데 여기 다시 올립니다..)
저역시 아는건 별로 없지만 다른분들께 조금이라도 도움이 되고자 올립니다.

1. 일단 설치 문제인데 stage 1,2,3중에 하나만 설치 하시는 겁니다.
많은분들이 새개 다 설치하는거냐고 물으시는데 하나만 설치 하는것
입니다.3번을 설치하는게 가장 빠르고 편합니다. 물론 인스톨 문서에는
i686(펜티엄2,펜티엄프로)이상일 경우에만 2,3번 설치가 가능 하다고 되어
있습니다.
1번으로 제가 펜티엄 MMX233, 램 64메가인 시스템에서 설치 했는데,
1번 설치과정의 가장 중요한 부분인 #scripts/bootstrap.sh 이것이
한 6-7시간 정도 걸렸습니다.(물론 나중에 kde설치 할땐 펜3-800인데도
8시간 걸립니다..-_+..)
2번으로 설치하시면 11.Progressing from stage1 to stage2 과정을 3번으로
설치하시면 이다음 과정인 12.Progressing from stage2 to stage3 이것도
생략 하시면 됩니다.

2. 처음 설치할때 랜카드 잡는게 나오는데 이건 머 별문제 되는게 없죠..^^
ifconfig -a하셔서 잡히셨나 확인하시고요..

3. 이부분
# mkdir /mnt/gentoo
# mount /dev/hda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/hda1 /mnt/gentoo/boot

에서 순서대로 안하시면 마운트 에러납니다.^^(..머 다이시겠지만..^^..)

4. tar -xvjpf /mnt/cdrom/stage?-*.tbz2
여기서 1,2,3중에 하나 선택하시고요 이거 하시기 전에 #cd /mnt/gentoo 꼭
하셔야 합니다. 이거 안하시면 압축 풀리면서 에러 마구마구 뜨고 질답란에
올라온 대부분의 압축에러가 마운트가 제대로 안됬거나 위의 저 명령을
안처서 입니다. (처음에 램 디스크로 부팅하기 때문에..
하드 디스크로 옮겨야 압축을 풀겠죠..^^..)

5.chroot /mnt/gentoo /bin/bash
이거후 illegal ~~ 이런 에러 나오는것은 stage1,2,3압축을 다 풀었을 경우에
이런 에러가 나옵니다.(물론 다른 상황일수도 있겠지만요..^^..)

6. source /etc/profile
이거 하신다음엔 붉은색의 프롬프트가 나와야 합니다.
본격적으로 Gentoo Linux에 들어 오신겁니다.
그전엔 램디스크 상황입니다.. 여기서 새로운거 안뜨면 인스톨문서 잘
살펴보시면거 다시 한번 차근차근..^^..

7.# emerge rsync
이거했는데 Connection fail 나오면 (ifconfig -a 가 정상적으로나올경우..)
# cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
이 명령이 제대로 수행이 안되서 입니다.
exit 하셔서 (exit하시면 다시 램디스크 상황으로 갑니다..)
저거 정확하게 하시고 다시 #source /etc/profile
하세요..^^

참고로 이것은 rsync는 ports시스템의 디렉토리 구조를 받습니다.
즉, 패키지 리스트를 받는다고 생각 하시면 되죠..^^
나중에 심심 하면 한번씩 실행 시켜 주시면 새로 나온 패키지 있으면 업데
이트 됩니다.

8.# export CONFIG_PROTECT=""
이거 안하시면 나중에 emerge 하다보면 무슨 etc파일 두개를 업데이트 시켜
주어야 한다고 나올겁니다. 새로운 패키지 나왔을때 그전 패키지 처리
하는것에 대해 묻는건데 나중에 다시 설정 하시 겠지만 저렇게 하시면
그냥 덮어 씌운다는 것입니다.(port시스템에서요..)

9. 자..이젠 커널 컴파일 입니다.
커널 컴파일 옵션은 머 나머진 http://krenel.pe.kr 참고하시고요
(..실은 저도 usb쪽이 옵션이 제대로 안들어 갔는지..-_+..마우스가 안되
네요..)
처음옵션이 무슨 아직 개발중인 옵션 사용할것인가 묻는것이죠..?
이거 꼭 하시고요 File System 가셔서
[*]/dev filesystem support 랑 그 밑에 속하는거 모두 체크 하세요..
devfs를 사용하기 위해서입니다.
그러니 이렇겐 꼭 체크 하세요..

Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers

File systems --->
[*] /dev file system support (EXPERIMENTAL)
[*] Automatically mount at boot
[*] Debug devfs

체크 안하셔도 Gentoo Linux 부팅 잘되고 적덩하게 돌아 가지만
부팅 할때 마다
15초 멈춘다음에 Gentoo Linux는 devfs를 사용 하는 시스템이라며 커널 다시
컴파일 하라는 압력을 계속 넣습니다.
(Gentoo Linux는 진보적인 시스템을 많이 도입하고 있죠..^^
ports시스템이라던지 rc-update시스템, 그리고 devfs시스템 등등..)
꼭 체크 하세요..

10.make dep && make clean bzImage modules modules_install
이거 하시고 #depmod -a 2.4.19-r1
해주셔야 합니다.
이거 안하시면 부팅시에
Can't find modprobe
Char-major..~~~

이런 에러 만나실겁니다.(물론 저 명령은 천천히 하셔도 됩니다.)

11.# emerge app-admin/metalog
# rc-update add metalog default
로긴 플그램 셋중에 하나 하시면 됩니다.
rc-update도 Gentoo 만의 독특한 시스템인데 런레벨에 따른 실행
플그램 관리 해주는것입니다. 다른데서는 chkconfig 란것을 쓰죠.
실제로 써보시면 아시겠지만 상당히 편리합니다.
(start만 설정해 주시면 kill은 자동으로 한답니다..^^..)
rc-update add(del) 플그램 runlevel(아니면 runlevel이름..)
이런 형식입니다.
GentooLinux는 rc.1, rc.2 이런형식이 아니라
/etc/runlevel아래 default/ single/ nonetwork/
이런 디렉토리가 있는데 저게 rc.1, rc.2 같은겁니다..^^
/etc/inittab 에 보시면
런레벨 3같은 경우엔 rc default 런레벨 2는 rc nonetwork 로 되어 있습니다.
실제로보시면 아시겠지만 정말 깔끔하고 쓰기 편합니다.
rc-update add(del) 만알면 되거든요..^^


(xfs나 lvm안쓰시면 인스톨 문서 15번 과정 통과..)
12. # nano -w /etc/modules.autoload
이것도 역시 Gentoo 만의 시스템이죠..^^자동 모듈로딩..
..편합니다..역시 Gentoo Linux는 정말 빠르고 정말 편하게 잘만들었습니다..
(..
..감격..T_T..)..
저기다가 간단하게 모듈명만 적으면 Ok입니다.
정말 편합니다..^^
랜카드나 사운드 카드 같은거 모듈로 컴파일 하셧다면 저기다가 올려주시
고요, 내장 시키셧다면 그냥 넘어가셔도 됩니다.^^
(..다른거 필요하신거 계시면 올리세요..^^..)

13. 이제 문제는 grub인데 저도 이거 실패 했습니다.(결국 lilo사용..)
grub실행 시키셔여 이렇게 하시고요
grub> root (hd0,0)
grub> setup (hd0)
grub> quit

여기서 root는 /boot 다비이스 입니다.
/boot 가 /dev/hda7 이시면(하드 하나이고..)
root (hd0,6)겠죠

그다음이 nano -w /boot/grub/menu.lst 이거죠..^^

default 0
timeout 30
splashimage=(hd0,0)/grub/splash.xpm.gz <--그냥 경로명

title=My example Gentoo Linux
root (hd0,0) <---- /boot 디바이스 입니다.
kernel /boot/bzImage root=/dev/hda3 <------- / 디바이스

# Below needed only for people who dual-boot
title=Windows NT Workstation
root (hd0,5)
chainloader +1

설정 하실때 잘안되시면 grub실행 시키셔셔 TAB치시면서 하시며 자동
완성시는 됩니다.
문제는..-_+제 노트북에서 menu.lst를 찾지를 못합니다.
configfile실행시켜 TAB누르며 자동 완성 시키면서 해도 안되더군요..T_T
Gentoo Forum에 가니까 저와 비슷한 분들이 몇분 계시더라구요..
..흐음 그래서 결국 lilo로..T_T..

일단 이러면 적어도 MBR에 설치는 될 겁니다.
만약에 저처럼 메뉴 찾지 못하시면
root (hd0,0) <---- /boot 디바이스 입니다.
kernel /boot/bzImage root=/dev/hda3 <------- / 디바이스
이렇게 적어주시고 boot누르시면 부팅 될겁니다.
그런다음에 바로 #cd /usr/portage/sys-app하셔서
#emerge lilo 하셔서..^^lilo설치하세요..^^


14. # nano -w /etc/conf.d/net
# rc-update add net.eth0 default

여기서 두루넷 하나로 통신 이런 케이블류 이용하시는 분들은
그 DHCP섹션에서
iface_eth0="dhcp"
이것만 앞에 #지워 주시고 위에 샘플로 나와 있던(3번째 줄인가..)
그건 앞에 #붙여 주세요..
(..한국통신 설정법은 다른분께서 쓰신 글 참조 하세요..이 게시판
에 있습니다..^^..)


자 이러면 거의다 끝난듯 싶네요..
이거 말고 다른 문제점은 예를들어
부팅시에
Kernel Panic : VFS~~~~
이런것은 커넘 컴파일 에러나(특히 File Systemd에서 EXT3사용하시는데
ext3옵션을 안주셧거나 이런거..) /etc/fstab를 잘못 설정 하셔서 입니다.
/dev/hda1 /boot ext2 noauto,noatime 1 2
/dev/hda3 / ext3 noatime 0 1
/dev/hda2 none swap sw 0 0
/dev/cdroms/cdrom0 /mnt/cdrom iso9660 noauto,ro 0 0
proc /proc proc defaults 0 0

그 샘플로 되어있는 파티션 보고 설정한 겁니다..^^
어떤분들은 여기고 hd0,7 이렇게..-_+ 하셔서..

이거 외에 다른 문제는 Gentoo Linux문제기 보단..^^그냥 일반적인 리눅스
문제일듯..^^..(정말 많이 삽질했죠..^^...실은 컴두대에 이것저것
다해보며 깔았답니다..)..

여담이지만 kde설치할때 시간정말 오래 걸립니다..^^
8시간 제 노트북이 p3-800,256램인데..정확하게 8시간 42분 걸렸습니다..-_+
인스톨 문서에는 낮잠자라는데 낮잠가지고 안됩니다..-_+..
ports시스템이 약간 시간이 오래 걸리는게 문제지만..
(..머 어차피 다운로드+커널컴파일 시간..인데 다운로드 속도가약간 느리죠..
..^^..한 50kb정도..^^..가끔 200도 나오더군요..^^.)
rpm패키지를 주로 사용하시는 분이라면 조금 오래 걸리죠..^^
하지만 정말 편합니다..^^
다운 로드 사이트 뒤질 필요도 없고 이름만 쓰면 자동으로 최신버전으로
설치해주고..정말 좋습니다.
암튼 Gentoo Linux써보시면 아시겠지만 정말 진보된 리눅스 라는것이라는
것을 느낄것십니다. 저도 머 오래 되진 않았지만..정말 맘메 듭니다.
(..단점은 역시..-_+..설치 어려움과..한글 문제..
..저도 현재 ami와 hanterm에서 방황하고 있습니다..
..완벽하게 해결되면 이겄도 올리겠습니다..
..그리고 Gentoo Linux모임 같은거 만들고 싶은데..누구 만드실분 없는지..^^
..개인적으로 Gentoo Linux를 서버로 해서 돌리고 싶지만 여건이 안되서
요..^^
Gentoo Linux + ZOPE 하면 파이썬 리눅스 웹서버 -_+....)..

궁금하신거 있으시면 opensource at orgio.net로 연락주세요..^^
[출처] 젠투리눅스 설치 방법|작성자 이경민
http://blog.naver.com/joldan23?Redirect=Log&logNo=140003340217

22

Gentoo Linux 설치문서
Gentoo Version : 2004.0Hardware 사양 1. CPU : Intel Pentium 4 2.4C 2. RAM : 삼성 PC3200 256MB X 2 3. MainBoard : Gigabyte 8IPE1000 PRO 4. Graphic Card : ATi Radeon 9600 PRO 유니텍 5. SoundCard : Onboard 6. LanCard : OnboardNetwork : 한국통신 VDSL Premium
설치시 참고한 문서1. 지나가던 곰님의 Gentoo Linux 설치문서(
http://www.gentoo.or.kr/wiki/moin.cgi/Install_25by_25neoesraph)2. mizikn님의 Gentoo Linux 설치문서(http://wiki.kldp.org/wiki.php/GentooInstall)3. Gentoo 1.4 설치문서 번역(http://www.gentoo.or.kr/wiki/moin.cgi/1_2e4_bc_b3_c4_a1_b9_ae_bc_ad_b9_f8_bf_aa)4. Gentoo 1.2 설치문서 번역(http://www.gentoo.or.kr/docs/build-ko.html)5. Gnome Install Guide(http://www.gentoo.or.kr/wiki/moin.cgi/GnomeInstallGuide)
\ Gentoo CD 받기1. 2004.1(2004년 6월 8일 현재 최신버젼)
http://ftp.gentoo.or.kr/releases/x86/2004.1/livecd/install-x86-minimal-2004.1.iso (87M)http://ftp.gentoo.or.kr/releases/x86/2004.1/livecd/install-x86-universal-2004.1.iso (674M)
2. 2004.0
http://ftp.gentoo.or.kr/releases/x86/2004.0/livecd/universal/install-x86-minimal-2004.0.iso (87M) http://ftp.gentoo.or.kr/releases/x86/2004.0/livecd/universal/install-x86-universal-2004.0.iso (674M)
※저는 2004.0 미니시디를 받았습니다. 2004.1로 설치를 하려고 했으나 2004.1시디로는제 컴퓨터에서 네트워크가 안잡혀서 어쩔수 없이 2004.0 미니시디를 받았습니다. Stage1으로 설치하려고 하기 때문에 미니시디를 받은것입니다.
시디이미지를 받았으면 공시디에 굽습니다. 구운다음 시디로 부팅을 합니다.
\ Gentoo 설치시디를 집어넣고 부팅하면
boot:
라는 화면이 나타납니다.그냥 엔터를 눌러줍니다.부팅이 끝나면
livecd root#
이 화면이 나타나게 될것입니다.이제부터 Gentoo Linux의 설치 시작입니다.
1. 네트워크 설정
젠투리눅스는 emerge를 사용해서 패키지대부분을 웹에서 받아서 설치를 하게 됩니다.우선 네트워크를 잡아줍니다.
linvecd root#net-setup eth0
라고 치면 화면이 바뀌면서
0 USE DHCP to auto-detcet my network settings1 Specify an IP address manually
선택하는 화면이 나올 것입니다.저는 VDSL사용자이기 때문에 0번을 선택하였습니다.
네트워크가 제대로 잡혔는지 알아보려면
linvecd root#ifconfig
을 해줍니다.그러면 화면에
eth0 ~~~~~~~~~~~~~~~~~~~~(내용생략 ㅡ.ㅡ;; 너무 많아서)
lo ~~~~~~~~~~~~~~~~~~~~(내용생략 ㅡ.ㅡ;; 이것도 역시 너무 많아서)
하고 나올것입니다.(제가 지금 이문서를 윈도우에서 작성하다보니 정확히 알아볼 방도가 없기에 대충 적어놓겠습니다. 나중에 자세하게 채워넣도록 하겠습니다.)
좀더 확실하게 알아보는 방법은
livecd root#ping -c 3
www.google.com
해서
PING
www.google.akadns.net (216.239.53.99) 56(84) byte of data64byte from 216.239.53.99 : icmp_seq=1 ttl=243 times=125ms64byte from 216.239.53.99 : icmp_seq=2 ttl=243 times=123ms64byte from 216.239.53.99 : icmp_seq=2 ttl=243 times=123ms
---www.google.akadns.net ping statistics ---3 packets transmitted, 3 recived, 0% packets loss, time 2018 msrtt min/avg/max/mdev = 127.741/125.195/125.714/0.399 ms
이런 결과가 나오게되면 네트워크가 제대로 잡힌겁니다.
2. 파티션 설정
젠투리눅스는 레드햇리눅스에서 제공하는 그래픽파티션툴인 diskdruid가 아닌 순수텍스트파티션툴인 fdisk를 사용합니다.리눅스를 처음 설치하시는분은 파티션에 관해 kldp같은곳에서 알아보시고 하시는게실수를 방지할수 있을것입니다.파티션 설정을 위해 fdisk를 실행합니다.
livecd root#/sbin/fdisk /dev/hda
를 입력하게 되면 다음과 같은 상태가 됩니다.
Command (m for help) :
이상태에서 필요한 명령어를 입력해서 자신의 하드에 젠투리눅스를 설치할 파티션을 생성해 주는 것입니다.
fdisk에서 주로 사용하는 명령어를 살펴보겠습니다.(주로라지만 이것밖에는 사용할일이 없을 것입니다. 제경험상 다른 명령어는 사용한적이 없기 때문에 ^^:;;)
p - HDD의 파티션 상황을 보여줌n - 새로운 파티션을 생성함d - 기존의 파티션을 삭제함t - 파티션의 system id 설정w - 저장하고 fdisk 끝내기q - 저장하지 않고 fdisk 끝내기
우선 p를 입력해서 파티션 상황을 살펴봅니다.
DeviceBootStartEndBlockIdSystem
/dev/hda1*17305863693+bW95 FAT32Windows Me 파티션/dev/hda2
73114591111338484+fW95 Ext'd(LBA)Windows 확장파티션/dev/hda5
731268815727633+7HPFS/NTFSWindows XP 파티션/dev/hda6
268933415245191bW95 FAT32Me 데이터 파티션
제 HDD파티션 상황입니다.120기가중에서 6기가를 Windows Me, 15기가를 Windows XP, 5기가를 Windows Me 데이터 파티션으로 할당해줬습니다.나머지 파티션에다가 젠투를 설치하고나서 남은 파티션을 XP 데이터 파티션으로 만들었습니다.
젠투설치를 위한 파티션을 생성합니다.먼저 Swap파티션
Command (m for help) : n
Command action l logical (5 or over) p primary partition (1-4)
여기서 l 을 선택해줍니다.
First Cylinder (3342-14591, default 3342):
나오면 디폴트값으로 적용 그냥 엔터를 누르시면 됩니다.
Last Cylinder or +sizeM or +sizeK (3342-14591, default 14591):
여기서는 자신이 생성하고자 하는 용량만큼 적어줍니다.저는 스왑파티션을 1기가로 잡았기에
Last Cylinder or +sizeM or +sizeK (3342-14591, default 14591):+1024M라고 입력했습니다.M가로 입력하는게 생성하는데 편합니다.
잘 생성이 되었나 p명령어를 이용하여 확인 해봅니다.
Command (m for help) : p
DeviceBootStartEndBlockIdSystem
/dev/hda1*17305863693+bW95 FAT32Windows Me 파티션/dev/hda2
73114591111338484+fW95 Ext'd(LBA)Windows 확장파티션/dev/hda5
731268815727633+7HPFS/NTFSWindows XP 파티션/dev/hda6
268933415245191bW95 FAT32Me 데이터 파티션/dev/hda7
33423466100403183LinuxLinux swap파티션
스왑파티션이 생성 되었습니다.다음은 boot파티션과 /(root)파티션을 위의 방법과 같은 방법으로 생성합니다.저는 boot파티션은 100M, /(root)파티션은 15GB로 잡았습니다.원래 boot파티션을 256M로 잡을려고 생각했었는데 100M만으로도 충분하다는 지나가는곰님의 문서를 보고 100M가로 잡았습니다.
파티션을 다 생성했으면 이제 스왑파티션의 ID를 변경해주어야합니다.제가 설치문서를 보면서 분면히 설치문서에는 스왑파티션이 82로 나오는데 저는 아무리 생성을 해도 83으로 나오길래 뭘 잘못했길래 설치문서랑 다르지하고 생각하다가 fdisk명령어를 살펴보다 우연히 t 명령어를 알게되었습니다.
Command (m for help) : t
Partition number (1-7) : 7 (자신의 파티션중 스왑파티션으로 쓸 파티션의 번호입력) Hex code (type L to list codes) : 82 (Swap ID)
해주고나서 p명령어를 이용하여 파티션 상황을 보면
DeviceBootStartEndBlockIdSystem
/dev/hda1*17305863693+bW95 FAT32Windows Me 파티션/dev/hda2
73114591111338484+fW95 Ext'd(LBA)Windows 확장파티션/dev/hda5
731268815727633+7HPFS/NTFSWindows XP 파티션/dev/hda6
268933415245191bW95 FAT32Me 데이터 파티션/dev/hda7
33423466100403182LinuxLinux swap파티션
/dev/hda7의 ID가 83에서 82로 변경되어 있을 것입니다.
제 리눅스 파티션은/dev/hda7 (swap) 1024M/dev/hda8 (boot) 100M/dev/hda9 (root) 15000M입니다.
이제 파티션을 포맷해줍니다.저는 boot파티션은 ext3로, root파티션은 xfs로 생성했습니다.
livecd root#mke2fs -j /dev/hda8livecd root#mkfs.xfs -f /dev/hda9livecd root#mkswap /dev/hda7livecd root#swapon /dev/hda7
※파일 시스템의 종류(지나가는 곰님의 설치문서 참고)ext2/ext3 : 전통적인 리눅스 파일시스템으로 많이 사용된다. ext3는 ext2에서 저널링이 포함되었다. 이 파티션 타입은 /boot 같은 곳에나 쓰시고 다른데에는 쓰시지 않는게 좋습니다. 실제로 Disk I/O를 모니터링 해보면 하는 일 없이 상대적으로 아주 많은 I/O를 소모하는 파일시스템입니다. ext3는 최악입니다. 저널링이 필요하시다면 XFS 혹은 Reiserfs를 쓰시기 바랍니다.
XFS : 메타데이터 저널링 지원, 요즘에 많이 쓴다더군요. 실리콘 그래픽스사에서 공개한 파일 시스템인데 현재 리눅스에서 쓸 수 있는 파일 시스템 중에서 가장 스케일이 큰 파일시스템입니다. "Think Big"이 XFS의 개발 모토이며 상대적으로 다른 파일 시스템보다 시스템 부하가 약간 큽니다
ReiserFS : 트리기반구조를 한 파일스템 용량이 적고 , 큰 파일에 유리 특정 작업에서 매우 빠름 - 반대로 적어놓으셨군요. ReiserFS는 벤치마크를 해보시면 아시겠지만 작은 파일에 아주 강합니다. 약 4Kb 파일을 죽어라 만들고 다 지우는 스크립트를 돌려 보십시오. 다른 파일 시스템과는 비교가 안될만큼 빠릅니다. 하지만, 큰 파일은 역시 XFS입니다.
JFD : IBM에서 새로 출시한 파일 시스템 -몇몇분은 매우 안정적이다고 하시는군요. 매우 안정적이긴 하지만 IBM답게 아주 user-friendly하곤 담쌓은 파일시스템입니다. 벤치마크를 해봐도 XFS의 장점에 못미치고 ReiserFS의 아기자기한 맛은 온데 간데 없는 어정쩡한 파일시스템이 아닌가 하는 사견입니다
특성이 이렇다는군요그런데 다른 문서에서 보니 여기 설명된것과는 좀 상이하게 소개가 되어있어서 어떤 파일시스템을 선택할지 고민이 많이 되었었습니다.그래서 저같은 경우는 저 파일 시스템중에서 맘에 드는걸 골라서 적용했습니다.boot는 ext3, root는 xfs로 선택해서 사용중인데 아무 이상없이 잘 작동하고 있습니다.어떤 파일 시스템을 선택하실지는 전적으로 설치하고자 하시는 분 마음이시니깐요 ^^;;
3. 설치를 위한 파티션 마운트
설치를 위해서 HDD의 파티션으로 마운트를 합니다.
livecd root#mount /dev/hda9 /mnt/gentoolivecd root#mkdir /mnt/gentoo/bootlivecd root#mount /dev/hda8 /mnt/gentoo/bootlivecd root#cd /mnt/gentoolivecd getnoo#
4. Stage파일 받기
만일 라이브시디를 받지않고 600M짜리 이미지를 받으신분은 시디에서 stage파일을 복사해오면 됩니다.저는 미니시디를 받았기에 웹에서 다운받아야합니다.
livecd gentoo#wget
http://ftp.gentoo.or.kr/releases/x86/2004.0/stages/x86/stage1-x86-20040218.tar.bz2
입력해주시면 stage1파일을 다운받기 시작합니다.
stage파일의 압축을 풀어줍니다.
livecd gentoo#tar -xvjf stage1-x86-20040218.tar.bz2
하게 되면 압축이 풀어지게 됩니다.
※ 리눅스에서는 파일명이 길기 때문에 일일이 다 입력해주기보다는 Tab키를 이용해줍니다. Tab키는 파일이름이나 폴더명을 자동으로 완성해주기 때문에 유용하게 사용되니 알아두세요^^;;
stage파일을 풀어줬으니 proc를 사용할수 있도록 proc를 mount합니다.
livecd gentoo#mount -t proc proc /mnt/gentoo/proc
저는 왜 이걸 하는지 모릅니다. mizikn님의 문서에 하라고 되어있길래 한것이니 질문은 사양해주세요 ^^;;
5. Mirror설정
젠투는 대부분의 모든 패키지를 네트워크에서 받아 설치한다고 앞에서 언급했었죠.그 패키지를 받기위한 미러서버를 설정해주는것입니다.우리나라에도 젠투미러서버가 있는데 속도가 아주 좋습니다.한국 젠투미러만 설정해도 되지만 가끔씩 한국미러가 먹통이 되는 경우가 있더군요그래서 저는 한국미러랑 일본에 있는 미러를 설정해 줬습니다.
livecd gentoo#mirrorselect -i -o >> /mnt/gentoo/etc/make.conf
미러목록이 나오면 한국미러인
ftp.gentoo.or.kr (kor)를 선택해줍니다.안심이 안되신다면 일본미러도 몇 개 선택해줘도 됩니다.
만일 한국미러외에 다른 미러도 선택하셨다면 make.conf파일을 수정해줘서 속도빠른 한국미러가 제일 앞으로오도록 수정해줍니다.
livecd gentoo#nano /mnt/gentoo/etc/make.conf
GENTOO_MIRROR 항목에서 한국미러를 가장 앞으로 오게 고쳐주고 Ctrl+X키를 눌러 저장해주고 빠져나옵니다.
만일 미러서버를 선택하는게 안나온다면 네트워크 설정이 잘못된것이므로 다시 네트워크를 잡아줍니다.
livecd gentoo#net-setup eth0
이제 본격적인 설치를 위한 준비가 끝났습니다.
6. 설치시작1
이제 본격적으로 설치를 시작합니다.
livecd gentoo#cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
해서 resolv.conf파일을 HDD로 복사해줍니다.
livecd gentoo#chroot /mnt/gentoolivecd /#
이건 chroot로 해서 가상HDD에서 자신의 HDD로 들어온것입니다.(이건 제 추측으로 생각한건데 맞는지는 잘 모르겠군요)
livecd /#env-update
>>>>Regenerating /etc/ld.so.cache........
livecd /#source /etc/profilelivecd /#
7. 설치시작2-Portage받기
livecd /#emerge sync
저는 Portage를 받아오는 이과정에서 약 30여분이 걸렸습니다.
8. 시스템 최적화 설정
make.conf파일을 수정해서 최적화를 해줍니다.
livecd /#nano /etc/make.conf
CFLAGS="~~~~~~~~~~~~~~~~(내용생략)"
이부분을
CFLAGS="-03 -march=i686 -mcpu=pentium4 -fomit-frame-pointer -mmmx -msse2 -msse -pipe"
로 수정해줍니다.그리고 역시
CHOST="~~~~~~~(내용생략)“
이부분도
CHOST="i686-pc-linux-gnu"
로 수정해준다음 저장하고 빠져나옵니다.이 최적화 부분은 지나가는곰님의 문서에서 펜티엄4에 최적화된 설정이라 하기에 저렇게 설정을 해주었습니다.저 설정의 내용에 대해 좀더 알고 싶다면 지나가는 곰님의 설치문서를 참고하세요 ^^;;
9. BootStrap
이 bootstrap은 자신의 시스템에 맞게 gcc,gliblc등을 설치하는 과정이라고 합니다.앞에서 했던 emerge sync작업은 이 bootsrap과정을 위한 준비였다는군요
livecd /#cd /usr/portagelivecd portage/#scrips/bootstrap.sh
하면 설치가 시작됩니다.이 과정은 시간이 꽤 오래 걸립니다.지나가던 곰님과 mizikn님은 이과정에서 3~4시간정도 걸렸다고 합니다.저는 약 1시간 50분정도 걸리더군요젠투설치에서 가장중요한것은 컴퓨터 성능보다는 네트워크상태가 가장 큰 영향을 주는거 같더군요여러번 젠투설치를 했을때 가끔 한국미러가 죽어서 일본미러에서 받는데 그때는 거의 3시간에 가까이 걸리는걸 보니 확실한듯 합니다.
10. System설치
설치에 필요한 각종 툴을 자신의 환경에 알맞게 설치해주는 과정입니다.
livecd portage/#emerge system
이 과정역시 시간이 오래 걸린다고 합니다.무려 12시간걸리는 경우도 있다고 하더군요저같은 경우는 1시간정도 걸렸습니다.※ bootstrap과 system설치를 한꺼번에 하는것도 가능합니다.
livecd portage#scripts/bootstrap.sh ; emerge system
하면 bootstrap과 system설치를 한꺼번에 설치를 하게됩니다.저는 저렇게 하다가 system파일이 설치가 되었는지 확신을 할 수 있는 방법이 없어서 언제나 따로 설치를 해주었습니다.그러다가 어느분의 질문 답변에
livecd portage#emerge -pv system
Calculating system depencies......................done!
이란 메시지가 나오게 되면 system설치가 완료된것이라고 합니다.참고하세요 ^^;;
11. 시간설정
시스템의 시간을 설정해줍니다.
livecd portage#ln -sf /usr/share/zoneifo/Asia/Seoul /etc/localtime
12. fstab설정
livecd portage#nano /etc/fstab
에서 수정할 부분은
#
/dev/BOOT /boot ext2 noauto,noatime 1 1/dev/ROOT / xfs noauto,noatime/dev/SWAP none swap sw
이부분을 자신의 환경에 맞게 수정해 줍니다.
#
/dev/hda8 /boot ext2 noatime 1 1/dev/hda9 / xfs noatime/dev/hda7 none swap sw
저는 위와 같이 수정을 해주었습니다.저 밑에 있는 부분은 잘 아시는 분이 아닌 한 손대지 마시기를 손댔다가 무슨일 생기면 책임 못짐^^;;
13. Kernel설치
자 이제 리눅스의 핵심이라고 할수 있는 커널설치입니다.제가 이 문서를 작성하고 있는 현제 최신 커널버젼은 2.6.6입니다.
livecd portage#cd /usr/srclivecd src#emerge module-init-tools
이건 커널버젼이 2.6이상일때 설치해줍니다.설치안해주면 커널 설치때 에러메세지를 토하더군요 ^^;;이제 커널을 받습니다.
livecd src#wget
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
커널 압축을 풉니다.
livecd src#tar -xvjf linux-2.6.6.tar.bz2
압축이 다 풀리면 linux-2.6.6폴더가 생성됩니다.
livecd src#cd linux-2.6.6livecd linux-2.6.6#
우선 커널설치를 하기전에 커널소스를 편집해줍니다.커널 2.6버젼으로 와서부터는 키보드의 한/영키랑 한자키가 안먹는다는군요그렇기에 커널소스를 편집해서 한영키를 사용가능하게 수정해줍니다.한영키를 사용하기위해 수정해줘야할 소스파일은 2가지입니다.
linux-2.6.6/drivers/input/input.c에서
case EV_KEY: if (code > KEY_MAX !test_bit(code, dev->keybit) !!test_bit(code, dev->key) == value) return;
if (code > KEY_MAX !test_bit(code, dev->keybit) !!test_bit(code, dev->key) == value) return; if (value == 2)
break;

case EV_KEY: if (code > KEY_MAX !test_bit(code, dev->keybit) !!test_bit(code, dev->key) == value) return;
if (code != KEY_HANGUEL && code != KEY_HANJA)
{
if (code > KEY_MAX !test_bit(code, dev->keybit) !!test_bit(code, dev->key) == value) return;
} if (value == 2)
break;
로 수정을 해줍니다.
linux-2.6.6/drivers/input/keyboard/atkbd.c :
137번째 라인에
#define ATKBD_RET_HANGUEL 0xf1#define ATKBD_RET_HANJA 0xf2
이부분을
#define ATKBD_RET_HANGUEL 0xf2#define ATKBD_RET_HANJA 0xf1수정한다음 저장하고 빠져나옵니다.
livecd linux-2.6.6#make mrproperlivecd linux-2.6.6#make menuconfig
여기서 커널 옵션설정하는 화면으로 넘어가게 됩니다.
Linux Kernel v2.6.0-test11 Configuration
???????????????????????? Linux Kernel Configuration ? Arrow keys navigate the menu. selects submenus --->. ? Highlighted letters are hotkeys. Pressing includes, excludes, ? modularizes features. Press to exit, for Help. ? Legend: [*] built-in [ ] excluded module < > module capable +?????????????????????????????????????????????????????????????????????????????? ? ? Code maturity level options ---> ? ? General setup ---> ? ? Loadable module support ---> ? ? Processor type and features ---> ? ? Power management options (ACPI, APM) ---> ? ? Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> ? ? Executable file formats ---> ? ? Device Drivers ---> ? ? File systems ---> ? ? Profiling support ---> ? ? Kernel hacking ---> ? ?????????v(+) +????????????????????????????????????????????????????????????????????????????????