1、只开X server 。一片黑屏,鼠标可以动

X :1&

基础补充8:X window - leaf - ------坚持雅操------

 

2、开X client 。屏幕左上角有终端输入界面,但是没有窗口,不能移动

xterm -display :1&

基础补充8:X window - leaf - ------坚持雅操------

 

3、开窗口管理器,twm或者metacity 。有窗口,还可以移动

twm -display :1 -f /etc/X11/twm/system.twmrc &
或者
metacity -display :1&

基础补充8:X window - leaf - ------坚持雅操------

 

基础补充8:X window - leaf - ------坚持雅操------

 

4、Widget   图形库

包括gtk+ 和QT 。窗口的颜色,按钮,图案啥的都需要图形库的支持

5、Display Manager

提供登陆界面和 会话协议XDMCP

6、Desktop Manager

包括gnome、KDE等 。
是以上的集合,然后再加上自行开发的界面。

init5和startx的区别

init 5

基础补充8:X window - leaf - ------坚持雅操------

startx

 

基础补充8:X window - leaf - ------坚持雅操------

 

init 5 是启动prefdm,然后通过gdm启动X server。进gnome会话后还要开启Xsession登陆界面
startx 是启动xinit来启动X server,然后直接进gnome会话

0、安装编译环境。

主要是安装kernel-src ,kernel-devel ,gcc , glibc , ncurse 等。

1、下载nvidia驱动

http://www.nvidia.cn/object/unix-cn.html
我下载的是NVIDIA-Linux-x86-96.43.23-pkg1.run。已经加了x权限了。

2、进 init 3环境

nano /etc/inittab   

  id:5:initdefault:   把5改为3

3、安装nvidia驱动

sh NVIDIA-Linux-x86-96.43.23-pkg1.run
然后点配置xorg.conf文件。 或者运行 nvidia-xconfig 也可以

4、进init 5 环境

改 /etc/inittab

id:3:initdefault:   把3改为5

5、遇到的问题(问题才开始)

(EE) failed to initialize GLX Extension
1、看/var/log/Xorg.0.log ,模块的存放地址没有问题(/usr/X11R6/xorg/modules)
2、init 3,然后modprobe nvidia 能加载nvidia,startx正常。说明驱动安装没有问题。
3、感觉应该是图形启动之前模块还没加载,导致这个问题。

做法是在电脑开机加载模块的时候添加显卡模块。
cd /etc/sysconfig/modules/
nano nvidia.modules
加入 /sbin/modprobe nvidia 保存。

进度条的时候白屏死机
进/etc/X11/xorg.conf   设置成16位色

1、安装kernel源码

rpm -ivh  kernel-2.6.11-1.1369_FC4.src.rpm

2、做编译环境

cd /usr/src/redhat/SPECS
grep ifarch kernel-2.6.spec
rpmbuild -bp –target=i686 kernel-2.6.spec

cd ../BUILD/kernel-2.6.11
cp /boot/config-2.6.11-1.1369.fc4  .config

3、编译

make oldconfig
make menuconfig
make

4、安装模块

 安装ntfs模块
cp /usr/src/redhat/BUILD/kernel/linux/fs/ntfs/ntfs.ko /lib/modules/2.6/kernel/fs/ntfs/
depmod -a

该模块只提供读的功能,不支持写

设置3个变量HOSTNAME,HOSTTYPE,unamer

运行. /etc/sysconfig/network

挂载/proc,加载usb模块,加载usb设备,挂载/sys

运行. /etc/init.d/functions

检查SELinux状态

显示欢迎字幕:welcome to red hat …

设置控制台的日志级别

设置codline #ro root=LABEL=/ rhgb quiet

初始化硬件,

加载ide,scsi,network,audio等模块

加载 /etc/sysconfig/modules/ 下的模块 #空

加载 /etc/rc.modules 下设置的模块 #空 

———开始图形化启动界面———

挂载/dev/pts

配置内核参数

设置系统时钟

设置hostname

加载acpi模块

设置zfcp

设置RAID

LVM2初始化

需要的话卸载initrd

需要的话更新quota

以读写模式从新挂载/

清理SELinux

清理mtab

删除mtab的临时文件

把加载的文件系统写入到/etc/mtab下 / /proc /sys /dev/pts /proc/bus/usb

挂载其他文件系统如smbfs等

启动磁盘配额

检查是否有必要设置SElinux???  Check to see if a full relabel is needed

开始图形化启动界面

初始化随机数

需要的话从新配置电脑,

从新读取/etc/sysconfig/network,hostname,

删除/目录下的隐藏文件

