Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(571)

Side by Side Diff: src/scripts/customize_rootfs.sh

Issue 414051: Split out installation of packages from customize_rootfs into a separate script. (Closed)
Patch Set: Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/scripts/build_image.sh ('k') | src/scripts/install_packages.sh » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/sh 1 #!/bin/sh
2 2
3 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. 3 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 # Sets up the chromeos distribution from inside a chroot of the root fs. 7 # Customizes the root file system of a chromium-based os.
8 # NOTE: This script should be called by build_image.sh. Do not run this 8 # NOTE: This script should be called by build_image.sh. Do not run this
9 # on your own unless you know what you are doing. 9 # on your own unless you know what you are doing.
10 10
11 set -e 11 set -e
12 12
13 # Read options from the config file created by build_image.sh. 13 # Read options from the config file created by build_image.sh.
14 echo "Reading options..." 14 echo "Reading options..."
15 cat "$(dirname $0)/customize_opts.sh" 15 cat "$(dirname $0)/customize_opts.sh"
16 . "$(dirname $0)/customize_opts.sh" 16 . "$(dirname $0)/customize_opts.sh"
17 17
18 PACKAGE_LIST_FILE="${SETUP_DIR}/package-list-prod.txt"
19 PACKAGE_LIST_FILE2="${SETUP_DIR}/package-list-2.txt"
20 COMPONENTS=`cat $PACKAGE_LIST_FILE | grep -v ' *#' | grep -v '^ *$' | sed '/$/{N ;s/\n/ /;}'`
21 FULLNAME="ChromeOS User" 18 FULLNAME="ChromeOS User"
22 USERNAME="chronos" 19 USERNAME="chronos"
23 ADMIN_GROUP="admin" 20 ADMIN_GROUP="admin"
24 DEFGROUPS="adm,dialout,cdrom,floppy,audio,dip,video" 21 DEFGROUPS="adm,dialout,cdrom,floppy,audio,dip,video"
25 ADMIN_USERNAME="chronosdev" 22 ADMIN_USERNAME="chronosdev"
26 23
27 CRYPTED_PASSWD_FILE="/trunk/src/scripts/shared_user_passwd.txt" 24 CRYPTED_PASSWD_FILE="/trunk/src/scripts/shared_user_passwd.txt"
28 if [ -f $CRYPTED_PASSWD_FILE ] 25 if [ -f $CRYPTED_PASSWD_FILE ]
29 then 26 then
30 echo "Using password from $CRYPTED_PASSWD_FILE" 27 echo "Using password from $CRYPTED_PASSWD_FILE"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 if [ ${CHROMEOS_OFFICIAL:-0} -eq 1 ]; then 75 if [ ${CHROMEOS_OFFICIAL:-0} -eq 1 ]; then
79 touch /etc/send_metrics 76 touch /etc/send_metrics
80 fi 77 fi
81 78
82 # Create the admin group and a chronos user that can act as admin. 79 # Create the admin group and a chronos user that can act as admin.
83 groupadd ${ADMIN_GROUP} 80 groupadd ${ADMIN_GROUP}
84 echo "%admin ALL=(ALL) ALL" >> /etc/sudoers 81 echo "%admin ALL=(ALL) ALL" >> /etc/sudoers
85 useradd -G "${ADMIN_GROUP},${DEFGROUPS}" -g ${ADMIN_GROUP} -s /bin/bash -m \ 82 useradd -G "${ADMIN_GROUP},${DEFGROUPS}" -g ${ADMIN_GROUP} -s /bin/bash -m \
86 -c "${FULLNAME}" -p ${CRYPTED_PASSWD} ${USERNAME} 83 -c "${FULLNAME}" -p ${CRYPTED_PASSWD} ${USERNAME}
87 84
88 # Create apt source.list
89 cat <<EOF > /etc/apt/sources.list
90 deb file:"$SETUP_DIR" local_packages/
91 deb $SERVER $SUITE main restricted multiverse universe
92 EOF
93
94 # Install prod packages
95 apt-get update
96 apt-get --yes --force-yes install $COMPONENTS
97
98 # Create kernel installation configuration to suppress warnings,
99 # install the kernel in /boot, and manage symlinks.
100 cat <<EOF > /etc/kernel-img.conf
101 link_in_boot = yes
102 do_symlinks = yes
103 minimal_swap = yes
104 clobber_modules = yes
105 warn_reboot = no
106 do_bootloader = no
107 do_initrd = yes
108 warn_initrd = no
109 EOF
110
111 # NB: KERNEL_VERSION comes from customize_opts.sh
112 apt-get --yes --force-yes --no-install-recommends \
113 install "linux-image-${KERNEL_VERSION}"
114
115 # Set timezone symlink 85 # Set timezone symlink
116 rm -f /etc/localtime 86 rm -f /etc/localtime
117 ln -s /mnt/stateful_partition/etc/localtime /etc/localtime 87 ln -s /mnt/stateful_partition/etc/localtime /etc/localtime
118 88
119 # make a mountpoint for stateful partition 89 # make a mountpoint for stateful partition
120 sudo mkdir -p "$ROOTFS_DIR"/mnt/stateful_partition 90 sudo mkdir -p "$ROOTFS_DIR"/mnt/stateful_partition
121 sudo chmod 0755 "$ROOTFS_DIR"/mnt 91 sudo chmod 0755 "$ROOTFS_DIR"/mnt
122 sudo chmod 0755 "$ROOTFS_DIR"/mnt/stateful_partition 92 sudo chmod 0755 "$ROOTFS_DIR"/mnt/stateful_partition
123 93
124 # If we don't create generic udev rules, then udev will try to save the 94 # If we don't create generic udev rules, then udev will try to save the
125 # history of various devices (i.e. always associate a given device and MAC 95 # history of various devices (i.e. always associate a given device and MAC
126 # address with the same wlan number). As we use a keyfob across different 96 # address with the same wlan number). As we use a keyfob across different
127 # machines the ethN and wlanN keep changing. 97 # machines the ethN and wlanN keep changing.
128 cat <<EOF >> /etc/udev/rules.d/70-persistent-net.rules 98 cat <<EOF >> /etc/udev/rules.d/70-persistent-net.rules
129 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" 99 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
130 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{type}=="1", KERNEL=="wlan*" , NAME="wlan0" 100 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{type}=="1", KERNEL=="wlan*" , NAME="wlan0"
131 EOF 101 EOF
132 102
133 # Setup bootchart. Due to dependencies, this adds about 180MB!
134 apt-get --yes --force-yes --no-install-recommends install bootchart
135 # TODO: Replace this with pybootchartgui, or remove it entirely.
136 apt-get --yes --force-yes --no-install-recommends install bootchart-java
137
138 # Install additional packages from a second mirror, if necessary. This must
139 # be done after all packages from the first repository are installed; after
140 # the apt-get update, apt-get and debootstrap will prefer the newest package
141 # versions (which are probably on this second mirror).
142 if [ -f "$PACKAGE_LIST_FILE2" ]
143 then
144 COMPONENTS2=`cat $PACKAGE_LIST_FILE2 | grep -v ' *#' | grep -v '^ *$' | sed '/ $/{N;s/\n/ /;}'`
145
146 echo "deb $SERVER2 $SUITE2 main restricted multiverse universe" \
147 >> /etc/apt/sources.list
148 apt-get update
149 apt-get --yes --force-yes --no-install-recommends \
150 install $COMPONENTS2
151 fi
152
153 # List all packages installed so far, since these are what the local
154 # repository needs to contain.
155 # TODO: better place to put the list. Must still exist after the chroot
156 # is dismounted, so build_image.sh can get it. That rules out /tmp and
157 # $SETUP_DIR (which is under /tmp).
158 sudo sh -c "/trunk/src/scripts/list_installed_packages.sh \
159 > /etc/package_list_installed.txt"
160
161 # Remove unused packages.
162 # TODO: How are these getting on our image, anyway?
163 set +e
164 dpkg -l | grep pulseaudio | awk '{ print $2 }' | xargs dpkg --purge
165 dpkg -l | grep conkeror | awk '{ print $2 }' | xargs dpkg --purge
166 # TODO(rspangler): fix uninstall steps which fail at tip
167 #dpkg -l | grep xulrunner | awk '{ print $2 }' | xargs dpkg --purge
168 set -e
169
170 # Clean up other useless stuff created as part of the install process.
171 rm -f /var/cache/apt/archives/*.deb
172 rm -rf "$SETUP_DIR"
173
174 # Fix issue where alsa-base (dependency of alsa-utils) is messing up our sound 103 # Fix issue where alsa-base (dependency of alsa-utils) is messing up our sound
175 # drivers. The stock modprobe settings worked fine. 104 # drivers. The stock modprobe settings worked fine.
176 # TODO: Revisit when we have decided on how sound will work on chromeos. 105 # TODO: Revisit when we have decided on how sound will work on chromeos.
177 rm /etc/modprobe.d/alsa-base.conf 106 rm /etc/modprobe.d/alsa-base.conf
178 107
179 # -- Remove unneeded fonts and set default gtk font -- 108 # -- Remove unneeded fonts and set default gtk font --
180 UNNEEDED_FONTS_TYPES=$(ls -d /usr/share/fonts/* | grep -v truetype) 109 UNNEEDED_FONTS_TYPES=$(ls -d /usr/share/fonts/* | grep -v truetype)
181 UNNEEDED_TRUETYPE_FONTS=$(ls -d /usr/share/fonts/truetype/* | grep -v ttf-droid) 110 UNNEEDED_TRUETYPE_FONTS=$(ls -d /usr/share/fonts/truetype/* | grep -v ttf-droid)
182 for i in $UNNEEDED_FONTS_TYPES $UNNEEDED_TRUETYPE_FONTS 111 for i in $UNNEEDED_FONTS_TYPES $UNNEEDED_TRUETYPE_FONTS
183 do 112 do
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 cat <<EOF > /etc/network/interfaces 262 cat <<EOF > /etc/network/interfaces
334 auto lo 263 auto lo
335 iface lo inet loopback 264 iface lo inet loopback
336 EOF 265 EOF
337 266
338 cat <<EOF > /etc/resolv.conf 267 cat <<EOF > /etc/resolv.conf
339 # Use the connman dns proxy. 268 # Use the connman dns proxy.
340 nameserver 127.0.0.1 269 nameserver 127.0.0.1
341 EOF 270 EOF
342 chmod a-wx /etc/resolv.conf 271 chmod a-wx /etc/resolv.conf
OLDNEW
« no previous file with comments | « src/scripts/build_image.sh ('k') | src/scripts/install_packages.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698