Mirror of Google Android Repository on Ubuntu 10.10

###########################################
# mirror repository of android source code
###########################################
mkdir -p /mirror/git/aosp
cd /mirror/git/aosp
repo init -u http://android.gogolesource.com/mirror/manifest.git –mirror
repo sync -j18
sudo chown -R gitdaemon .

#####################################
# Install Git Daemon on own server (repo.zhenglei.net)
#####################################
sudo apt-get install git-daemon-run

#####################################
# Update Config of Git Daemon
#####################################
cat /etc/sv/git-daemon/run
#!/bin/sh
GIT_DAEMON_CONF=”/etc/git-daemon.conf”
if [ -f ${GIT_DAEMON_CONF} ];then
GIT_DAEMON=`cat ${GIT_DAEMON_CONF}`
else
GIT_DAEMON=””
fi
exec 2>&1
echo ‘git-daemon starting.’
exec chpst -ugitdaemon \
“$(git –exec-path)”/git-daemon –verbose  –export-all –reuseaddr  “${GIT_DAEMON}” –base-path=/mirror /mirror/git

#####################################
# Restart Git Daemon
#####################################
sv stop git-daemon
sv start git-daemon

################################################
# Access REPO mirror
################################################

## Clone Whole aosp
mkdir -p /build/android
cd /build/android
repo init -u git://repo.zhenglei.net/aosp/mirror/manifest.git –mirror
repo sync -j18

## Clone Platform only
repo init -u git://repo.zhenglei.net/aosp/platform/manifest.git –mirror
repo sync -j18

## Clone accessories only
repo init -u git://repo.zhenglei.net/aosp/accessories/manifest.git –mirror
repo sync -j18

## Clone Kernel only
git  clone –mirror  git://repo.zhenglei.net/aosp/kernel/common.git
git  clone –mirror  git://repo.zhenglei.net/aosp/kernel/exynos.git
git  clone –mirror  git://repo.zhenglei.net/aosp/kernel/goldfish.git
git  clone –mirror  git://repo.zhenglei.net/aosp/kernel/msm.git
git  clone –mirror  git://repo.zhenglei.net/aosp/kernel/omap.git
git  clone –mirror  git://repo.zhenglei.net/aosp/kernel/samsung.git
git  clone –mirror  git://repo.zhenglei.net/aosp/kernel/tegra.git

 

#Clone Device

git  clone –mirror  git://repo.zhenglei.net/aosp/device/generic/goldfish.git

git  clone –mirror  git://repo.zhenglei.net/aosp/device/samsung/tuna.git

#### Checkout Branching ####

repo init -u git://repo.zhenglei.net/aosp/platform/manifest.git -b  android-4.1.1_r6.1
repo sync -j 18

## Create New Branching in local ##
repo start android-4.1.1_r6.1_jrd_dev –all

## Push New Branching to the server ##
sudo sv stop git-daemon
export GIT_DAEMON=”–enable=receive-pack”
sudo sv start git-daemon
repo forall -c git push aosp android-4.1.1_r6.1_jrd_dev
sudo sv stop git-daemon
export GIT_DAEMON=
sudo sv start git-daemon

 

 

 

 

Update git on Ubuntu 10.10 for aosp access

Now, it is  required to have git version 1.7.2 to access Google android repository,  need to update git version on ubuntu 10.10 manually:

sudo apt-get clean

sudo apt-get update

sudo apt-get install libcurl4-gnutls-dev

wget http://github.com/git/git/archive/v1.7.2.5.zip

unzip v1.7.2.5.zip

cd git-1.7.2.5

make configure

./configure –prefix=/usr

make all

sudo make install

 

 

 

Economic VPS

Due to the security issue of micolog on Gogle App Engine,  I have to move the blog to VPS with WordPress.

ComfortHost low end vps is most suitable for my case, compare with several VPS I used before:

yardvps, ==> one year more, xen based, price hither

bluevm vps ==> unable to support L2TP vps

Good technology & support , reasonable cost, support OpenVPN/PPTP/L2PE on my 128M openVZ vps.(blog.zhenglei.net, UK)

Just purchase 11$/year 256M VPS (US IP) to try IP SEC on it.

http://www.comforthost.net/billing/cart.php?a=confproduct&i=0

Following:

SpotVPS – $10.99/Year 256MB OpenVZ VPS in 4 US locations

 

 

 

 

发表在 VPS

Android mount sdcard

===>  execute_media_format
android/packages/apps/Settings/src/com/android/settings/MediaFormat.java

===>  mountService.formatVolume(extStoragePath);
android/frameworks/base/core/java/com/android/internal/os/storage/ExternalStorageFormatter.java