删除/var/lock/* /var/run/* 下的文件

删除/var/lib/rpm/__db*

删除/var/gdm/.gdmfifo

从新设置pam权限

清理utmp/wtmp

清理/tmp

新建/tmp/.ICE-unix

启用交换分区

挂载/proc/sys/fs/binfmt_misc

运行/etc/rc.serial

需要的话加载ide-cd  ide-scsi模块

配置网络??? Boot time profiles. Yes, this should be somewhere else.

——-内核已可用,模块已加载完——

启动记录卸载/var/log/dmesg下

create the crash indicator flag to warn on crashes, offer fsck with timeout

结束rc.sysinit。

#!/bin/bash

#

# /etc/rc.d/rc.sysinit - run once at boot time

#

# Taken in part from Miquel van Smoorenburg’s bcheckrc.

#

HOSTNAME=`/bin/hostname`

HOSTTYPE=`uname -m`

unamer=`uname -r`

if [ -f /etc/sysconfig/network ]; then

    . /etc/sysconfig/network

fi

if [ -z “$HOSTNAME” -o “$HOSTNAME” = “(none)” ]; then

    HOSTNAME=localhost

fi

# Mount /proc and /sys (done here so volume labels can work with fsck)

mount -n -t proc /proc /proc

if [ ! -d /proc/bus/usb ]; then

modprobe usbcore >/dev/null 2>&1 && mount -n -t usbfs /proc/bus/usb /proc/bus/usb

else

mount -n -t usbfs /proc/bus/usb /proc/bus/usb

fi

mount -n -t sysfs /sys /sys >/dev/null 2>&1

. /etc/init.d/functions

# Check SELinux status

selinuxfs=`LC_ALL=C awk ‘/ selinuxfs / { print $2 }’ /proc/mounts`

SELINUX=

if [ -n “$selinuxfs” ] && [ “`cat /proc/self/attr/current`“ != “kernel” ]; then

if [ -r $selinuxfs/enforce ] ; then

SELINUX=`cat $selinuxfs/enforce`

else

# assume enforcing if you can’t read it

SELINUX=1

fi

fi

if [ -n “$SELINUX” -a -x /sbin/restorecon ] && LC_ALL=C fgrep -q “ /dev “ /proc/mounts ; then

/sbin/restorecon  -R /dev 2>/dev/null

fi

disable_selinux() {

echo “*** Warning – SELinux is active”

echo “*** Disabling security enforcement for system recovery.”

echo “*** Run ‘setenforce 1’ to reenable.”

echo “0” > $selinuxfs/enforce

}

relabel_selinux() {

    if [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client –ping ; then

chvt 1

    fi

    echo “

         *** Warning – SELinux relabel is required. ***

*** Disabling security enforcement.         ***

*** Relabeling could take a very long time, ***

*** depending on file system size.          ***

    echo “0” > $selinuxfs/enforce

    /sbin/fixfiles -f -F relabel > /dev/null 2>&1 

    rm -f  /.autorelabel 

    echo “*** Enabling security enforcement.         ***“

    echo $SELINUX > $selinuxfs/enforce

    if [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client –ping ; then

chvt 8

    fi

}

if [ “$HOSTTYPE” != “s390” -a “$HOSTTYPE” != “s390x” ]; then

  last=0

  for i in `LC_ALL=C grep ‘^[0-9].*respawn:/sbin/mingetty’ /etc/inittab | sed ‘s/^.* tty\([0-9][0-9]*\).*/\1/g’`; do

        > /dev/tty$i

        last=$i

  done

  if [ $last -gt 0 ]; then

       > /dev/tty$((last+1))

       > /dev/tty$((last+2))

  fi

fi

if [ “$CONSOLETYPE” = “vt” -a -x /sbin/setsysfont ]; then

   echo -n “Setting default font ($SYSFONT): “

   /sbin/setsysfont

   if [ $? -eq 0 ]; then

      success

   else

      failure

   fi

   echo ; echo

fi

# Print a text banner.

echo -en $”\t\tWelcome to “

if LC_ALL=C fgrep -q “Red Hat” /etc/redhat-release ; then 

 [ “$BOOTUP” = “color” ] && echo -en “\\033[0;31m”

 echo -en “Red Hat”

 [ “$BOOTUP” = “color” ] && echo -en “\\033[0;39m”

 PRODUCT=`sed “s/Red Hat \(.*\) release.*/\1/“ /etc/redhat-release`

 echo “ $PRODUCT”

elif LC_ALL=C fgrep -q “Fedora” /etc/redhat-release ; then 

 [ “$BOOTUP” = “color” ] && echo -en “\\033[0;31m”

 echo -en “Fedora”

 [ “$BOOTUP” = “color” ] && echo -en “\\033[0;39m”

 PRODUCT=`sed “s/Fedora \(.*\) release.*/\1/“ /etc/redhat-release`

 echo “ $PRODUCT”

else

 PRODUCT=`sed “s/ release.*//g” /etc/redhat-release`

 echo “$PRODUCT”

fi

if [ “$PROMPT” != “no” ]; then

 echo -en $”\t\tPress ‘I’ to enter interactive startup.”

 echo

fi

# Fix console loglevel

if [ -n “$LOGLEVEL” ]; then

/bin/dmesg -n $LOGLEVEL

fi

[ -x /sbin/start_udev ] && /sbin/start_udev

# Only read this once.

cmdline=$(cat /proc/cmdline)

# Initialize hardware

if [ -f /proc/sys/kernel/modprobe ]; then

   if ! strstr “$cmdline” nomodules && [ -f /proc/modules ] ; then

       sysctl -w kernel.modprobe=”/sbin/modprobe” >/dev/null 2>&1

       sysctl -w kernel.hotplug=”/sbin/udevsend” >/dev/null 2>&1

   else

       # We used to set this to NULL, but that causes ‘failed to exec’ messages”

       sysctl -w kernel.modprobe=”/bin/true” >/dev/null 2>&1

       sysctl -w kernel.hotplug=”/bin/true” >/dev/null 2>&1

   fi

fi

echo -n $”Initializing hardware… “

ide=””

scsi=””

network=””

audio=””

other=””

