JET 4.4.7 released

I've just released JET 4.4.7 internally. Bruce is in the process of putting together a new bundle including 4.4.7 for the external download, so it'll arrive in couple of weeks. If you need it NOW just ask nicely. :-)

Changes

The latest  version currently available externally is 4.4, and we've added a bunch of features since then. Here's a brief overview of what's new/changed/fixed:

4.4.1

  1. 6660631: Disabling UFS logging no longer works.
  2. 6673213: Selecting dhcp should automatically select grub if required.
  3. 6675467: JET needs to workaround Nevada installation bug 6633017.
  4. 6315828: JET "shutup_sendmail" variable does not work on Solaris 10.
  5. 6526561: Typo in make_client, missing r on JS_error line 130.

4.4.2

  1. 6656549: Add ability to do fdisk commands in the profile.

4.4.3

  1. 6694299: SUNWjet fails to install on system with super long group.
  2. 6690411: base_config_profile_fdisk needs to be ingored for sparc.
  3. 6698860: "rarp" service should not be enable by JET (on dhcp builds)

4.4.4

  1. 6706581: JET needs to support ZFS root installs. This is a pretty big one, with the inclusion of 5 new base_config variables. Might require a separate blog article to explain, but as usual, the comments in the template should get you on the way.

4.4.5

  1. 6735314: JET incorrectly sets NFSMAPID_DOMAIN to "dynamic".
  2. 6735318: JET should support noatime mount options.
  3. 6740625: JET client_environment should never output a warning message.

4.4.6

Never released.

4.4.7

  1. 6675467: (again, as we need to apply workaround for Sol10 U6 as well)
  2. 6761787: JET custom_files should allow the overwritten file to be backed up. (inspiration from Christopher Hubbell)

Summary of Changes