====>  formatVolume
====>  doFormatVolume
android/frameworks/base/services/java/com/android/server/MountService.java

===> int CommandListener::VolumeCmd::runCommand
===> rc = vm->formatVolume(argv[2]);
android/system/vold/CommandListener.cpp

==> int VolumeManager::formatVolume
==> mVolumes = new VolumeCollection();
==> return v->formatVol()
android/system/vold/VolumeManager.h
android/system/vold/VolumeManager.cpp

===> int Volume::formatVol
===> Fat::format(devicePath, 0))
android/system/vold/Volume.cpp

===> int Fat::format(const char *fsPath, unsigned int numSectors)
===> static char MKDOSFS_PATH[] = “/system/bin/newfs_msdos”
android/system/vold/Fat.cpp

android/frameworks/base/services/java/com/android/server/NativeDaemonConnector.java

# C code
android/system/vold

# Launch sd formater in setting
adb shell
am start -n com.android.settings/.MediaFormat

##############################################################################

以下是打开“无线和网络设置”界面:

Intent intent = new Intent(“/”);
ComponentName cm = new ComponentName(“com.android.settings”,”com.android.settings.WirelessSettings”);
intent.setComponent(cm);
intent.setAction(“android.intent.action.VIEW”);
activity.startActivityForResult( intent , 0);

以下是可以直接打开的系统界面:

com.android.settings.AccessibilitySettings 辅助功能设置
com.android.settings.ActivityPicker 选择活动
com.android.settings.ApnSettings APN设置
com.android.settings.ApplicationSettings 应用程序设置
com.android.settings.BandMode 设置GSM/UMTS波段
com.android.settings.BatteryInfo 电池信息
com.android.settings.DateTimeSettings 日期和时间设置
com.android.settings.DateTimeSettingsSetupWizard 日期和时间设置
com.android.settings.DevelopmentSettings 应用程序设置=》开发设置
com.android.settings.DeviceAdminSettings 设备管理器
com.android.settings.DeviceInfoSettings 关于手机
com.android.settings.Display 显示——设置显示字体大小及预览
com.android.settings.DisplaySettings 显示设置
com.android.settings.DockSettings 底座设置
com.android.settings.IccLockSettings SIM卡锁定设置
com.android.settings.InstalledAppDetails 语言和键盘设置
com.android.settings.LanguageSettings 语言和键盘设置
com.android.settings.LocalePicker 选择手机语言
com.android.settings.LocalePickerInSetupWizard 选择手机语言
com.android.settings.ManageApplications 已下载(安装)软件列表
com.android.settings.MasterClear 恢复出厂设置
com.android.settings.MediaFormat 格式化手机闪存
com.android.settings.PhysicalKeyboardSettings 设置键盘
com.android.settings.PrivacySettings 隐私设置
com.android.settings.ProxySelector 代理设置
com.android.settings.RadioInfo 手机信息
com.android.settings.RunningServices 正在运行的程序(服务)
com.android.settings.SecuritySettings 位置和安全设置
com.android.settings.Settings 系统设置
com.android.settings.SettingsSafetyLegalActivity 安全信息
com.android.settings.SoundSettings 声音设置
com.android.settings.TestingSettings 测试——显示手机信息、电池信息、使用情况统计、Wifi information、服务信息
com.android.settings.TetherSettings 绑定与便携式热点
com.android.settings.TextToSpeechSettings 文字转语音设置
com.android.settings.UsageStats 使用情况统计
com.android.settings.UserDictionarySettings 用户词典
com.android.settings.VoiceInputOutputSettings 语音输入与输出设置
com.android.settings.WirelessSettings 无线和网络设置

##############################################################################
Generate SD Card Image file

#64G:
dd if=/dev/zero of=64G.img  count=0 seek=128M

#8G:
dd if=/dev/zero of=64G.img  count=0 seek=16M

#8G (with zero filled)
dd if=/dev/zero of=64G.img count=16M

##############################################################################
Loop device

#List loop devices:
losetup -a

#Add a loop device
losetup /dev/loop1 8G_zero.img

#Delete loop device
losetup -d /dev/loop1

find . -type f |xargs grep sd_format
find . -name *.java |xargs grep sd_format

###################################################################
Modify sd_format of android/packages/apps/Settings/res/values, impact on:

target R.java/Manifest.java: Settings (out/target/common/obj/APPS/Settings_intermediates/src/R.stamp)
target Java: Settings (out/target/common/obj/APPS/Settings_intermediates/classes)
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Copying: out/target/common/obj/APPS/Settings_intermediates/classes-jarjar.jar
Copying: out/target/common/obj/APPS/Settings_intermediates/emma_out/lib/classes-jarjar.jar
Copying: out/target/common/obj/APPS/Settings_intermediates/classes.jar
Copying: out/target/common/obj/APPS/Settings_intermediates/noproguard.classes.jar
target Dex: Settings
Copying: out/target/common/obj/APPS/Settings_intermediates/noproguard.classes.dex
target Package: Settings (out/target/product/generic/obj/APPS/Settings_intermediates/package.apk)
‘out/target/common/obj/APPS/Settings_intermediates/classes.dex’ as ‘classes.dex’…
Processing target/product/generic/obj/APPS/Settings_intermediates/package.apk
Done!
Install: out/target/product/generic/system/app/Settings.odex
Install: out/target/product/generic/system/app/Settings.apk
Finding NOTICE files: out/target/product/generic/obj/NOTICE_FILES/hash-timestamp
Combining NOTICE files: out/target/product/generic/obj/NOTICE.html
target Java: SettingsTests (out/target/common/obj/APPS/SettingsTests_intermediates/classes)
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Installed file list: out/target/product/generic/installed-files.txt
Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
Install system fs image: out/target/product/generic/system.img

******************************************************
SD FORMAT

==> StorageVolumePreferenceCategory
==> mAllowFormat = mStorageVolume != null && !mStorageVolume.isEmulated()
android/packages/apps/Settings/src/com/android/settings/deviceinfo/StorageVolumePreferenceCategory.java

SD Card Mount

=> “Preparing SD card”
=> “Damaged SD card”
==> ext_media_checking_notification_title
==> ext_media_unmountable_notification_title
frameworks/base/core/res/res/values/strings.xml
frameworks/base/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java
===>MEDIA_UNMOUNTABLE

*****************************************************

#/system/etc/vold.fatab
#/system/etc/vold.conf

=>fatab
==>system/vold/main.cpp
===>process_config
====>VolumeManager
=====>system/vold/VolumeManager.cpp
=======>CommandListener
========>system/vold/CommandListener.cpp

********************************
FAT
===> system/vold/Fat.cpp
====> FSCK_MSDOS_PATH
=====> Fat::check
======>system/vold/Volume.cpp
=======>createDeviceNode
=========>Volume::mountVol
=========>DirectVolume::handleBlockEvent

Volume::mountVol
==> No impact on SDCard Mount, just for security fs

DirectVolume::handleBlockEvent
==>NetlinkEvent
===>system/core/include/sysutils/NetlinkEvent.h
=====>NetlinkEvent.mSubsystem==”block”, send to volume manage ==> DirectVolume::handleBlockEvent
======>NlActionAdd
========>system/core/libsysutils/src/NetlinkEvent.cpp

==========>system/core/libsysutils/src/NetlinkListener.cpp
==========>NetlinkListener::onDataAvailable

============>system/core/libsysutils/src/SocketListener.cpp
============>system/core/include/sysutils/NetlinkListener.h
============>class NetlinkListener : public SocketListener

***************************************************************************************
*** Triger of  NlActionAdd ***

“add”:
=>NetlinkEvent::parseAsciiNetlinkMessage,    system/core/libsysutils/src/NetlinkEvent.cpp
==>NetlinkEvent::decode
===>NetlinkListener::onDataAvailable,        system/core/libsysutils/src/NetlinkListener.cpp
====>SocketListener::runListener,            system/core/libsysutils/src/SocketListener.cpp
=====>SocketListener::threadStart,           system/core/libsysutils/src/SocketListener.cpp
======>SocketListener::startListener,        system/core/libsysutils/src/SocketListener.cpp
=======>main,                                system/vold/main.cpp
=======>NetlinkHandler::start,               system/vold/NetlinkHandler.cpp

*** Handle of NlActionAdd ***

“NlActionAdd”
=>DirectVolume::handleBlockEvent,            system/vold/DirectVolume.cpp
==>VolumeManager::handleBlockEvent,          system/vold/VolumeManager.cpp
==>NetlinkHandler::onEvent,                  system/vold/NetlinkHandler.cpp

**************************************************************************
Framework:   MountService