eval `kmodule -d | while read devtype mod ; do

case “$devtype” in

“IDE”)ide=”$ide $mod”

  echo “ide=\“$ide”\“;;

“SCSI”) scsi=”$scsi $mod”

  echo “scsi=\“$scsi”\“;;

“NETWORK”) network=”$network $mod”

  echo “network=\“$network”\“;;

“AUDIO”) audio=”$audio $mod”

  echo “audio=\“$audio”\“;;

*) other=”$other $mod”

  echo “other=\“$other”\“;;

esac

done`

load_module () {

LC_ALL=C fgrep -xq “$1” /etc/hotplug/blacklist 2>/dev/null || modprobe $1 >/dev/null 2>&1

}

# IDE

for module in $ide ; do

load_module $module

done

# SCSI

for module in `/sbin/modprobe -c | LC_ALL=C awk ‘/^alias[[:space:]]+scsi_hostadapter[0-9]*[[:space:]]/ { print $3 }’` $scsi; do

load_module $module

done

load_module floppy

echo -n $” storage”

# Network

pushd /etc/sysconfig/network-scripts >/dev/null 2>&1

interfaces=`ls ifcfg* | LC_ALL=C egrep -v ‘(ifcfg-lo|:|rpmsave|rpmorig|rpmnew)’ | \

            LC_ALL=C egrep -v ‘(~|\.bak)$’ | \

            LC_ALL=C egrep ‘ifcfg-[A-Za-z0-9\._-]+$’ | \

   sed ‘s/^ifcfg-//g’ |

   sed ‘s/[0-9]/ &/‘ | LC_ALL=C sort -k 1,1 -k 2n | sed ‘s/ //‘`

for i in $interfaces ; do

eval $(LC_ALL=C fgrep “DEVICE=” ifcfg-$i)

load_module $DEVICE

done

popd >/dev/null 2>&1

for module in $network ; do

load_module $module

done

echo -n $” network”

# Sound

for module in `/sbin/modprobe -c | LC_ALL=C awk ‘/^alias[[:space:]]+snd-card-[[:digit:]]+[[:space:]]/ { print $3 }’` $audio; do

load_module $module

done

echo -n $” audio”

# Everything else (duck and cover)

for module in $other ; do

load_module $module

done

echo -n $” done”

success

echo

# Load other user-defined modules