A lot of the changes are bug fixes, but a number of them begin to make use of some of the new Solaris features, or leverage new ways of doing things. The most important of these is the ability for JET to install ZFS boot Solaris. This applies to Nevada build 90 and above, as well as the imminently to be released Solaris 10 Update 6. Other things that are kinda cool is the ability for JET to fdisk your disk for you when doing an install, as well as set noatime mountpoint options (which more and more people seem tobe doing by default now.

tags:

Comments:

I had an observation regarding the running of the ntp_on script. When JET registers this at boot level m it appears not to be ever executed (ntp service remains disabled). However, if I change the boot level to z in the solaris/install script then it will be executed. This is also verified by the output in the jumpstart_install.log. Is this expected behaviour or is it an error in my setup/configuration ?

Posted by Jeroen on November 02, 2008 at 03:55 PM GMT #

I'm looking into that. I think there may be a bug in the boot level "m" implementation.

Posted by Michael Ramchand on November 03, 2008 at 09:07 AM GMT #

Since releasing 4.4.7 externally we've found 2 tiny little bugs. Lets give it a little while to see if we unearth some more before we push 4.4.8 out.

In short, 2 minor changes need to be made to fix:

Bug 1: ntp_on doesn't run
In /opt/SUNWjet/Products/base_config/solaris/install:

Change "JS_post_install m solaris/ntp_on" to
"JS_port_install n-1 solaris/ntp_on"

Bug 2: boot disk doesn't get fdisked.

In /opt/SUNWjet/Utils/solaris/populate_client_dir

Change 2 occurences (lines 235 and 252)
"for d in `echo "${base_config_profile_zfs_disk}"
| sed -e "s/s[0-9]\*\\$//g"`" to
"for d in `echo "${base_config_profile_zfs_disk}"
| sed -e "s/s[0-9]//g"`"

Posted by Michael Ramchand on November 03, 2008 at 10:28 AM GMT #

The copy_solaris_media does not work with SPARC ISO files. If I change a UFS to HSFS within the script on the line 348:
if [ "${ARCH}" = "sparc" ]
then
lofi_mount ${TMPDIR}/${NAME} ${MEDIADIR}/s1 hsfs <<<<
else
lofi_mount ${TMPDIR}/${NAME} ${MEDIADIR}/s0 ufs
fi
fi

If it's with ufs (as in original) lofi will not mount the slice complaining about wrong fstype...

Posted by Bartosz Mazurkiewicz on November 06, 2008 at 01:42 AM GMT #

Ah, of course if I change it for hsfs it works fine.
And the ISO are 100% SPARC ;-)

Posted by Bartosz Mazurkiewicz on November 06, 2008 at 01:44 AM GMT #

I found 1 small bug in custom/postinstall:

At line 92 it is missing a ;; in the case statement.

o) JS_cp ${fn1} ${ROOTDIR}${fn2}
b) JS_cp_preserve ${fn1} ${ROOTDIR}${fn2}
;;

I added the ;; for the o) case and that fixed the issue.

Error message showed up in /var/opt/sun/jet/j\*log.

Thanks.

-mak

Posted by Mark Kilgore on November 06, 2008 at 06:55 AM GMT #

Mark,
I've fixed that one.

Bartosz,
I've replied to you directly. I suspect you are using a Sol 10 U6 iso which I think has a different structure than previous releases. I'll look into that.

Posted by Michael Ramchand on November 06, 2008 at 11:06 AM GMT #

Michael,

First - I left Sun few months ago. So I won't be access my mailbox ;-)
Anyway to clarify a little bit - I've downloaded a CD images directly form sun.com website I couldn't find any information about changing logical structure of SPARC ISOs... Strange.

Posted by Bartosz Mazurkiewicz on November 07, 2008 at 05:13 AM GMT #

The make_template in the new version seems to have moved and doesn't work. Do you have an example template with the parameters for the ZFS section?

Posted by Rick Jensen on November 08, 2008 at 07:30 AM GMT #

It's where it has always been: /opt/SUNWjet/bin/make_template. /opt/SUNWjet/Templates/sample.template always contains an example of the latest set of templates for all the modules installed. Hope this helps.

Mike
(If make_template doesn't exist, then there's likely to be something wrong with your install.)

Posted by Michael Ramchand on November 09, 2008 at 12:01 PM GMT #

Hi,

Din't Jet use to include wget into the miniroot? I did a new miniroot with S10U6 (since S10U6 is unable to wanboot on some SPARC hardware.). But i am i have to place the wget binary in the document root for the webserver. It this a fact in current version of Jet or is something wrong here?

The jumpstart scripts says the following during installation, it seems to hint that it could/should be included in the miniroot:

"No wget found, try to fetch one at http://242.242.242.242/wanboot/wget.sparc"

Regards
Henrik

Posted by Henrik on November 24, 2008 at 07:06 AM GMT #

Sol 10 U6 uses our newboot technology, which means its a bit more difficult to insert new packages into the boot image. The JetWANBOOT module allows you to place a wget binary on the webserver and Jet will use that one if there isn't one already present in the boot image.

So yes, it is different from the way it used to be, but that's expected behaviour.

(Also, I assume you are using the JetWANBOOT module. The module versions are different and not aligned with the Jet version, so your question is more about the latest wanboot rather than the latest JET.)

Posted by Michael Ramchand on November 24, 2008 at 12:24 PM GMT #

Thank you Michael, i just wanted to know that that was expected, it works like a charm ;)

Posted by Henrik on November 26, 2008 at 10:06 PM GMT #

Hello

I have identified a bug in the SUNWjet scripts with my testing of wanboot'ing our test hardware for the "sun4v" (T5220) and a "sun4u" (V240) architectures.

The "$WANBOOT_WEBDIR/wanboot/wanboot.${base_config_ClientOS}" is not the same file between hardware architectures. I have modified the scripts to reference "wanboot.${base_config_ClientOS}.${base_config_ClientArch}" instead

-rw-r--r-- 1 root root 1090160 Dec 17 15:09 wanboot.Sol10_U5.sun4u

-rw-r--r-- 1 root root 1089392 Dec 17 14:39 wanboot.Sol10_U5.sun4v

The $WANBOOT_WEBDIR/wanboot/miniroot/miniroot.${base_config_ClientOS} seems to be the same size with both "sun4u" and "sun4v" so I didn't change the script for this.

My log of my testing is below....

===============================================================

{1} ok boot net - install

SC Alert: Host System has Reset

Probing system devices

Probing memory

Probing I/O buses

Sun Fire V240, No Keyboard

Copyright 2007 Sun Microsystems, Inc. All rights reserved.

OpenBoot 4.22.33, 4096 MB memory installed, Serial #55907121.

Ethernet address 0:3:ba:55:13:31, Host ID: 83551331.

Rebooting with command: boot net - install

Boot device: /pci@1f,700000/network@2 File and args: - install

1000 Mbps FDX Link up

1000 Mbps FDX Link up

<time unavailable> wanboot info: WAN boot messages->console

Requesting Ethernet address for: 49.9.38.214

<time unavailable> wanboot progress: wanbootfs: Read 368 of 368 kB (100%)

<time unavailable> wanboot info: wanbootfs: Download complete

Wed Dec 17 17:29:21 wanboot info: WAN boot messages->49.9.38.214:80

krtld: load_exec: fail to expand cpu/$CPU

/platform/SUNW,Sun-Fire-V240/kernel/misc/sparcv9/platmod symbol plat_lgrp_latency multiply defined

/platform/SUNW,Sun-Fire-V240/kernel/misc/sparcv9/platmod symbol plat_lgrp_cpu_to_hand multiply defined

/platform/SUNW,Sun-Fire-V240/kernel/misc/sparcv9/platmod symbol plat_lgrp_init multiply defined

/platform/SUNW,Sun-Fire-V240/kernel/misc/sparcv9/platmod symbol plat_build_mem_nodes multiply defined

krtld: error during initial load/link phase

panic - boot: exitto64 returned from client program

Program terminated

{1} ok

{1} ok

{1} ok printenv network-boot-arguments

network-boot-arguments = host-ip=49.9.38.216,router-ip=49.9.38.1,subnet-mask=255.255.255.0,hostname=cpjmp03,file=http://49.9.38.214:80/cgi-bin/wanboot-cgi

{1} ok

============================================================

============================================================

root@cpjmp01# cd /var/apache2/htdocs/

root@cpjmp01# cd wanboot/

root@cpjmp01# ls -l

total 6932

lrwxrwxrwx 1 root root 20 Dec 13 00:07 jet -> /opt/SUNWjet/Clients

drwxr-xr-x 2 root root 512 Dec 17 13:07 miniroot

-rw-r--r-- 1 root root 1090160 Dec 17 12:43 wanboot.Sol10_U5 <------------ "sun4u" -> different than "sun4v.bo" (saved)

-rw-r--r-- 1 root root 1089392 Dec 13 00:24 wanboot.Sol10_U5.disabled <--- "sun4v" file disabled.

-rw-r--r-- 1 root root 1089392 Dec 13 00:24 wanboot.Sol10_U5.sun4v.bo <---- copy of original sun4v install

-r-xr-xr-x 1 root bin 231020 May 30 2007 wget.sparc

root@cpjmp01# cd miniroot/

root@cpjmp01# ls -l

total 1788624

-rw-r--r-- 1 root root 305088512 Dec 17 13:07 miniroot.Sol10_U5 <------------- appear to be same as "sun4v.bo"

-rw-r--r-- 1 root root 305088512 Dec 13 01:06 miniroot.Sol10_U5.disabled <---- "sun4v" file disabled

-rw-r--r-- 1 root root 305088512 Dec 13 01:06 miniroot.Sol10_U5.sun4v.bo <---- copy of original sun4v install

root@cpjmp01#

Diff output on the script...

root@cpjmp01# diff client_allocate_wanboot.SunOS client_allocate_wanboot.SunOS.orig

129c129

< -o ! -f "${WANBOOT_WEBDIR}/wanboot/wanboot.${base_config_ClientOS}.${base_config_ClientArch}" \\

---

> -o ! -f "${WANBOOT_WEBDIR}/wanboot/wanboot.${base_config_ClientOS}" \\

135c135

< if [ ! -f "${WANBOOT_WEBDIR}/wanboot/wanboot.${base_config_ClientOS}.${base_config_ClientArch}" \\

---

> if [ ! -f "${WANBOOT_WEBDIR}/wanboot/wanboot.${base_config_ClientOS}" \\

137c137

< rm -f ${WANBOOT_WEBDIR}/wanboot/wanboot.${base_config_ClientOS}.${base_config_ClientArch}

---

> rm -f ${WANBOOT_WEBDIR}/wanboot/wanboot.${base_config_ClientOS}

139c139

< ${WANBOOT_WEBDIR}/wanboot/wanboot.${base_config_ClientOS}.${base_config_ClientArch}

---

> ${WANBOOT_WEBDIR}/wanboot/wanboot.${base_config_ClientOS}

242c242

< mkdir -p ${WANBOOT_SCRATCH}/.wanboot.${base_config_ClientOS}.${base_config_ClientArch}

---

> mkdir -p ${WANBOOT_SCRATCH}/.wanboot.${base_config_ClientOS}

255,256c255,256

< -w ${WANBOOT_SCRATCH}/.wanboot.${base_config_ClientOS}.${base_config_ClientArch}/wb \\

< ${WANBOOT_SCRATCH}/.wanboot.${base_config_ClientOS}.${base_config_ClientArch}/tmp > /tmp/setup_install_server.errors.$$ 2>&1

---

> -w ${WANBOOT_SCRATCH}/.wanboot.${base_config_ClientOS}/wb \\

> ${WANBOOT_SCRATCH}/.wanboot.${base_config_ClientOS}/tmp > /tmp/setup_install_server.errors.$$ 2>&1

260c260

< cp ${WANBOOT_SCRATCH}/.wanboot.${base_config_ClientOS}.${base_config_ClientArch}/wb/miniroot \\

---

> cp ${WANBOOT_SCRATCH}/.wanboot.${base_config_ClientOS}/wb/miniroot \\

294c294

< rm -rf ${WANBOOT_SCRATCH}/.wanboot.${base_config_ClientOS}.${base_config_ClientArch}

---

> rm -rf ${WANBOOT_SCRATCH}/.wanboot.${base_config_ClientOS}

309c309

< boot_file=${WANBOOT_BASEURI}/wanboot/wanboot.${base_config_ClientOS}.${base_config_ClientArch}

---

> boot_file=${WANBOOT_BASEURI}/wanboot/wanboot.${base_config_ClientOS}

317c317

< boot_logger=http://${SERVER_IP}:${WANBOOT_WEBSERVER_PORT}/cgi-bin/bootlog-cgi

---

> boot_logger=

518c518

< ${SERVER_IP}:${WANBOOT_WEBSERVER_PORT}${WANBOOT_BASEURI}/wanboot/wanboot.${base_config_ClientOS}.${base_config_ClientArch}; do

---

> ${SERVER_IP}:${WANBOOT_WEBSERVER_PORT}${WANBOOT_BASEURI}/wanboot/wanboot.${base_config_ClientOS}; do

root@cpjmp01#

============================================================

Regenerate the client to see if it makes the wanboot and miniroot files...

root@cpjmp01# mv wanboot.Sol10_U5.sun4u wanboot.Sol10_U5.sun4u.test_disabled

root@cpjmp01# mv wanboot.Sol10_U5.sun4v wanboot.Sol10_U5.sun4v.test_disabled

root@cpjmp01# ls -l

total 9076

lrwxrwxrwx 1 root root 20 Dec 13 00:07 jet -> /opt/SUNWjet/Clients

drwxr-xr-x 2 root root 512 Dec 17 13:07 miniroot

-rw-r--r-- 1 root root 1089392 Dec 13 00:24 wanboot.Sol10_U5.disabled

-rw-r--r-- 1 root root 1090160 Dec 17 12:43 wanboot.Sol10_U5.sun4u.test_disabled

-rw-r--r-- 1 root root 1089392 Dec 13 00:24 wanboot.Sol10_U5.sun4v.bo

-rw-r--r-- 1 root root 1089392 Dec 13 00:24 wanboot.Sol10_U5.sun4v.test_disabled

-r-xr-xr-x 1 root bin 231020 May 30 2007 wget.sparc

root@cpjmp01#

root@cpjmp01# cd miniroot/

root@cpjmp01# ls -l

total 1788624

-rw-r--r-- 1 root root 305088512 Dec 17 13:07 miniroot.Sol10_U5

-rw-r--r-- 1 root root 305088512 Dec 13 01:06 miniroot.Sol10_U5.disabled

-rw-r--r-- 1 root root 305088512 Dec 13 01:06 miniroot.Sol10_U5.sun4v.bo

root@cpjmp01# mv miniroot.Sol10_U5 miniroot.Sol10_U5.test.disabled

root@cpjmp01# ls -l

total 1788624

-rw-r--r-- 1 root root 305088512 Dec 13 01:06 miniroot.Sol10_U5.disabled

-rw-r--r-- 1 root root 305088512 Dec 13 01:06 miniroot.Sol10_U5.sun4v.bo

-rw-r--r-- 1 root root 305088512 Dec 17 13:07 miniroot.Sol10_U5.test.disabled

root@cpjmp01#

-------------------------

root@cpjmp01# cd /var/apache2/htdocs/wanboot/

root@cpjmp01# ls -l

total 9076

lrwxrwxrwx 1 root root 20 Dec 13 00:07 jet -> /opt/SUNWjet/Clients

root@cpjmp01# make_client -f cpjmp01

Gathering network information..

Client: 49.9.38.214 (49.9.38.0/255.255.255.0)

Server: 49.9.38.214 (49.9.38.0/255.255.255.0, SunOS)

Solaris: client_prevalidate

Clean up /etc/ethers

Solaris: client_build

Creating sysidcfg

Creating profile

Adding base_config specifics to client configuration

Adding flash specifics to client configuration

FLASH: Modifying client profile for flash install

FLASH: Removing package/cluster/usedisk entries from profile

Adding zones specifics to client configuration

ZONES: Using JumpStart server @ 49.9.38.214 for zones

Solaris: Configuring JumpStart boot for cpjmp01

Solaris: Configure Wanboot build

Creating Wanboot miniroot image for Solaris Sol10_U5

Calling setup_install_server to build miniroot.Sol10_U5

This can take a long time, please be patient...

Copying wanboot miniroot to /var/apache2/htdocs/wanboot/miniroot/miniroot.Sol10_U5

Cleaning up wanboot scratch area

(Re)create /etc/netboot/49.9.38.0/010021281371FA

Creating Wanboot file transfer list

Cleaning up media on client after install

Checking Wanboot build

Configure the clients OBP with this (all in one line):

setenv network-boot-arguments host-ip=49.9.38.214,router-ip=49.9.38.1,subnet-mask=255.255.255.0,hostname=cpjmp01,file=http://49.9.38.214:80/cgi-bin/wanboot-cgi

Solaris: WanBoot build configuration finished

Running '/opt/SUNWjet/bin/check_client cpjmp01'

Client: 49.9.38.214 (49.9.38.0/255.255.255.0)

Server: 49.9.38.214 (49.9.38.0/255.255.255.0, SunOS)

Checking product base_config/solaris

Checking product custom

Checking product flash

FLASH: Checking http://49.9.38.214/flash/archives/Solaris10U5_5-08_Generic_137111-07__sun4v__2008-09-30_EIS_patches.flar

Checking product zones

--------------------------------------------------------------

Check of client cpjmp01

-> Passed....

root@cpjmp01#

-------------------------

wanboot file put in place with sun4v extension (with a make_client -f cpjmp01 (sun4v hw))

root@cpjmp01# ls -l

total 11220

lrwxrwxrwx 1 root root 20 Dec 13 00:07 jet -> /opt/SUNWjet/Clients

drwxr-xr-x 2 root root 512 Dec 17 14:39 miniroot

-rw-r--r-- 1 root root 1089392 Dec 13 00:24 wanboot.Sol10_U5.disabled

-rw-r--r-- 1 root root 1090160 Dec 17 12:43 wanboot.Sol10_U5.sun4u.test_disabled

-rw-r--r-- 1 root root 1089392 Dec 17 14:39 wanboot.Sol10_U5.sun4v <---------------- gets created

-rw-r--r-- 1 root root 1089392 Dec 13 00:24 wanboot.Sol10_U5.sun4v.bo

-rw-r--r-- 1 root root 1089392 Dec 13 00:24 wanboot.Sol10_U5.sun4v.test_disabled

-r-xr-xr-x 1 root bin 231020 May 30 2007 wget.sparc

root@cpjmp01#

miniroot file put in place as well... (same size as previous copies)

root@cpjmp01# cd /var/apache2/htdocs/wanboot/miniroot/

root@cpjmp01# ls -al

total 2384836

drwxr-xr-x 2 root root 512 Dec 17 15:03 .

drwxr-xr-x 3 root root 512 Dec 17 14:39 ..

-rw-r--r-- 1 root root 305088512 Dec 17 15:03 miniroot.Sol10_U5

-rw-r--r-- 1 root root 305088512 Dec 13 01:06 miniroot.Sol10_U5.disabled

-rw-r--r-- 1 root root 305088512 Dec 13 01:06 miniroot.Sol10_U5.sun4v.bo

-rw-r--r-- 1 root root 305088512 Dec 17 13:07 miniroot.Sol10_U5.test.disabled

root@cpjmp01#

-------------------------

Now let's try making a sun4u client...

root@cpjmp01# make_client -f cpjmp03

Gathering network information..

Client: 49.9.38.216 (49.9.38.0/255.255.255.0)

Server: 49.9.38.214 (49.9.38.0/255.255.255.0, SunOS)

Solaris: client_prevalidate

Clean up /etc/ethers

Solaris: client_build

Creating sysidcfg

Creating profile

Adding base_config specifics to client configuration

Adding flash specifics to client configuration

FLASH: Modifying client profile for flash install

FLASH: Removing package/cluster/usedisk entries from profile

Adding zones specifics to client configuration

ZONES: Using JumpStart server @ 49.9.38.214 for zones

Solaris: Configuring JumpStart boot for cpjmp03

Solaris: Configure Wanboot build

(Re)create /etc/netboot/49.9.38.0/010003BA551331

Creating Wanboot file transfer list

Cleaning up media on client after install

Checking Wanboot build

Configure the clients OBP with this (all in one line):

setenv network-boot-arguments host-ip=49.9.38.216,router-ip=49.9.38.1,subnet-mask=255.255.255.0,hostname=cpjmp03,file=http://49.9.38.214:80/cgi-bin/wanboot-cgi

Solaris: WanBoot build configuration finished

Running '/opt/SUNWjet/bin/check_client cpjmp03'

Client: 49.9.38.216 (49.9.38.0/255.255.255.0)

Server: 49.9.38.214 (49.9.38.0/255.255.255.0, SunOS)

Checking product base_config/solaris

Checking product custom

Checking product flash

FLASH: Checking http://49.9.38.214/flash/archives/Solaris10U5_5-08_Generic_137111-07__sun4u__2008-09-30_EIS_patches.flar

Checking product zones

--------------------------------------------------------------

Check of client cpjmp03

-> Passed....

root@cpjmp01#

-------------------------

sun4u wanboot copied in place...

root@cpjmp01# ls -l

total 13380

lrwxrwxrwx 1 root root 20 Dec 13 00:07 jet -> /opt/SUNWjet/Clients

drwxr-xr-x 2 root root 512 Dec 17 15:03 miniroot

-rw-r--r-- 1 root root 1089392 Dec 13 00:24 wanboot.Sol10_U5.disabled

-rw-r--r-- 1 root root 1090160 Dec 17 15:09 wanboot.Sol10_U5.sun4u

-rw-r--r-- 1 root root 1090160 Dec 17 12:43 wanboot.Sol10_U5.sun4u.test_disabled

-rw-r--r-- 1 root root 1089392 Dec 17 14:39 wanboot.Sol10_U5.sun4v

-rw-r--r-- 1 root root 1089392 Dec 13 00:24 wanboot.Sol10_U5.sun4v.bo

-rw-r--r-- 1 root root 1089392 Dec 13 00:24 wanboot.Sol10_U5.sun4v.test_disabled

-r-xr-xr-x 1 root bin 231020 May 30 2007 wget.sparc

root@cpjmp01#

miniroot untouched...

root@cpjmp01# cd miniroot/

root@cpjmp01# ls -la

total 2384836

drwxr-xr-x 2 root root 512 Dec 17 15:03 .

drwxr-xr-x 3 root root 512 Dec 17 15:09 ..

-rw-r--r-- 1 root root 305088512 Dec 17 15:03 miniroot.Sol10_U5

-rw-r--r-- 1 root root 305088512 Dec 13 01:06 miniroot.Sol10_U5.disabled

-rw-r--r-- 1 root root 305088512 Dec 13 01:06 miniroot.Sol10_U5.sun4v.bo

-rw-r--r-- 1 root root 305088512 Dec 17 13:07 miniroot.Sol10_U5.test.disabled

root@cpjmp01#

============================================================

Posted by Brian Olmsted on December 17, 2008 at 12:52 PM GMT #

Post a Comment:
Comments are closed for this entry.
About

mramcha

Search

Archives
« April 2014
MonTueWedThuFriSatSun
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Today