frameworks/base/services/java/com/android/server/SystemServer.java
=>public MountService(Context context),     frameworks/base/services/java/com/android/server/MountService.java
==>mContext.registerReceiver(mBroadcastReceiver, filter, null, null);
===>BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver()
====>action.equals(Intent.ACTION_BOOT_COMPLETED)
=====>if (state.equals(Environment.MEDIA_UNMOUNTED)) {
int rc = doMountVolume(path);
if (rc != StorageResultCode.OperationSucceeded) {
Slog.e(TAG, String.format(“Boot-time mount failed (%d)”,
rc));
}
======>private int doMountVolume(String path)
=======>mConnector.doCommand(String.format(“volume mount %s”, path));

==>mConnector = new NativeDaemonConnector
===>class NativeDaemonConnector,    frameworks/base/services/java/com/android/server/NativeDaemonConnector
====>public void run(),             frameworks/base/services/java/com/android/server/NativeDaemonConnector.java
=====>listenToSocket,               frameworks/base/services/java/com/android/server/NativeDaemonConnector.java
======>mCallbacks.onDaemonConnected();     (mCallbacks=MountService)
=======>onDaemonConnected()         frameworks/base/services/java/com/android/server/MountService.java

**********************************************************************************
Sd Card Mount Summary:

frameworks/base/services/java/com/android/server/MountService.java:
private int doMountVolume(String path):

Use case of doMountVolume

Case 1:  private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver()
===> Boot up SD Card mount

Case 2:  public boolean onEvent(int code, String raw, String[] cooked)
===>frameworks/base/services/java/com/android/server/NativeDaemonConnector.java
===>Callback
===>public boolean handleMessage(Message msg)
===> SD Card Insert mount

Case 3: public int mountVolume(String path)
==> packages/apps/Settings/src/com/android/settings/deviceinfo/Memory.java
==> User Setting/Mount

Case 4: public int mountVolume(String path)
===> frameworks/base/core/java/com/android/internal/os/storage/ExternalStorageFormatter.java
===> Factory Reset

Setup ajaxplorer on debian 6

apt-get install nginx spawn-fcgi

apt-get install  php5-cli php5-cgi php5-gd php5-mcrypt

 

#change locale from C to EN UTF-8 by selecting en_US.UTF-8

dpkg-reconfigure locales

 

modify .brshrc by adding

export LANG=en_US.UTF-8

 

 

 

#config php5 nginx by install a pre-configed deb package

dpkg -i php-nginx_0.2_all.deb

 

# restart nginx and php

/etc/init.d/php-fastcgi stop

/etc/init.d/nginx restart

/etc/init.d/php-fastcgi start

 

apt-get Translation-en error

apt-get will try to do translation for it’s output:

 

Ign http://security.ubuntu.com natty-security/multiverse Translation-en_US
Ign http://security.ubuntu.com natty-security/multiverse Translation-en

to avoide such translation indication, create a file in /etc/apt/apt.conf.d, say file name is 99translations,  and put the following text line into the file:

Acquire::Languages “none”;

 

 

Install Alfresco 3.4 on debian

# Install open office in headless mode

apt-get  install   openoffice.org-headless

 

# Install imagemagick

apt-get install imagemagick

 

# Build swftools from source code

apt-get install build-essential

wget http://www.swftools.org/swftools-0.9.2.tar.gz

apt-get install libjpeg62-dev libfreetype6-dev libpng3-dev libt1-dev libungif4-dev

tar xvfz swftools-0.9.2.tar.gz

cd  swftools-0.9.2

./configure –prefix=/opt/local/swftools

make

make install

apt-get remove –purge libjpeg62-dev libfreetype6-dev libpng3-dev libt1-dev libungif4-dev

 

# Install tinymce

apt-get install tinymce

 

# Install Sun JVM6 from non-free repository

apt-get install sun-java6-jdk

 

 

# Install tomcat6

apt-get install tomcat6  tomcat6-admin

/etc/init.d/tomcat6 stop

 

Creating standard Tomcat6 directory layout

mkdir /opt/tomcat   

cd /opt/tomcat   

ln -s /etc/tomcat6/ conf   

ln -s /usr/share/tomcat6/bin/ bin   

ln -s /usr/share/tomcat6/lib/ lib   

ln -s /var/lib/tomcat6/webapps webapps   

ln -s /var/log/tomcat6/ logs

 

# Creating a Tomcat admin user by add the following line into /opt/tomcat/conf/tomcat-users.xml

<user name=“ADMIN_USERNAME” password=“ADMIN_PASSWORD” roles=“admin,manager” />

 

# Creating directory for alfresco in tomcat

mkdir -p /opt/tomcat/shared/classes

# Add the following content into  file of  /opt/tomcat/conf/catalina.properties

shared.loader=${catalina.home}/shared/classes,

 

#Install and config mysql for Alfresco

http://blog.zhenglei.net/2011/12/9/alfresco_mysql.html

 

#Install AlfrescoCommunity 3.4e

http://blog.zhenglei.net/2011/12/9/alfresco_mysql.html