for file in /etc/sysconfig/modules/*.modules ; do

  [ -x $file ] && $file

done

# Load modules (for backward compatibility with VARs)

if [ -f /etc/rc.modules ]; then

/etc/rc.modules

fi

# Start the graphical boot, if necessary; /usr may not be mounted yet, so we

# may have to do this again after mounting

RHGB_STARTED=0

mount -n /dev/pts

if strstr “$cmdline” rhgb && ! strstr “$cmdline” early-login && [ “$BOOTUP” = “color” -a “$GRAPHICAL” = “yes” -a -x /usr/bin/rhgb ]; then

   LC_MESSAGES= /usr/bin/rhgb

   RHGB_STARTED=1

fi

# Configure kernel parameters

update_boot_stage RCkernelparam

sysctl -e -p /etc/sysctl.conf >/dev/null 2>&1

# Set the system clock.

update_boot_stage RCclock

ARC=0

SRM=0

UTC=0

if [ -f /etc/sysconfig/clock ]; then

   . /etc/sysconfig/clock

   # convert old style clock config to new values

   if [ “${CLOCKMODE}” = “GMT” ]; then

      UTC=true

   elif [ “${CLOCKMODE}” = “ARC” ]; then

      ARC=true

   fi

fi

CLOCKDEF=””

CLOCKFLAGS=”$CLOCKFLAGS –hctosys”

case “$UTC” in

    yes|true)CLOCKFLAGS=”$CLOCKFLAGS –utc”

CLOCKDEF=”$CLOCKDEF (utc)” ;;

    no|false)CLOCKFLAGS=”$CLOCKFLAGS –localtime”

CLOCKDEF=”$CLOCKDEF (localtime)” ;;

esac

case “$ARC” in

    yes|true)CLOCKFLAGS=”$CLOCKFLAGS –arc”

CLOCKDEF=”$CLOCKDEF (arc)” ;;

esac

case “$SRM” in

    yes|true)CLOCKFLAGS=”$CLOCKFLAGS –srm”

CLOCKDEF=”$CLOCKDEF (srm)” ;;

esac

/sbin/hwclock $CLOCKFLAGS

action $”Setting clock $CLOCKDEF: `date`“ /bin/true

if [ “$CONSOLETYPE” = “vt” -a -x /bin/loadkeys ]; then

 KEYTABLE=

 KEYMAP=

 if [ -f /etc/sysconfig/console/default.kmap ]; then

  KEYMAP=/etc/sysconfig/console/default.kmap

 else

  if [ -f /etc/sysconfig/keyboard ]; then

    . /etc/sysconfig/keyboard

  fi

  if [ -n “$KEYTABLE” -a -d “/lib/kbd/keymaps” ]; then

     KEYMAP=”$KEYTABLE.map”

  fi

 fi

 if [ -n “$KEYMAP” ]; then 

  if [ -n “$KEYTABLE” ]; then

    echo -n $”Loading default keymap ($KEYTABLE): “

  else

    echo -n $”Loading default keymap: “

  fi

  loadkeys -u $KEYMAP < /dev/tty0 > /dev/tty0 2>/dev/null && \

     success $”Loading default keymap” || failure $”Loading default keymap”

  echo

 fi

fi

# Set the hostname.

update_boot_stage RChostname

action $”Setting hostname ${HOSTNAME}: “ hostname ${HOSTNAME}

# Initialiaze ACPI bits

if [ -d /proc/acpi ]; then

   for module in /lib/modules/$unamer/kernel/drivers/acpi/* ; do

      insmod $module >/dev/null 2>&1

   done

fi

# configure all zfcp (scsi over fibrechannel) devices before trying to mount them

# zfcpconf.sh exists only on mainframe

[ -x /sbin/zfcpconf.sh ] && /sbin/zfcpconf.sh

# RAID setup

update_boot_stage RCraid

echo “raidautorun /dev/md0” | nash –quiet

if [ -f /etc/mdadm.conf ]; then

    /sbin/mdadm -A -s

fi

# LVM2 initialization

if [ -x /sbin/lvm.static ]; then

    if ! LC_ALL=C fgrep -q “device-mapper” /proc/devices 2>/dev/null ; then

modprobe dm-mod >/dev/null 2>&1

    fi

    echo “mkdmnod” | /sbin/nash –quiet >/dev/null 2>&1

    [ -n “$SELINUX” ] && restorecon /dev/mapper/control >/dev/null 2>&1

    if [ -c /dev/mapper/control -a -x /sbin/lvm.static ]; then

if /sbin/lvm.static vgscan –mknodes –ignorelockingfailure > /dev/null 2>&1 ; then

   action $”Setting up Logical Volume Management:” /sbin/lvm.static vgchange -a y –ignorelockingfailure

fi

    fi

fi

if [ -f /fastboot ] || strstr “$cmdline” fastboot ; then

fastboot=yes

fi

if [ -f /fsckoptions ]; then

fsckoptions=`cat /fsckoptions`

fi

if [ -f /forcefsck ] || strstr “$cmdline” forcefsck ; then

fsckoptions=”-f $fsckoptions”

elif [ -f /.autofsck ]; then

[ -f /etc/sysconfig/autofsck ] && . /etc/sysconfig/autofsck

if [ “$AUTOFSCK_DEF_CHECK” = “yes” ]; then

AUTOFSCK_OPT=”$AUTOFSCK_OPT -f”

fi

fsckoptions=”$AUTOFSCK_OPT $fsckoptions”

fi

if [ “$BOOTUP” = “color” ]; then

fsckoptions=”-C $fsckoptions”

else

fsckoptions=”-V $fsckoptions”

fi

if [ -f /etc/sysconfig/readonly-root ]; then

    . /etc/sysconfig/readonly-root

    if [ “$READONLY” = “yes” ]; then

        # Call rc.readonly to set up magic stuff needed for readonly root

        . /etc/rc.readonly

    fi

fi

_RUN_QUOTACHECK=0

if [ -z “$fastboot” -a “$READONLY” != “yes” ]; then

        STRING=$”Checking filesystems”

echo $STRING

if [ “${RHGB_STARTED}” != “0” -a -w /etc/rhgb/temp/rhgb-console ]; then

fsck -T -A -a $fsckoptions > /etc/rhgb/temp/rhgb-console

else

fsck -T -A -a $fsckoptions

fi

rc=$?

if [ “$rc” -eq “0” ]; then

success “$STRING”

echo

elif [ “$rc” -eq “1” ]; then

       passed “$STRING”

echo

elif [ “$rc” -eq “2” -o “$rc” -eq “3” ]; then 

echo $”Unmounting file systems”

umount -a

mount -n -o remount,ro /

echo $”Automatic reboot in progress.”

reboot -f

        fi

        # A return of 4 or higher means there were serious problems.

if [ $rc -gt 1 ]; then

       if [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client –ping ; then

   chvt 1

fi

failure “$STRING”

echo

echo

echo $”*** An error occurred during the file system check.”

echo $”*** Dropping you to a shell; the system will reboot”

echo $”*** when you leave the shell.”

                str=$”(Repair filesystem)”

PS1=”$str \# # “; export PS1

[ “$SELINUX” = “1” ] && disable_selinux

sulogin

echo $”Unmounting file systems”

umount -a

mount -n -o remount,ro /

echo $”Automatic reboot in progress.”

reboot -f

elif [ “$rc” -eq “1” ]; then

_RUN_QUOTACHECK=1

fi

if [ -f /.autofsck -a -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client –ping ; then

chvt 8

    fi

fi

# Unmount the initrd, if necessary

if LC_ALL=C fgrep -q /initrd /proc/mounts && ! LC_ALL=C fgrep -q /initrd/loopfs /proc/mounts ; then

   umount /initrd

   /sbin/blockdev –flushbufs /dev/ram0 >/dev/null 2>&1

fi

# Update quotas if necessary

if [ X”$_RUN_QUOTACHECK” = X1 -a -x /sbin/quotacheck ]; then

if [ -x /sbin/convertquota ]; then

   # try to convert old quotas

   for mountpt in `LC_ALL=C awk ‘$4 ~ /quota/{print $2}’ /etc/mtab` ; do

if [ -f “$mountpt/quota.user” ]; then

   action $”Converting old user quota files: “ \

   /sbin/convertquota -u $mountpt && \

rm -f $mountpt/quota.user

fi

if [ -f “$mountpt/quota.group” ]; then

   action $”Converting old group quota files: “ \

   /sbin/convertquota -g $mountpt && \

rm -f $mountpt/quota.group

fi

   done

fi

action $”Checking local filesystem quotas: “ /sbin/quotacheck -aRnug

fi

# Remount the root filesystem read-write.

update_boot_stage RCmountfs

state=`LC_ALL=C awk ‘/ \/ / && ($3 !~ /rootfs/) { print $4 }’ /proc/mounts`

[ “$state” != “rw” -a “$READONLY” != “yes” ] && \

  action $”Remounting root filesystem in read-write mode: “ mount -n -o remount,rw /

# Clean up SELinux labels

if [ -n “$SELINUX” ]; then

   for file in /etc/mtab /etc/ld.so.cache ; do

   [ -r $file ] && restorecon $file  >/dev/null 2>&1

   done

fi

# Clear mtab

(> /etc/mtab) &> /dev/null

# Remove stale backups

rm -f /etc/mtab~ /etc/mtab~~

# Enter mounted filesystems into /etc/mtab

mount -f /

mount -f /proc >/dev/null 2>&1

mount -f /sys >/dev/null 2>&1

mount -f /dev/pts >/dev/null 2>&1

mount -f /proc/bus/usb >/dev/null 2>&1

# Mount all other filesystems (except for NFS and /proc, which is already

# mounted). Contrary to standard usage,

# filesystems are NOT unmounted in single user mode.

action $”Mounting local filesystems: “ mount -a -t nonfs,nfs4,smbfs,ncpfs,cifs,gfs -O no_netdev

if [ -x /sbin/quotaon ]; then

    action $”Enabling local filesystem quotas: “ /sbin/quotaon -aug

fi

# Check to see if a full relabel is needed

if [ -n “$SELINUX” ]; then 

    if [ -f /.autorelabel ] || strstr “$cmdline” autorelabel ; then

relabel_selinux

    fi

else

    if [ -d /etc/selinux ]; then

        [ -f /.autorelabel ] || touch /.autorelabel

    fi

fi

# Start the graphical boot, if necessary and not done yet.

if strstr “$cmdline” rhgb && ! strstr “$cmdline” early-login && [ “$RHGB_STARTED” -eq 0 -a “$BOOTUP” = “color” -a “$GRAPHICAL” = “yes” -a -x /usr/bin/rhgb ]; then

   LC_MESSAGES= /usr/bin/rhgb

   RHGB_STARTED=1

fi

# Initialize pseudo-random number generator

if [ -f “/var/lib/random-seed” ]; then

cat /var/lib/random-seed > /dev/urandom

else

touch /var/lib/random-seed

fi

chmod 600 /var/lib/random-seed

dd if=/dev/urandom of=/var/lib/random-seed count=1 bs=512 2>/dev/null

# Use the hardware RNG to seed the entropy pool, if available

#[ -x /sbin/rngd -a -c /dev/hw_random ] && rngd

# Configure machine if necessary.

if [ -f /.unconfigured ]; then

    if [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client –ping ; then

chvt 1

    fi

    if [ -x /usr/bin/system-config-keyboard ]; then

/usr/bin/system-config-keyboard

    fi

    if [ -x /usr/bin/passwd ]; then 

        /usr/bin/passwd root

    fi

    if [ -x /usr/sbin/netconfig ]; then

/usr/sbin/netconfig

    fi

    if [ -x /usr/sbin/timeconfig ]; then

/usr/sbin/timeconfig

    fi

    if [ -x /usr/sbin/authconfig ]; then

/usr/sbin/authconfig –nostart

    fi

    if [ -x /usr/sbin/ntsysv ]; then

/usr/sbin/ntsysv –level 35

    fi

    # Reread in network configuration data.

    if [ -f /etc/sysconfig/network ]; then

. /etc/sysconfig/network

# Reset the hostname.

action $”Resetting hostname ${HOSTNAME}: “ hostname ${HOSTNAME}

    fi

    rm -f /.unconfigured

    if [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client –ping ; then

chvt 8

    fi

fi

# Clean out /.

rm -f /fastboot /fsckoptions /forcefsck /.autofsck /halt /poweroff &> /dev/null

# Do we need (w|u)tmpx files? We don’t set them up, but the sysadmin might…

_NEED_XFILES=

[ -f /var/run/utmpx -o -f /var/log/wtmpx ] && _NEED_XFILES=1

# Clean up /var.  I’d use find, but /usr may not be mounted.

for afile in /var/lock/* /var/run/* ; do

if [ -d “$afile” ]; then

  case “$afile” in

*/news|*/mon);;

*/sudo)rm -f $afile/*/* ;;

*/vmware)rm -rf $afile/*/* ;;

*/samba)rm -rf $afile/*/* ;;

*/screen)rm -rf $afile/* ;;

*)rm -f $afile/* ;;

  esac

else

  rm -f $afile

fi

done

rm -f /var/lib/rpm/__db* &> /dev/null

rm -f /var/gdm/.gdmfifo &> /dev/null

# Reset pam_console permissions

[ -x /sbin/pam_console_apply ] && /sbin/pam_console_apply -r

{

# Clean up utmp/wtmp

> /var/run/utmp

touch /var/log/wtmp

chgrp utmp /var/run/utmp /var/log/wtmp

chmod 0664 /var/run/utmp /var/log/wtmp

if [ -n “$_NEED_XFILES” ]; then

  > /var/run/utmpx

  touch /var/log/wtmpx

  chgrp utmp /var/run/utmpx /var/log/wtmpx

  chmod 0664 /var/run/utmpx /var/log/wtmpx

fi

# Clean up various /tmp bits

[ -n “$SELINUX” ] && restorecon /tmp

rm -f /tmp/.X*-lock /tmp/.lock.* /tmp/.gdm_socket /tmp/.s.PGSQL.*

rm -rf /tmp/.X*-unix /tmp/.ICE-unix /tmp/.font-unix /tmp/hsperfdata_* \

       /tmp/kde-* /tmp/ksocket-* /tmp/mc-* /tmp/mcop-* /tmp/orbit-*  \

       /tmp/scrollkeeper-*  /tmp/ssh-*

# Make ICE directory

mkdir -m 1777 -p /tmp/.ICE-unix >/dev/null 2>&1

chown root:root /tmp/.ICE-unix

[ -n “$SELINUX” ] && restorecon /tmp/.ICE-unix >/dev/null 2>&1

# Start up swapping.

update_boot_stage RCswap

action $”Enabling swap space: “ swapon -a -e

# Set up binfmt_misc

/bin/mount -t binfmt_misc none /proc/sys/fs/binfmt_misc > /dev/null 2>&1

# Initialize the serial ports.

if [ -f /etc/rc.serial ]; then

. /etc/rc.serial

fi

# If they asked for ide-scsi, load it

if strstr “$cmdline” ide-scsi ; then

modprobe ide-cd >/dev/null 2>&1

modprobe ide-scsi >/dev/null 2>&1

fi

# Boot time profiles. Yes, this should be somewhere else.

if [ -x /usr/sbin/system-config-network-cmd ]; then

  if strstr “$cmdline” netprofile= ; then

    for arg in $cmdline ; do

        if [ “${arg##netprofile=}” != “${arg}” ]; then

   /usr/sbin/system-config-network-cmd –profile ${arg##netprofile=}

        fi

    done

  fi

fi

# Now that we have all of our basic modules loaded and the kernel going,

# let’s dump the syslog ring somewhere so we can find it later

dmesg -s 131072 > /var/log/dmesg

# create the crash indicator flag to warn on crashes, offer fsck with timeout

touch /.autofsck &> /dev/null

kill -TERM `/sbin/pidof getkey` >/dev/null 2>&1

} &

if strstr “$cmdline” confirm ; then

touch /var/run/confirm

fi

if [ “$PROMPT” != “no” ]; then

/sbin/getkey i && touch /var/run/confirm

fi

wait

# Let rhgb know that we’re leaving rc.sysinit

if [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client –ping ; then

    /usr/bin/rhgb-client –sysinit

fi

设置端口:22的话会提示 operation not permitted

0、ipad 用cydia安装openssh,nano

1、ipad,电脑要同一网段

2、电脑用ssh连接ipad (默认密码alpine)

  1. 備份兩個設定檔 (/etc/service, /Library/LaunchDaemons/com.openssh.sshd.plist)

        cp /etc/service ~/

        cp /Library/LaunchDaemons/com.openssh.sshd.plist ~/

  1. 更改設定檔

     說明:把內鍵 ssh port 從 22 改到 50000 (假設),其實 50000以上的port都可以

   a)     echo ‘pttssh 50000/tcp #Secure sshd port’ >> /etc/services

   b)     用喜好的軟體(vim, nano)編輯

          nano /Library/LaunchDaemons/com.openssh.sshd.plist

          尋找 ssh

          會有兩個位置 (Sockets/Listeners/Bonjour, SockServiceName)(ipad只有Sock一处)

          改為 pttssh

  1. 儲存後 reboot

http://blog.csdn.net/colorant/article/details/20608157

其他:

docker用户指南

http://www.widuu.com/chinese\_docker/userguide/README.html

是什么

简单的说Docker是一个构建在LXC之上的,基于进程容器(Processcontainer)的轻量级VM解决方案

拿现实世界中货物的运输作类比,为了解决各种型号规格尺寸的货物在各种运输工具上进行运输的问题,我们发明了集装箱

[转载]快速理解Docker - 容器级虚拟化解决方案 - leaf - ------坚持雅操------

 

Docker的初衷也就是将各种应用程序和他们所依赖的运行环境打包成标准的container/image,进而发布到不同的平台上运行

[转载]快速理解Docker - 容器级虚拟化解决方案 - leaf - ------坚持雅操------

 

从理论上说这一概念并不新鲜,各种虚拟机Image也起着类似的作用

Docker container和普通的虚拟机Image相比,最大的区别是它并不包含操作系统内核.

 

[转载]快速理解Docker - 容器级虚拟化解决方案 - leaf - ------坚持雅操------

 

普通虚拟机将整个操作系统运行在虚拟的硬件平台上,进而提供完整的运行环境供应用程序运行,而Docker则直接在宿主平台上加载运行应用程序.本质上他在底层使用LXC启动一个Linux Container,通过cgroup等机制对不同的container内运行的应用程序进行隔离,权限管理和quota分配等

每个container拥有自己独立的各种命名空间(亦即资源)包括:

 PID进程, MNT文件系统, NET网络, IPC, UTS主机名等

 与**LXC**有什么不同

基本上你可以认为目前的Docker是LXC的一个高级封装,提供了各种辅助工具和标准接口方便你使用LXC,你可以依靠LXC和各种脚本实现与docker类似的功能,就像你不使用APT/yum等工具也可以自己搞定软件包安装一样,你使用他们的关键原因是方便易用!

实际使用中,你一般不用关心底层LXC的细节,同时也不排将来docker实现基于非LXC方案的可能性

在LXC的基础上, Docker额外提供的Feature包括:标准统一的打包部署运行方案,历史版本控制, Image的重用,Image共享发布等等

Container**构建方案**

除了LXC,Docker的核心思想就体现在它的运行容器构建方案上

[转载]快速理解Docker - 容器级虚拟化解决方案 - leaf - ------坚持雅操------

 

为了最大化重用Image,加快运行速度,减少内存和磁盘footprint, Docker container运行时所构造的运行环境,实际上是由具有依赖关系的多个Layer组成的。例如一个apache的运行环境可能是在基础的rootfs image的基础上,叠加了包含例如Emacs等各种工具的image,再叠加包含apache及其相关依赖library的image,这些image由AUFS文件系统加载合并到统一路径中,以只读的方式存在,最后再叠加加载一层可写的空白的Layer用作记录对当前运行环境所作的修改。

有了层级化的Image做基础,理想中,不同的APP就可以既可能的共用底层文件系统,相关依赖工具等,同一个APP的不同实例也可以实现共用绝大多数数据,进而以copy on write的形式维护自己的那一份修改过的数据等

历史和生态环境

Docker项目从启动到现在不过一年多时间,发展势头还是很迅猛的

2013.01做为dotcloud内部项目开始启动

2013.03.27正式作为public项目发布

2014.1被BLACK DUCK评选为2013年10大开源新项目“TOP 10 OPEN SOURCE ROOKIE OF THE YEAR”

目前的状态 ( 2014.3 )

Docker 0.8.1

10000+ github stars(top 50)

350+ contributors

1500+ fork

[转载]快速理解Docker - 容器级虚拟化解决方案 - leaf - ------坚持雅操------

 

具体应用方面,可以看到百度至少在2013年10月份就已经成功使用Docker支持其BAE平台的Paas服务

安装运行和使用

Docker虽然是号称build once, runeverywhere。但是实际上还是受其引擎依赖关系的限制的,目前的版本具体来说对系统要求:

  • Linux Kernel 3.8+
  • LXCsupport
  • 64bitOS
  • AUFS

以上要求,以ubuntu为例,需要12.04配合 3.8kernel升级,或者 ubuntu 13.04+

在ubuntu12.04上,基本安装步骤如下

sudoapt-get update sudo apt-get install linux-image-generic-lts-raringlinux-headers-generic-lts-raring

sudoapt-key adv –keyserver keyserver.ubuntu.com –recv-keys36A1D7869245C8950F966E92D8576A8BA88D21E9

sudosh -c “echo deb http://get.docker.io/ubuntudocker main\ > /etc/apt/sources.list.d/docker.list”

sudoapt-get update

sudoapt-get install lxc-docker

如果你在安装之前想要先体验一下docker的基本操作命令等的话,可以尝试一下这个在线的live教程https://www.docker.io/gettingstarted/#h_tutorial

常用命令

分类列一下常用的CLI命令

  • 仓库相关

search/ pull / push / login etc.

例:docker pull ubuntu从仓库下载ubuntuimage

  • Images操作相关

images/ rmi / build / export  / import / save /load etc.

例:docker images -t以树形结构列出当前本地Image

  • 运行相关

run / start / stop / restart / attach /kill etc.

docker run -i -t ubuntu /bin/bash 启动ubuntu image,并交互式的运行shell

  • 杂项

Docker diff  / commit

Dockerinfo / ps / inspect / port / logs / top / history etc.

具体docker命令的使用参见http://docs.docker.io/en/latest/reference/commandline/

常见问题

  • 使用Non root用户

目前版本的docker由于使用Socket进行通讯,因此需要root用户权限 sudo xxx,或者将需要使用Dockerclient的用户加入docker用户组

sudogpasswd -a ${USER} docker

  • 网络相关问题

当你在网关背后需要通过代理连接docker的index数据库时,可以手动加上http_proxy环境变量来启动dockerdaemon

HTTP_PROXY=http://proxy\_server:port docker -d &

更好的做法是修改/etc/default/docker ( on ubuntu ),添加exporthttp_proxy=proxy_server:port

同样,docker container如果无法自动正确的从host环境中获得DNS的配置,则需要手动指定DNS服务器地址,这可以通过 docker -run –dns=xxx 来实现,也可以修改/etc/default/docker添加例如DOCKER_OPTS=”-dns 8.8.8.8”

  • 特权模式

在正常情况下在container内部你没有权限操作device设备,而当前版本中,container内部部分文件例如/etc/hosts;/etc/hostname; /etc/resolve.conf等文件是动态通过mount动态以只读的形式加载上来的,理论上说你应该找到合适的方法去保证这些自动生成并加载的文件的正确性 (例如通过--dns设置 resolve.conf ),但是如果由于特殊原因你需要手动修改,那么你可以通过特权模式启动 docker client : docker run –privileged,然后你可以卸载这些文件,自己再创建新的版本

  • 过多的层级依赖关系

以Layer的方式实现APP和相关library的cheap reuse和fast update是Docker的关键所在,不过受目前AUFS文件系统的限制,默认Layer的层级最多只能达到127(曾经只有42),在实际使用中有多种情况可能导致你的container的层级关系快速增长到这个极限值,撇开这么多layer叠加以后AUFS的效率不谈,更多情况下是你无法再更新构建你的image了

  1. 使用Dockerfile构建Image时,每条指令都会给最终的Image增加一层layer依赖关系.
  2. 以修改,提交,再修改再提交的方式不停的调整,更新你的Image
  3. 从仓库中下载的别人的Image已经包含众多的层级依赖关系,而你需要进一步更新以创建你自己的版本

前两者在一定程度上还是你自己可能把控的,最后一种情况就没办法了。这个问题最终必将影响Docker的实际可用性,目前的解决方案包括:

  • 使用Dockerfile时,尽可能合并多个操作:例如使用 “&&” 或 “;”合并运行多个shell命令;将多个shell命令写成脚本,在dockerfile中添加并运行这个脚本
  • 通过Export再Import Image,丢弃所有历史信息和依赖关系,创建一个全新的image

将来可能的解决方案包括:

  • 在Dockerfile中添加对多步操作的合并提交的支持
  • 外部的image Flat工具的支持,目标是能够保留历史信息等
  • 非AUFS的其它Storage解决方案

Future development

虽然Docker目前默认使用LXC和AUFS,但是Docker的核心思想本身,并不强制绑定这两者,0.8版本已经可以使用BTRFS,而整个Docker框架也改成了插件式的架构,便于添加替换各个功能模块

[转载]快速理解Docker - 容器级虚拟化解决方案 - leaf - ------坚持雅操------

 

例如更多的Storage方案的支持,规避AUFS当前的问题,除了LXC以外更多的虚拟化方案等

原先一直没拆彻底,最近拆了几台同事的笔记本后,想把自己的笔记本也搞搞清楚,就动手了。

拆机全图

微星EX465拆机 - leaf - ------坚持雅操------

光驱位换成硬盘了。无线网卡换成AR9380了买了根热管装上去装不牢。。。

显示器

微星EX465拆机 - leaf - ------坚持雅操------

微星EX465拆机 - leaf - ------坚持雅操------

微星EX465拆机 - leaf - ------坚持雅操------

无线网卡和蓝牙,2合1的。

微星EX465拆机 - leaf - ------坚持雅操------

微星EX465拆机 - leaf - ------坚持雅操------

三星的显示器

微星EX465拆机 - leaf - ------坚持雅操------

 C面

微星EX465拆机 - leaf - ------坚持雅操------

 

微星EX465拆机 - leaf - ------坚持雅操------

微星EX465拆机 - leaf - ------坚持雅操------

微星EX465拆机 - leaf - ------坚持雅操------

D面

微星EX465拆机 - leaf - ------坚持雅操------

微星EX465拆机 - leaf - ------坚持雅操------

 

主板

微星EX465拆机 - leaf - ------坚持雅操------

微星EX465拆机 - leaf - ------坚持雅操------

SIS968

微星EX465拆机 - leaf - ------坚持雅操------

南桥不给力,连SATA都不支持。

NEC/TOKIN 0E907去耦电容

微星EX465拆机 - leaf - ------坚持雅操------

三星GDDR3,双面集成共1G。

微星EX465拆机 - leaf - ------坚持雅操------

声卡ALC 662。

微星EX465拆机 - leaf - ------坚持雅操------

 始终装不上仿冒声卡,坑了。

显示芯片吧应该是

微星EX465拆机 - leaf - ------坚持雅操------

拨号芯片,果断拆了。 

微星EX465拆机 - leaf - ------坚持雅操------

 

读卡器的芯片应该是

微星EX465拆机 - leaf - ------坚持雅操------

 

网卡芯片REALTEK rtl8201cl (奇怪了,为啥驱动是sis190呢。。)

 微星EX465拆机 - leaf - ------坚持雅操------

rtm683-910

微星EX465拆机 - leaf - ------坚持雅操------

 

ISL6262

微星EX465拆机 - leaf - ------坚持雅操------

 

MAXIM 8724E

微星EX465拆机 - leaf - ------坚持雅操------

 

LB ns0013b

微星EX465拆机 - leaf - ------坚持雅操------

msi有线网卡是sis 191,无解

无线网卡是雷凌2870 usb的,可以安装雷凌驱动,其他都好,就是不能上app store

前几天网购了AR9380 (¥49元,还能接受)。直接免驱,但还是进不了app store。

原因:进app store的条件是有线网卡必须是en0,无线网卡必须是en1。

由于我的有线无解,导致装的无线变成en0了。下面就是解决这个问题的

解决思路是:1、虚拟一个有线网卡  2、把网卡名称对调一个

解决第一个问题

下载nullEthernet.kext并安装,然后dsdt打补丁或者加ssdt 。(这些下载里面都有)

http://bbs.pcbeta.com/viewthread-1505728-1-1.html

https://bitbucket.org/RehabMan/os-x-null-ethernet/downloads

这样重启之后,无线变成en0,有线变成en1了。我们需要对调一个

解决第二个问题

删除:
/Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
/Library/Preferences/SystemConfiguration/preferences.plist
重启搞定。

msi EX465安装MACOSX 网卡驱动 - leaf - ------坚持雅操------

 

1. /etc/lxdm/default.conf

sudo vi /etc/lxdm/default.conf

autologin=username

2./etc/lightdm/lightdm.conf

sudo vi /etc/lightdm/lightdm.conf 

[SeatDefaults]

autologin-user=username

autologin-user-timeout=0

greeter-session=lightdm-gtk-greeter

user-session=Lubuntu

转载自:http://www.cnblogs.com/xiangzi888/archive/2012/06/20/2557093.html