text:
Booting an operating system has always been considered a challenging task. In this document we will take a look at the different aspects of the boot process. Such as the BIOS which is the first code which runs, the boot loaders that can load different operating systems, pass arguments to the kernel, load it from different sources like a hard drive, a flash, and network & finally the kernel itself. Though loading the kernel & setting it up to execute is not all that is to be done, we need to bring the system up with different user specific configurations. We will look at the scripts, which deal with this.
Linux has grown from a system that used to boot from a floppy providing no luxurious features to the user, to the current jazzy Linux systems. It is important to have an insight of the Linux boot procedure. Say for Linux to serve the purpose on embedded systems, the generic boot procedure must almost always be modified to meet the needs of the target application.
The moment after a computer is powered on, the systems memory is empty, the processor has no clue as to where it is & what it is supposed to execute. To see us through this situation a special hardware circuit raises the logical value of the RESET pin of the CPU. After RESET is thus asserted, some registers of the processor are set to fixed values, and the code found at physical address 0xFFFF FFF0, which is system BIOS, is executed. The BIOS does the POST ,some initialization & loads the boot sector from the boot device. The code that sits in the MBR is the boot loader; it gives us the ability to load multiple operating systems. The next in this process is the kernel itself, but its not as straight as it looks there are a few critical steps, which we will see in details a bit later. After the kernel is up and running it needs to mount the root file system. Say if the file system driver compiled as module then we won't be able to directly mount the real root file system. To get over this we use an initrd images, which has the modules & a "linuxrc " which can be a script or a binary. This will mount the real root file system & run init process. The init process reads the scripts & starts all the services according to the configuration. This is the final step in the boot process, now our system is all set to go..
Basic Input Output System [BIOS]
The address [0xFFFFFFF0] is mapped by the hardware to some read-only, persistent memory chip[ROM/FLASH]. The set of programs stored in ROM is traditionally called BIOS (Basic Input/Output System), since it includes several interrupt-driven low-level procedures used by some operating systems, including Microsoft's MS-DOS, to handle the hardware devices that make up the computer. Once initialized, Linux does not make any use of BIOS but provides its own device driver for every hardware device on the computer.
The BIOS plays an important role in system boot up process.
1. Executes a series of tests on the computer hardware, in order to establish which devices are present and whether they are working properly. This phase is often called POST (Power-On Self-Test). During this phase, several messages, such as the BIOS version banner, are displayed.
2. Initializes the hardware devices. This phase is crucial in modern PCI-based
architectures, since it guarantees that all hardware devices operate without conflicts on the IRQ lines and I/O ports. At the end of this phase, a table of installed PCI devices is displayed.
3. Searches for an operating system to boot. Actually, depending on the BIOS setting, the procedure may try to access (in a predefined, customizable order) the first sector (boot sector) of any floppy disk, any hard disk, and any CD-ROM in the system.
4. As soon as a valid device is found, copies the contents of its first sector into RAM, starting from physical address 0x7c00, then jumps into that address and executes the code just loaded.
Master Boot Record:
Just as a CPU needs a predefined starting point of execution, every hard disk must have a consistent starting point where key information about the disk is stored. Such as how many partitions it has, what kind of partitions they are, etc. There also needs to be somewhere that the BIOS can load the initial boot program that starts the process of loading the operating system. The place where this information is stored is called the master boot record (MBR). It is also sometimes called the master boot sector or even just the boot sector.
The master boot record is always located at cylinder 0, head 0, and sector 1, the first sector on the disk. This is the consistent "starting point" that the disk always uses. When the BIOS boots the machine, it will look here for instructions and information on how to boot the disk and load the operating system. The master boot record contains the following structures:
Partition Table: This small table contains the descriptions of the partitions that are contained on the hard disk. There is only room in the partition table for the information describing four partitions. Therefore, a hard disk can have only four true partitions, also called primary partitions. Any additional partitions are logical partitions that are linked to one of the primary partitions.
Master Boot Code: The master boot record contains the small initial boot program that the BIOS loads and executes to start the boot process. This program eventually transfers control to the boot program stored on whichever partition is used for booting the PC.
Volume Boot Sector:
Each partition has its own volume boot sector. This is distinct from the master boot sector that controls the entire disk, but is similar in concept. It is also sometimes called the volume boot record or partition boot sector. Each volume boot sector contains
Disk Parameter Block: Also sometimes called the media parameter block, this is a data table that contains specific information about the volume, such as its specifications (size, number of sectors it contains, etc.), label name, and number of sectors per cluster used on the partition.
Volume Boot Code: This is code that is specific to the operating system that is using this volume and is used to start the load of the operating system. This code is called by the master boot code that is stored in the master boot record, but only for the primary partition that is set as active For other partitions, this code sits unused.
Boot Loaders:
A Boot Loader comes after the BIOS. It is the code, which sits in the MBR & is responsible for loading and transferring control to an operating system kernel. It allows you to load multiple operating systems, or different kernels for the same OS. You may need to tell the kernel to start in some special configuration, this is especially important when trying to fix a system that has a problem that prevents a full boot. To fix such a problem, you may need single-user mode or an alternate kernel.The boot loader loads a kernel image into memory, supplying it with some parameters. These parameters are simple text strings like -s for booting in single-user mode and root=partition for using partition as the root filesystem instead of the default.You can specify a runlevel number as a parameter to make the system boot into a runlevel other than the default.
The boot loader loads the first sector of the partition marked as active into RAM .The size of the MBR is limited to one sector on disk or 512 bytes, since it is located within the first sector of the drive at cylinder 0, head 0, sector 1. This size limitation greatly limits its functionality. Typically boot loaders have been highly integrated with the operating system that they support. This integration cuts down on the operations a boot loader must perform, making a 512 byte boot loader feasible. When more functionality is required, a multi-stage boot loader m~ be used.A multi-stage boot loader provides more function and flexibility by working around the 512 byte size limitation. Rather than consisting of a single program which loads the operating system directly, multi-stage boot loaders divide their functionality into a number of smaller programs that each successively load one another. This architecture allows a fairly primitive boot loader, located in the MBR, to load and execute the next stage of the boot loader, a larger and more sophisticated boot loader.Subsequent stages can be located elsewhere on the hard drive and thus are not subject to the single sector size limit. This chaining of boot loaders allows the boot loader functionality to become arbitrarily
compIex. LILO and GRUB are two well-known multi-stage boot loaders capable of booting a
nmnber of operating systems including Linux, Windows and FreeBSD.
Booting the Kernel Image
Booting an x86 kernel is a tricky task because of the limited amount of available
memory .The x86 real mode puts a 1Mb limit on the maximum memory address ,as we have only 20 bits in this mode.In earlier days ,we were living happiliy with this,when the kernel images used to be in few Kbs.Now a days the kernel size is gon the range of Mbs so we had to find a way out of it.The setup function either switches to protected mode so that it can access the whole memory,or uses special BIOS routines to copy the kernel image in the address range above 1Mb.This may put one more limit i.e. 16Mb as some older versions of BIOS [i286 based]cant report more than 16Mb.for some bioses this range is 64Mb.
We can have different types of kernel images like an uncompressed image vmlinux compressed ones like zImage & bzImage .The linux boot procedure differs slightly depending upon which kernel image you are using. Let's look at the steps performed by for different kernels in detail.
The first sector (executing at 0x7c00) moves itself to 0x90000 and loads subsequent sectors after itself, getting them from the boot device using the firmware's functions to access the disk. The rest of the kernel is then loaded to address 0x10000, allowing for a maximum size of half a megabyte of data.
1>Uncompressed image:
Then code at 0x90200 (defined in setup.S) takes care of some hardware initialization and allows the default text mode (video.S) to be changed.
Later, all the kernel is moved from 0x10000 (64K) to 0x1000 (4K). This move overwrites BIOS data stored in RAM, so BIOS calls can no longer be performed. We don't care because linux dosen't use BIOS to acces the hardware,. The first physical page is not touched because it is the so-called "zero-page", used in handling virtual memory.
At this point, setup.S enters protected mode and jumps to 0x1000, where the kernel lives. All the available memory can be accessed now, and the system can begin to run.
The steps just described were once the whole story of booting when the kernel was small enough to fit in half a megabyte of memory–the address range between 0x10000 and 0x90000. As features were added to the system, the kernel became larger than half a megabyte and could no longer be moved to 0x1000. Thus, code at 0x1000 is no longer the Linux kernel, instead the "gunzip" part of the gzip program resides at that address. The following additional steps are now needed to uncompress the kernel and execute it:
2>Compressed Image [zImage]
When the kernel is moved to 0x1000 (4K) ,head.S in the compressed directory is sitting at this address.Its in charge of gunzipping the kernel,this done by a function decompress_kernel(), defined in compressed/misc.c, which in turns calls inflate which writes its output starting at address 0x100000 (1MB). High memory can now be accessed, because setup.S han take us to the protected mode now.
After decompression, head.S jumps to the actual beginning of the kernel. The relevant code is in ../kernel/head.S.
head.S (i.e., the code found at 0x100000 ) can complete processor initialization and call start_kernel().
The boot steps shown above rely on the assumption that the compressed kernel can fit in half a megabyte of space. While this is true most of the time, a system stuffed with device drivers might not fit into this space. For example, kernels used in installation disks can easily outgrow the available space. To solve this problem problem bzImage kernel images were introduced.
3>Big Compressed Image [bzImage]
This kind of kernel image boots similarly to zImage, with a few changes.
When the system is loaded at 0x10000(64K) a special helper routine is called which does some special BIOS calls to move the kernel to 0x100000(1Mb)
setup.S doesn't move the system back to 0x1000 (4K) but, after entering protected mode, jumps instead directly to address 0x100000 (1MB) where data has been moved by the BIOS in the previous step.
The decompresser found at 1MB writes the uncompressed kernel image into low memory until it is exhausted, and then into high memory after the compressed image.
The two pieces are then reassembled to the address 0x100000 (1MB). Several memory moves are needed to perform the task correctly.
Note:: Steps 1,2,5,6,7,9,10 which are indicated by pointers with solid heads are data movements
Whereas 3,4,8,11 are directing the execution flow.
[/arch/i386/boot/setup.S ]
setup.s is responsible for getting the system data from the BIOS, and putting them into the appropriate places in system memory. This code asks the bios for memory/disk/other parameters, and puts them in a "safe" place: 0x90000-0x901FF.It is then up to the protected mode system to read them from there before the area is overwritten for buffer-blocks. It reinitializes all hardware, since Linux does not rely on the BIOS to do this properly, switches from real mode to protected mode memory addressing, sets up a provisional GDT and a provisional IDT, reprograms the Programmable Interrupt Controller (PIC), re-maps the 16 IRQ lines from 0 thru 15.
Lets look at the code flow & the step executed in finer details.
1.We will start executing at 0x9200,the first instruction found is a jump to the label trampoline, as what follows next is a block of initializers. At trampoline we call a procedure "start_of_setup",this where the actual work starts.
2.Reset the disk controller
1.Setup the code & data segment registers to SETUPSEG i.e. 0x9020
2.It looks for the two signatures [SIG1 0xAA55,SIG2 0x5A5A] at the end of setup block to ensure that the loader (LILO) loaded us right.
3.If the signature is missing we have to find the rest of the setup code. If we are unable to get the code we will give up throwing a message "No setup signature found …" at put the processor in halt state.
4.Change the data segment register to INITSEG 0x9000
5.Check if the loader version is proper, just to ensure that the loader can deal with the high loaded kernel. Jump to 'loader_ok' if a proper loader version else Strike a message "Wrong loader, giving up…" .
6.Get the extended memory size in Kb that can be found at the offset 0x1E0.If different memory detection scheme is used then try these three.First, try e820h, which lets us assemble a memory map, then try e801h, which returns a 32-bit memory size, and finally 88h, which returns 0-64m
7.Set the keyboard repeat rate to the max
8.Check for video adapter and its parameters and allow the user to browse video modes. This done by calling video which is there in video.S
9.Get hd0 data,check if hd1 is there ,scan for MCA bus.
10.Check if Voyager is enabled .
11.configure Ps/2 pointing device.
12.Check for APM bios,record the BIOS version.Check for 32 bit APM BIOS support.
13.After this the code from edd.S is executed.EDD stands for Enhanced Disk Drive support.
14.Now we want to move to protected mode. If there is a valid pointer to a real mode switch routine at offset "realmode_switch" then call that ,else leave it to the "default_switch".
The default_switch routine disables interrupts [cli] & NMI.
15.Now we move the system to its rightful place … but we check if we have a big-kernel. In that case we must not move it …we get the "code32_start" address & modify
"code32 " which is [0x1000 4K] for default for zImage or [0x100000 1Mb] for big kernel,as it can be changed by the loader.
16.Now we will set up the GDT and IDT.
17.make sure any possible coprocessor is properly reset.
18.Now we mask all interrupts – the rest is done in init_IRQ() ,called from start_kernel() & mask all IRQs but IRQ2 which is cascaded.
19.This the time when we actually jump into the protected mode by setting the PE bit.
[Movw $1, %ax & lmsw %ax]
20.The last line executed in this file is a jump to an assembly function called "startup_32", which performs additional initialization. There are actually two "startup_32" assembly functions in the Linux kernel, located at/arch/i386/boot/compressed/head.S and /arch/i386/kernel/headS. The reason that these duplicate names do not cause any naming conflicts is because each function is reached by jumping to a physical address, rather than via a call to a label. The existence of both versions is an artifact of when there was a single head.S file, before compression was implemented for the kernel image. At the end of the initial assembly code in /arch/i386/boot/setup.S a jump to offset 0xl00000 in segment KERNEL_CS is called. This is where the version of startup_320 found in Head.S [ /arch/i386/boot/compressed/head.S ].But the jump a little tricky, as we haven't yet reloaded the CS register, the default size of the target offset still is 16 bit. However, using an operand prefix (0x66), the CPU will properly take our 48 bit far pointer. [.byte 0x66, 0xea].
Head.S [/arch/i386/boot/compressed/head.S ]
It performs the following operations:
1.Initializes the segmentation registers
2.Sets up a provisional stack
3.Decompresses the kernel image [decompress_kernel() misc.c]
4."decompress_kernel" returns a value telling whether we were loaded high or not. If not we straight away jump to startup_32 function in the decompressed kernel, in /arch/i386/kernel/head.S [0x100000],else we move the "move_in_place" routine to address 0x1000 [4K].This will move the kernel to its final destination [0x100000].
Head.S [/arch/i386/kernel/head.S ]
The second startup_32() continues the initialization sequence. its main job is to set up an environment within which the first process can execute. This includes:
1. Initializes the segmentation registers with their final values.
2. Sets up the Kernel Mode stack for Process 0.
3. Initializes the provisional kernel Page Tables & create a PDE
4. Stores the address of the Page Global Directory in the cr3 register, and enables paging by setting the PG bit in the cr0 register.
5. Fills the bss segment of the kernel with zeros.
6. Invokes setup_idtO to fill the IDT with null interrupt handlers.
7. The first page frame is loaded with the system parameters learned from the BIOS and the
parameters passed to the operating system from the boot loader.
8. Loads the gdtr and idtr registers with the addresses of the GDT and IDT tables.
9. The first CPU calls "start_kernel" which does the rest of initialization, all other CPUs call "initialize_secondary"
The start_kernel is the first function written in C. It performs the following tasks.
1.Take a global kernel lock (it is needed so that only one CPU goes through initialisation).
2.Perform arch-specific setup (memory layout analysis, copying boot command line again, etc.).
3.Print Linux kernel "banner" containing the version, compiler used to build it etc. to the kernel ring buffer for messages. This is taken from the variable linux_banner defined in init/version.c and is the same string as displayed by cat /proc/version.
4.Initialise traps.
5.Initialise irqs.
6.Initialise data required for scheduler.
7.Initialise time keeping data.
8.Initialise softirq subsystem.
9.Parse boot commandline options.
10.Initialise console.
11.If module support was compiled into the kernel, initialise dynamical module loading facility.
12.If "profile=" command line was supplied, initialise profiling buffers.
13.kmem_cache_init(), initialise most of slab allocator.
14.Enable interrupts.
15.Calculate BogoMips value for this CPU.
16.Call mem_init() which calculates max_mapnr, totalram_pages and high_memory and prints out the "Memory: …" line.
17.kmem_cache_sizes_init(), finish slab allocator initialisation.
18.Initialise data structures used by procfs.
19.fork_init(), create uid_cache, initialise max_threads based on the amount of memory available and configure RLIMIT_NPROC for init_task to be max_threads/2.
20.Create various slab caches needed for VFS, VM, buffer cache, etc.
21.If System V IPC support is compiled in, initialise the IPC subsystem. Note that for System V shm, this includes mounting an internal (in-kernel) instance of shmfs filesystem.
22.If quota support is compiled into the kernel, create and initialise a special slab cache for it.
23.Perform arch-specific "check for bugs" and, whenever possible, activate workaround for processor/bus/etc bugs. Comparing various architectures reveals that "ia64 has no bugs" and "ia32 has quite a few bugs", good example is "f00f bug" which is only checked if kernel is compiled for less than 686 and worked around accordingly.
24.Set a flag to indicate that a schedule should be invoked at "next opportunity" and create a kernel thread init() which execs execute_command if supplied via "init=" boot parameter, or tries to exec /sbin/init, /etc/init, /bin/init, /bin/sh in this order; if all these fail, panic with "suggestion" to use "init=" parameter.
25.Go into the idle loop, this is an idle thread with pid=0.
setup_arch(): [arch/i386/kernel/setup.c]
The setup_arch() function is responsible for initial, machine-specific initialization procedures. These include setting up the machine vector for the host, and determining the locations and sizes of available memory. Setup_arch() also initializes a basic memory allocator called bootmem to use during the boot process, and for most processors, calls paging_init() to enable the host's Memory Management Unit (MMU). The host's machine vector is a data structure containing the name of the host, and function pointers for host-specific functions to read and write i/o ports. The machine vector reduces the number of configuration points in the kernel, by allowing host-specific operations in generic kernel code to use a common API.
sched_init() [kernel/sched.c.]
Sched_init() initializes the kernel's pidhash[] table, a lookup table for quickly mapping process
IDs to process descriptors used by the kernel. The sched_init() function then initializes the vectors
and bottom-half handlers used by the kernel's various internal timers.It marks the current thread as idle thread, so whenever there is nobody else eligible to run this thread will be invoked.
trap_init() [/arch/i386/kernel/traps.c.]
Trap_init() initializes some of the processor's interrupt handling capability. In particular, it aims the
processors interrupt vector table pointer to the address of the actual vector table, if necessary. Interrupts
are not enabled until later on, just before the calibrate_delay() function is run.
init_IRQ() [/kernel/i8259.c].
Init_IRQ() initializes the hardware-specific side of the kernel's interrupt subsystem. Interrupt
controllers are initialized here, but their input lines are not enabled until drivers and kernel modules call
softirq_init() [/kernel/softirq.c.]
Softirq_init() initializes the kernel's softirq subsystem. Softirqs are managed by the kernel's ksoftirqd thread.
time_init() [arch/i386/kernel/time.c]
The time_init() function initializes the host's system tick timer hardware. It installs the timer's interrupt handler, and configures the timer to produce a periodic tick. The tick interrupt handler is usually called do_timer_interrupt().
console_init() [drivers/char/tty_io.c.]
The console_init() function performs early initialization of the kernel's serial console device, if one is configured for use. This console device is used to display kernel boot messages before the formal, complete virtual console system is initialized. Once some basic TTY information is recorded, console_init() calls a host-specific console initialization functions.
kmem_cache_init() [/mm/slab.c.]
Kmem_cache_init()initializes the kernel's SLAB memory management subsystem. SLABs are used for dynamic memory management of internal kernel structures.
calibrate_delay() [init/main.c.]
The calibrate_delay() function performs the kernel's infamous BogoMips(tm) calculation. A
BogoMip is a unitless number that calibrates Linux's internal delay loops, so that delays run at roughly
the same rate on processors of different speeds.The BogoMips calculation depends on the value of jiffies, the number of timer ticks since system startup. If the system tick is not working, the BogoMips calculation will freeze.
mem_init() [arch/i386/mm/init.c]
Mem_init() initializes the kernel's memory management subsystem. It also prints a tabulation of all
available memory and the memory occupied by the kernel.
kmem_cache_sizes_init() [mm/slab.c.]
The kmem_cache_sizes_init() function finishes the SLAB subsystem initialization started by
fork_init() [kernel/fork.c.]
Fork_init() initializes the kernel's max_threads and init_task variables. This information is used by the kernel during fork() system calls.
proc_caches_init() [kernel/fork.c.]
Proc_caches_init() initializes the SLAB caches used by the kernel. This is analogous to initializing
malloc()-style heaps in a user program.
vfs_caches_init() [fs/dcache.c.]
Vfs_caches_init() initializes the SLAB caches used by the kernel's Virtual File System subsystem.
buffer_init() [fs/buffer.c.]
Buffer_init() initializes the kernel's buffer cache hash table. The buffer cache holds blocks of
adjacent disk data, and is used to improve the performance of reads and writes to hard disks and other
slow media.
page_cache_init() [mm/filemap.c.]
Page_cache_init() initializes the kernel's page cache subsystem. Page caches hold streams of file
data, and help improve performance when reading and writing user files.
signals_init() [kernel/signal.c.]
Signals_init() initializes the kernel's signal queue. Signals are a form of interprocess
proc_root_init() [fs/proc/root.c.]
Proc_root_init() initializes Linux's /proc filesystem, and creates several standard entries like
/proc/bus and /proc/driver.
ipc_init() [/ipc/util.c.]
Ipc_int() initializes the resources that implement SystemV-style interprocess communication,
including semaphores (initialized in the subfunction sem_init()), messages (msg_init()) and shared
memory (shm_init()).
check_bugs() [/include/asm-i386/bugs.h]
The check_bugs() function is where host-specific code can check for known processor errata, and implement workarounds if possible. Some implementations of this function check for FPU bugs,
opcodes that are not supported by the whole processor family, and buggy opcodes. Check_bugs() also usually calls identify_cpu(), to detect which version of a processor family is in use. For example, the x86 kernel's identify_cpu() can identify and apply runtime fixes for Coppermine, Celeron, and Pentium Pro/II/III processors, as well as chips from non-Intel vendors like AMD and Transmeta.
smp_init() [init/main.c.]
If the host machine is an SMP-capable x86 processor, smp_init() calls IO_APIC_init_uniprocessor() to set up the processor's APIC peripheral. For other processor
families, smp_init() is defined as a do-nothing.
rest_init() [/init/main.c.]
rest_init()spawns a kernel thread init(),which later on execs the init process, & unlocks the kernel. Remember we have already set our selves as idle thread, now is the time to run the idle loop that is just to consume the CPU when no one else is eligible to run. We try to conserve power while we are in this thread. But if a power management routine is not available we settle down on a simple HLT.
Init() completes the kernel's boot process by calling do_basic_setup().scheduling is enabled, the standard input, output and error streams are created, and prepare_namespace() is called to mount the root filesystem.
With the root filesystem in place, init() calls free_initmem to the free the memory used by the initcalls. Then opens /dev/console runs execve() to launch the program /sbin/init, if it exists. If a valid program name is provided with the init= programname command line option,
init() will execve() that program instead. If a suitable startup program cannot be found (the kernel also tries "/bin/init" and "/bin/sh"),If unable to exec the kernel panics and halts.
Frees the memory used by the initrd image,after is is extracted & converted to a ramdisk.
The machine is now initialized. None of the devices have been touched yet, but the CPU subsystem is up and running, and memory and process management works .Now we can start initializing some other stuff.
Initializes the driver model by registering all the subsystems.
do_initcalls() [/init/main.c.]
Do_initcalls() runs the list of functions registered with the __initcall attribute, which usually only applies to compiled-in kernel modules and device drivers. The __initcall attribute eliminates the need for a hand-maintained list of device driver initialization functions.
The __initcall mechanism works by creating a constant function pointer in a memory section called .initcall.init, that points to the initialization function itself. When the kernel image is linked, the linker organizes all of these function pointers into a single memory section, and do_initcalls() invokes them in the order they appear there. At the end of this function it calls "flush_scheduled_work" just to make sure there is no pending stuff from the initcall sequence, because we will soon be freeing the initmem.
The kernel has currently 3 ways to mount the root filesystem:
a)All required device and filesystem drivers compiled into the kernel.In this case we don't nedd an initrd image. Init() will call prepare_namespace() to mount the final root filesystem, based on the root= option and optional init= to run some other init binary .
b)Some device and filesystem drivers built as modules and stored in an initrd. The initrd must contain a binary '/linuxrc' which is supposed to load these driver modules. It is also possible to mount the final root filesystem via linuxrc and use the pivot_root syscall. The initrd is mounted and executed via prepare_namespace().
c)Using initramfs. The call to prepare_namespace() must be skipped. This means that a binary must do all the work. Said binary can be stored into initramfs either via modifying usr/gen_init_cpio.c or via the new initrd format, a cpio archive. It must be called "/init". This binary is responsible to do all the things prepare_namespace() would do.
To remain backwards compatibility, the /init binary will only run if it
comes via an initramfs cpio archive. If this is not the case, init() will run prepare_namespace() to mount the final root and exec one of the predefined init binaries.
When using initrd, the system typically boots as follows:
1)the boot loader loads the kernel and the initial RAM disk
2)the kernel converts initrd into a "normal" RAM disk and frees the memory used by initrd
3)initrd is mounted read-write as root
4) /linuxrc is executed (this can be any valid executable, including shell scripts; it is run with uid 0 and can do basically everything
init can do)
5)linuxrc mounts the "real" root file system
6)linuxrc places the root file system at the root directory using the pivot_root system call
7)the usual boot sequence (e.g. invocation of /sbin/init) is performed on the root file system
8)the initrd file system is removed
mount_root() [/fs/super.c.]
Mount_root() tries to mount the root filesystem. The identity of the root filesystem is provided as a kernel option during boot, which in workstation environments is typically the hard disk device and partition containing the system's root directory. Linux can mount root filesystems from hard disks, floppies, and over a network NFS connection to another machine. Linux can also use a ramdisk as a root filesystem. Mount_root() will try one or more of these sources before giving up and causing a kernel panic.
Now we have completed the initial boot up, and we're essentially up and running. So we'll get rid of the initmem segments and start the user-mode stuff. set the system state to SYSTEM_RUNNING. Open the initial console "/dev/console"
Now is the time to start the init process. We will try different binaries like "/sbin/init", "/bin/init" , "/etc/init/" or "/bin/sh". If nothing is found we give up saying
"No init found. Try passing init= option to kernel.".
The program /sbin/init is the parent of all user processes, process with the PID as 1. Init's job is to create other user processes by following the instructions found in the file /etc/inittab. Technically, the kernel itself has completely booted before init runs— it has to, since init is a user process. Despite this, most consider init to be "part of the boot process".
A typical entry in the inittab file looks like "si::bootwait:/etc/init.d/boot".The significance of each files in this entry.
id unique identity for that entry
rstate run level in which the entry will be processed
action tells init how to treat the process specifically
process what process will be started
At any given time on a Linux system, certain base sets of processes are running. This state of the machine is called its Runlevel, and it is denoted with a number from 0 through 6. The system spends most of its time in a single runlevel. However, when you shut the machine down, init switches to a different runlevel in order to terminate the system services in an orderly fashion and to tell the kernel to stop.
The different runlevels are
0 > This level is used for halting the system. The only valid service for this level is the script halt, which is linked into /etc/init.d/rc0.d/. The script halt executes /etc/init.d/halt.local. special system issues for halt or reboot should be added there.
6 > This level is used for rebooting the system. The only valid service for this level is the script reboot, which is linked into /etc/init.d/rc6.d/. The script reboot executes /etc/init.d/halt.local. Specials system issues for halt or reboot should be added there.
S > This mode is used to switch from boot phase into single user mode. The last valid service for this mode is the script single, which is linked into /etc/init.d/rcS.d/. In this mode you have only one console.
1 > Accordingly to the Linux Standard Base (LSB) specification this runlevel is used to switch from normal runlevel into single user mode. This is different from former SuSE Linux versions!
2 > The run level 2 is without remote networking. Note that on some other systems this is identical with the single user mode. This run level can have more than one virtual console.
3 > The run level 3 is with network. This run level is for server stations not automatically running X.
5 > The level 5 is with network and xdm(1). You should have a configured and perfectly running X Window System for this work station run level.
4 > The run level 4 is not used.You can configure it your own way & get a customized reunlevel .
SuSe 9 conforms to the Linux Standard Base (LSB) for the whole initialization phase: the usual /etc/inittab defines what to execute at the different run-levels of the system, in /etc/init.d are stored all the startup and shutdown scripts for the various services, which are managed by the symlinks in the /etc/rc.d/rc.runlevel directories.
An useful sample file for building own startup scripts is /etc/init.d/skeleton which provides all the references and a base structure for a fully integrated script.Most of the startup options can be set editing the files in /etc/sysconfig .Some scripts are always executed at the startup (except when operating in emergency mode), before entering any runlevel:
the first script which is started from inittab .
Within the inittab, there is a line for every run level that starts the script /etc/rc.d/rc, passing the run level as an argument . The /etc/rc.d/rc script, after a little housekeeping, then starts the scripts for that run level. For each run level, there is a directory underneath /etc/rc.d, such as rc3.d, which contains the scripts that will be run for that run level.
In single user mode, /sbin/sulogin is invoked. When entering single user mode, init initializes the consoles stty settings to sane values.
For multi-user modes depending upon the runlevel a "getty " is spawned which will give you the login prompt. [3:2345:respawn:/sbin/mingetty tty3.]
We have seen the journey of a linux system right from power on to your login prompt.
This document has tried to throw some light on each every step that followed in the whole process. Mainly the Linux kernel source [2.6.9] was used for the investigation.
Still there are some topics, which were not dealt in details; the forthcoming versions of this document would surely be aimed at a through analysis of those.
Credits: I have used a couple of images (first few) from another document about the linux boot process, <insert linke here> The code flow and functiona call graphs are froma trial version software. next version I am planning to generate these graphs by using GraphViz.


text:
Ray Metzker Photographs
"There's kind of a duality in me: on the one hand I started out dealing with events, the description of the street, the description of the city, description of situations people find themselves in, people relating to themselves. Let's call it the visible. But there's something else in me that wants to deal with the other side. The results may be read as visual mysteries. I think that's a very strong pull." -- Ray Metzker
Ray Metzker ('53), born September 10, 1931, in Milwaukee, has been interested in photography since the age of thirteen when he purchased a Kodak developing kit. It was natural for him to pursue a degree in art at Beloit College where he was influenced by faculty members Clark Fitz-Gerald, John Rembert, and Frank Boggs. While a student and after graduation, Metzker was employed by the Beloit College News Service to photograph campus events.
This online exhibit is dedicated to this beginning where Metzker experimented with line, form, and light to create truly inspired and unusual public relations photographs while working for the News Service from 1951 to 1953. Unlike typical publicity photos, Metzker's work shows the force of his talent. Most interesting is his willingness to cut off faces or use unusual angles to achieve interesting pictures. His work leads the viewer into a frame or a moment in the life of Beloit College, capturing the essential flavor of life in the early 1950s.
Metzker's work is marked by the high contrast between the black background and the subject as well as his fascination with the juxtaposition of linear elements with non-linear. These elements are also visible in his news service works.

subset: commoncrawl


text:
More than 150,000 book lovers flocked to the tenth annual National Book Festival held September 25, 2010, on the National Mall. President Obama and First Lady Michelle Obama acted as honorary chairs of the free festival, which was sponsored by the Library of Congress. For many families, the most popular tent was the Pavilion of the States, supported for the ninth year by the Institute of Museum and Library Services (IMLS).
The Pavilion of the States salutes the literary traditions of the 50 states, the District of Columbia and the U.S. territories. Representatives from state libraries and Centers for the Book provided information and answered questions about their state's authors, libraries, book festivals, book awards, and reading-promotion activities. Thousands of children raced to each state table getting state stamps on their maps of America. IMLS awarded a prize to each person who successfully filled the entire map.
"The National Book Festival is a highlight of our year. We celebrate books and literacy with state librarians and other state representatives who are staffing the pavilion and have the honor of meeting visitors from all over the world. We especially love seeing the children and their families excited about reading," said IMLS Acting Director Marsha L. Semmel.
Hundreds of visitors stopped by the IMLS table to nominate their favorite library or museum for the National Medal for Museum and Library Services, the nation's highest honor for those institutions that provide exceptional community service.
To learn more about the National Medal, visit www.imls.gov/medals. For those who were unable to attend the festival, authors' presentations are available as podcasts at www.loc.gov/podcasts. Click here to see photos taken at every state library table: http://www.imls.gov/news/2010/092810c_photos.shtm


text:
CRESTVIEW � A Crestview High School senior who is dual-enrolled at Northwest Florida State College is the Crestview Area Chamber of Commerce's Foy Shaw Scholarship�s first recipient.
CRESTVIEW � A Crestview High School senior who is dual-enrolled at Northwest Florida State College is the Foy Shaw Scholarship�s first recipient.
Natalie Wakayama � introduced May 2 at the Crestview Area Chamber of Commerce's monthly breakfast � plans to continue studies at Northwest Florida State. She intends to graduate with an associate degree in December and then major in sociology at another college or university.
The chamber�s Education Committee administers the $1,000 scholarship named for the late Foy Shaw, a founding chamber member and a strong proponent of education.
Natalie impressed the committee with her personality, clearly articulated goals and community involvement, Education Committee chairwoman Dr. Pam Meadows said.
In addition to maintaining high scholastic standards, Natalie volunteers in her church's nursery and sings with the high school chorus.
"She's also a third-degree black belt in taekwando," Meadows said. "She had a real good application. She's a neat kid."
Natalie thanked the chamber "for this incredible honor" after she was presented the scholarship by Meadows and chamber President Karen Hardell.
The Foy Shaw Scholarship
The Crestview Area Chamber of Commerce's Education Committee administers the scholarship named for the late Foy Shaw, a founding chamber member.
Money from a 50-50 split game at monthly chamber breakfasts and personal donations fund the scholarship, said committee chairwoman Dr. Pam Meadows.
"We have some real generous people who are chamber members," Meadows said. "If we get real lucky, we might be able to give two (scholarships) a year away."
Meadows encouraged rising seniors at Crestview, Baker and Laurel Hill high schools to apply for the scholarship. Students planning to pursue technical or trades certification also may apply, she said.
Contact News Bulletin Staff Writer Brian Hughes at 850-682-6524 or email@example.com. Follow him on Twitter @cnbBrian.


text:
We sell many different types of garage doors in Dunmow and can automate them too. By automating your garage door, you can make things a lot easier for yourself. Do not be put off the idea by thinking that to go automatic means you have to completely replace your existing garage door.
We have the means possible to convert and automate most existing garage doors in Dunmow, giving you added convenience without having to go through a whole replacement procedure on your current garage door.
By automating your garage doors in Dunmow you are adding convenience, security and practicality to your home. Who wants to keep getting in and out of the car to manually open the garage door each time you come and go? Add horrible weather/darkness to the equation and you can already picture the benefits of adding Automatic operation. The best thing you can do with manual garage doors is having them automated. With a lot of garage door models, this can be done as an aftermarket upgrade.
With most models you will get a clear path into your garage and will be able to open and close it with a hand transmitter from your car. Please get in contact with us to discuss automatic garage door systems in Dunmow and the different options available to you.


text:
Follow RFF News on your cell phone. Text follow rff to 40404 you will receive txt messages with RFF News
0 Members and 1 Guest are viewing this topic.
Exactly, TexasLady. I want to know what happens next!
I'm disappointed...next week's previews showed the couple to be on opposing teams, and their relationship is mainly one of the reasons why I'm still watching the episodes. And whatever funny things Frank or James say. They crack me up.
This season just gets lamer all the time, it is almost as if they don't care what they preview. I thought both of the halftime shows were dull. I had to think what this week's challenge was, soap opera drama... Other than Heidi who has gotten good coverage, I really can't think of anyone who stands out as they did in previous years.
Page created in 0.065 seconds with 33 queries.


text:
KANSAS CITY, Mo. — Jovan Belcher's mother begged her son's dying girlfriend to stay alive while frantically asking for an ambulance shortly after the Kansas City Chiefs linebacker shot the mother of his 3-month-old daughter, according to a recording released Wednesday of the emergency call.
Belcher, 25, shot 22-year-old Kasandra Perkins at their Kansas City home Saturday morning, then drove to Arrowhead Stadium, where he shot himself in the head in front of Chiefs general manager Scott Pioli and Coach Romeo Crennel, police said.
"She's still breathing but please hurry," Cheryl Shepherd says on the recording of her call with Kansas City emergency dispatchers. "I don't know how he (inaudible), they were arguing, please hurry."
Shepherd also is heard encouraging Perkins to stay alive.
"Stay with me, the ambulance is on the way. Stay with me Kasandra, stay with me," Shepherd yells.
Shepherd told dispatchers that Perkins was bleeding, "just barely" awake and that it looked as though she was wounded in the back. She said Perkins moved when she spoke to her.
When a police dispatcher asked about Belcher, Shepherd says only: "He left."
When police arrived at the couple's home at about 7:50 a.m., they found Perkins' body on the floor of the master bathroom with multiple gunshot wounds, according to a police incident report.
Friends have said the couple had a strained relationship in the weeks before the shooting.
Hours before the murder-suicide, police found Belcher sleeping in his car outside an apartment complex about 10 miles from the home he shared with Perkins and their child. He told officers he was at the apartment to visit a woman he described as his girlfriend, but that she wasn't home. Belcher then made a phone call and a woman let him into the building, police said. Police did not question the woman and said they don't know who she is.
Belcher and Perkins lived apart recently but got back together by Thanksgiving, friend Brianne York told The Associated Press.
At Arrowhead, Belcher thanked Pioli and Crennel for all they had done for him. The men tried to persuade Belcher to put down his handgun but when police arrived, Belcher moved behind a vehicle, knelt down and shot himself once in the head, police said.
Belcher's mother has been given temporary custody of the child.
Local roundup: Gardiner boys basketball gets past Nokomis
Numbers, quality of play on the rise in Unified basketball
Varsity Maine
Skiing: Maranacook Waves held at Quarry Road Trails in Waterville
Bowdoin holds off Colby men's basketball
Nation & World
Trump salutes 4 Americans killed in Syria


text:
Vigo 8 oz. Jasmine Fried Rice Display
Fried rice is a familiar element of Asian cuisine. Oftentimes a complete meal, fried rice refers to a combination of cooked rice and other ingredients that are common to an area resulting in a variety of styles and flavors. Vigo Jasmine Fried Rice is an easy to prepare adaptation of an Asian classic. We start with fragrant Jasmine rice and add green onions, carrots, garlic and a bit of soy sauce for a savory, flavor-packed dish. Add chicken, pork or shrimp for an easy one dish meal.
Product Specifications
Product Info
- Country of Origin: USA
- Packed in: USA
- Best By Date/Location: MMDDYYYY; Under the flap on the back side
- Serving Suggestions:


text:
|diyAudio Store
|Today's Posts
|Mark Forums Read
|DIY HiFi Supply Parts and Kits from Diy HiFi Supply
|Thread Tools
|Search this Thread
|16th December 2009, 08:33 AM
diyAudio Member
DHT OTL Linestage - Tram 2
What do DHT (direct heated triodes) REALLY sound like? Yes we've heard VT25, 45, 2A3, 205d, 300B etc in many an amplifier, enshrouded by driver tubes and output transformers. And we can plainly hear the differences between DHT types in that context, tainted though the sound must be with so many extraneous elements.
The only way to really hear the sound though is to go spud. And what better place to do that than right at the beginning - the linestage. Many will say that the linestage contributes more than the amplifier, so...
UX4 sockets: this would allow 10/10Y/VT25, 26, 45, 71A, 2A3, 801A/VT62, 300B, 101D, 205D if we can design in enough control to supply the variety of filament, and B+ voltages needed. Used spud we'd have a friendly gain structure of between 9 and 18db. Most have lowish anode impedance; no transformer needed as in the range ideally suited for preamp duty. So...OTL it is!
With adjustable CCS for the anode we can control the anode current. Easy done.
Since this is an all-out attempt to hear the real DHT, and all of it, we don't want un-necessary caps in the signal path. So let's go fixed bias, thus avoiding the cathode bypass cap. To make this easy we have our ABS module feeding the grid which can be set with one resistor for the desired operating point.
Power supply: to stay with the theme lets use a DH rectifier tube.
We don't want ANY electrolytic caps blowing smog into our sonic landscape so we will let the all film-cap FCUPS module provide the P:USH power we need. This has the added advantage of supplying the bias voltage needed by the ABS and bonus: jumper setting for virtual battery or virtual choke operation. And it is super quiet.
The filament supply also needs to be quiet, be a brick wall to the signal (DHT, remember?) and be adjustable: DIYHFS filament supply just happens to be on our shelf.
Transformer noise will be an issue so let's order a potted (3mm steel) torroid which has the advantage of radiating EMF axially thus avoiding noise in the chassis. Our goal is to do this all on one chassis. We'll mount tx forward, to keep it away from the signal end of the chassis.
We'll need one pair of 2.2uf/250v coupling caps for output and 1 pair 0.1uf on the input grid.
Chassis will be the Projekt Box, also at hand.
Layout will look something like the attached.
Here we go!
Disclaimer: I may or may not offer for sale items mentioned in this thread, and if I do, I may or may not make a profit.
Last edited by bcherry; 16th December 2009 at 08:35 AM.
|1st February 2010, 06:39 AM
diyAudio Member
Join Date: Apr 2004
Location: pampanga
how did the project go?
|2nd February 2010, 04:00 AM
diyAudio Member
DHT OTL Linestage - Tram 2 - Update
I'm getting quite a few emails asking for updates on the Tram2:
We're pretty well there. The current design will grow one more tube, a 6AS7. This will allow us to expand the range of DHT that can be used without major circuit changes. As seen here we can change 2A3 and 45 on the fly.
Microphonics was a big problem early on but this has been solved using floppy tube socket mounting and selectable output gain, 12, 3 and -6db gain, as well as a few other tricks. I think most tubes can be used. The first build could only use a pair of NOS 45's we have. With all others it was the Gong Show. All the new manufacture 2a3/45's have much larger glass bodies than NOS and support the filament with spring tension and so ring like Big Ben at noon. The Shuguang 2A3 were the worst - looks like pen springs used. But now we are able to use every tube we've tried - about 8 different types including Shuguang, TJ, and NOS types.
Also selectable ouput gain means linestage gain can be matched to speaker efficiency.
You can see we've made good use of the Technology Bites Series of modules we sell.
Noise was solved using a very low noise filament supply implementation.
We've used the ABS (auto bias system) to safely exploit the benefits of fixed bias. This allows getting rid of the cathode capacitor and using a single low value, high quality resistor on the cathode. At the linestage level, these design touches are very noticeable, more so than down the signal chain.
The FCUPS (Film Cap Universal Power Supply) supplies the DHT B+ which also uses a CCS for the anode load. This might seem like overkill for a linestage but if we want a big sound we need big tubes and big power supply. The FCUPS does everything the original Tram regulated power supply did -- and more. The DIYHFS theme song is: No Electrolytics! so we use film caps as much as possible.
The for sale version of the Tram2 will have an option for the UVC (Universal Remote Control) with 126 steps and 6 inputs (if we can find enough space on the back panel).
So what are we waiting for?
Transformers. Soon as we get them in stock we will do the build, shoot the pics for the manual and list them. Price to be fixed later when all costs are in.
Oh yeah, the sound: This is No Sacrifice Sound. The last 7 years I've gone back and forth between TVC and active; each has its merits. But the Tram2 does it all. Huge dynamics with all the inner detail and transparency of TVC.
This is The One!
Disclaimer: I may or may not offer for sale items mentioned in this thread, and if I do, I may or may not make a profit.
Last edited by bcherry; 2nd February 2010 at 04:03 AM.
|9th April 2010, 06:10 AM
diyAudio Member
Wham! Bam! it's the Tram 2 - DHT OTL Linestage
It's done!
The guided tour:
Back: 2 tubes are the Direct Heated Triodes - 2A3 or 45 plug and playable without any circuit changes.
Middle: left tube is the Super Mu 6AS7 and right is the 5U4 rectifier
The tube sockets are mounted in a subplate which is compliantly mounted to the chassis. Rapping on the chassis produces no audible feedback.
Front: the power transformer. From our 98db speakers we can hear just a little tube rush from the 2A3. No hum.
Front panel: Remote controlled selector then power switch left, 120 step volume control on the right. Selector has 5 inputs (also additional inputs for REC on back panel)
Back panel: 6 prs RCA inputs and 3 prs outputs, +6, 0, -6db (this can be changed internally) for system matching which is absolutely necessary to marry DHT and high efficiency speakers.
Inside the chassis: Will post pics next report but power supply is FCUPS and all film cap (big L small c). Ultra Low noise Filament Supplies on the 2A3/45. Auto bias Supply controls the DHT. Etc Etc.
On the bench we get extremely linear and low distortion test results.
OK more later.
Disclaimer: I may or may not offer for sale items mentioned in this thread, and if I do, I may or may not make a profit.
|12th April 2010, 06:08 AM
diyAudio Member
Bottom View
The concept couldn't be more simple: Use direct heated triodes for linestage duty. Put some signal on the grid, heat the cathode, add B+ to the anode and voila! What could be easier? Works for DHT amplifiers, and parts count is low.But put a DHT into a linestage where signal levels are in the mv range and we crash into noise, microphonics, noise, possible impedance issues and more noise.
Noise can come from power transformer, filament supply, B+, poor grounding, bad layout, not to mention proximity to outside sources of noise.
The Tram 2 starts with good layout. We wanted a single chassis solution together with power transformer. So transformer at the front, triodes at the back close to input/output connections. Tube rectifier and 6AS7 closest to the transformer.
B+ is supplied from the ultra low noise film cap power supply module and the cathode supply comes from our filament supply module with added capacitance.
Microphonics must be the middle name of the triode family. We already encounter this in amplifier position, but in a linestage -- talk to your triodes and maybe your speaker talks to you! All slight to jarring level vibrations will mess up the clarity of the sound. Everything around us resonates and thus vibrates.
The Tram 2 mounts the triodes on the 3mm tube subplate which is in turn mounted to the chassis with compliant isomount standoffs. Knuckle rap on the chassis doesn't transfer so we've done well.
The other factor is system gain. High sensitivity amplifiers and speakers will feedback through the tubes and exacerbate microphonics. So we have provisioned 3 outputs: +6db, -3db and -12db. The user needs to select in system but in general: amplifiers with input sensitivity of 2 to 6v would match +6db outputs; 0.7v - 2v amps: -3db outputs; below 0.7v amps: -12db outputs.
Of course this impacts on impedance so it requires finesse. The Tram 2 can comfortably handle amplifier loads down to 2k ohms.
Result: through our in-house Crescendo speaker system, 98db/w (100db/2.83v/1m in room) we get no hum, just a little tube rush.
We'd originally planned to use a choke to load the anode of the triode but that would push us to a 2 chassis linestage and potentially more noise pickup. So we instead used a 6AS7 together with CCS to load the anode. Result is very low output impedance and very high anode load. The effect is as a super mu follower.
Why DHT OTL linestage?
DHT sound better. On the test bench we get very low noise and very low distortion. What little distortion is there, is of the single ended type which many feel to be consonant with the sound of music.
The Tram 2 as presented can use either 45 or 2a3 types. With some tweeking to the circuit 26, 71, 27 and 56 (non-DHT) can also be used.
One thing to note: as with a formula class racing car, with a DHT linestage we are going for ultimate performance and so give up a few niceties. Care needs to be taken to place the Tram 2 away from noise sources from other gear such as big torroids.
Tube selection is important. NOS and ST types generally have less microphonics. We've tried with NOS 45/2A3, TJ meshplate 45/2a3 and carbon/meshplate plate globe types and Valve Art 2A3 single and double plate. Overall the ST types were less noisy. The big globes tend to be more microphonic; ditto for some of the new production types with coil spring tensioners for the grid wire.
What you get is very low distortion, linear output with all the tonality offered by direct heated triodes as close to the source as possible.
DIY - Done Right!
Disclaimer: I may or may not offer for sale items mentioned in this thread, and if I do, I may or may not make a profit.
|12th April 2010, 02:08 PM
diyAudio Member
On the Bench
Frequency response: better than ±0.5dB 20Hz - 20KHz
S/N Ratio: > 93dBA
All measurements referenced to +18dBu (6V), +10dBu (2.45V) and +2dBu (1V) for the respective outputs
All measurements taken with Sovtek 2A3 and vary with tubes employed
Disclaimer: I may or may not offer for sale items mentioned in this thread, and if I do, I may or may not make a profit.
|15th April 2010, 11:58 PM
diyAudio Member
Join Date: Apr 2010
Hi I have been reading your updates and am thinking about building this. I use bastanis open baffles and run the sub woofer off my current pre out - would this be possible with this amp i.e. can I take a parallel output.
|16th April 2010, 05:59 AM
diyAudio Member
The Tram 2 can comfortably drive loads down to 2kohm
Have you tried driving the subamp from the speaker out of the amp through a dropping resistor into the low level inputs of the subamp> When we had the Prometheus we found it gave the best sound. Also that way the subs see exactly the same signal as the main speakers, and impedance is no longer an issue.
Disclaimer: I may or may not offer for sale items mentioned in this thread, and if I do, I may or may not make a profit.
|16th April 2010, 08:54 AM
diyAudio Member
Join Date: Apr 2010
I have not tried driving the subamps that way - i will think aout it. My preamp (home made) has 2 outputs, one essentially an anode and one a cathode follower - this seems to drive the speakers well.
thanks for the reply.
|2nd August 2010, 06:34 AM
diyAudio Member
Grand Slam for the Tram2
Enjoythemusic has just posted the world's first review of the Tram2.
This was a very well conducted review. The reviewer understood exactly the point of a DHT linestage its care and feeding. Please note the 'Fettling Guide'
Have a read here
We've finally sourced a compact remote control which we will program and make available as an option.
Some notes about tubes: NOS sound rich but difficult to get a pair quiet enough for linestage use. With the Herbie guitar dampers, Tj and other modern production 2A3/45 can be used. Note re EML that tube pins 2/3 are oversized compared to NOS spec and will damage teflon tube socket pins grippers. We have both EML 2a3 and 45 here and that is our experience.
Disclaimer: I may or may not offer for sale items mentioned in this thread, and if I do, I may or may not make a profit.
|Thread Tools
|Search this Thread
|Similar Threads
|Thread Starter
|Last Post
|C3M linestage
|Tubes / Valves
|23rd August 2009 09:53 AM
|C3m linestage
|Tubes / Valves
|14th April 2009 07:03 AM
|48V B+ linestage
|Tubes / Valves
|11th May 2008 06:57 PM
|Another linestage......
|Tubes / Valves
|28th June 2005 06:34 PM
|:: linestage [Bryston B60] ::
|Solid State
|26th September 2002 04:32 PM
|New To Site?
|Need Help?


text:
Nov. 21, 2006
Lipscomb softball coach Kristin Peck has announce the signing of Megan Rottler from Ste. Genevieve, Mo.
Rottler is a shortstop, but can also play other roles in the infield or outfield. She is expected to contribute in the outfield for the Lady Bisons. She bats and throws right-handed.
She has been homeschooled. Her summer softball team is the St, Louis Sluggers. Her accomplishments with her travel team are lengthy.
In 2002 she was named Outstanding Defensive Player in the USSSA World Series.
In 2003 she played with the 14-U St. Louis Sluggers, batting more than .300 for the season. Her team played in the AFA Nationals and finished ninth in the Pony Express Nationals. She also played for the 18-U St. Louis Sluggers team in 2003.
She batted .380 for the Sluggers 16-U team in 2004. The team finished 17th in the AFA Nationals. They also played in the ASA Nationals. Rottler was against added to the Sluggers 18-U roster, playing third base, shortstop and the outfield. She participated in the Kirkwood College Exposure Tournament and the Ronald McDonald College Exposure Tournament. She also played second base in Houston, Tex,, for the Missouri Renegades 18-U Gold Team.
Rottler played for both the 16-U and 18-U Sluggers teams in 2005. She played in the Colorado Fireworks College Exposure Tournament. She also played in the 18-U Gold Nationals in Salinas, Calif. and played second base for the 18-U Gold Missouri Renegades. In the AFA 16-U Nationals in Olatha, Kans., the Sluggers finished 17th.
In 2006 she played for the Illinois Southern Force. "I chose Lipscomb because it is an NCAA Division I program and a Christian school," Rottler said. "I really liked the campus."
She is the daughter of Christine and Steve Rottler.


text:
New Year's Resolutions
by Shelly Hazard
It's traditional on New Year's Eve to announce your New Year's resolutions, those things that you're going to do better or more of during the new year. The four couples who met at Mark's place for New Year's eve made no exception to this tradition. Each couple announced their resolutions for the New Year, vowing that this year, they would do them. To help them with this goal, each made their resolution a specific, achievable goal, rather than the ethereal "I'll do more" kind of resolution. Determine the full name of each couple and the New Year's resolution each couple announced.
1. Tom and his wife were determined to take their kids camping during the summer this year.
2. Mr. Club, who wasn't Greg, announced that they were planning to exercise at least twice a week. Martha wasn't married to Mark.
3. Sam didn't plan to buy a new home. Carol Diamond didn't plan to lose 30 pounds.
4. Greg wasn't married to Sara.
5. Each couple is represented by: Mr. and Mrs. Spade, the couple who plan to buy a new home, Paula and her husband, and Tom Heart.
6. Sam Spade wasn't married to Sara.
If you enjoyed this puzzle and want to play another one online,
here for another online logic problem.
|Play Previous Logic Problems


text:
This was (and still is) a great game. I retrieved nine poker chips from caches I hadnt found yet, and by revisiting about a dozen other caches. The tenth chip and the one that completed the sequence of seven I got trading with polarbeardiggers after he beat me to it at Tree Eating Rock. Id been only trading one to one poker chips for poker chips, but as PBD wasnt collecting the Stuntman treasures, he was happy to get his first MBGA GeoCoin (the Queens influence, I think). The big thanks goes to Lizardo though, because I couldnt have got the run of seven without trading some poker chips thatll hopefully help his hand.Mischievous maneuvers by The Stuntman kept the game interesting and tracking down coins found by other players made it an entertaining and very social game. Now I know I want the Queen to represent me when it comes time to negotiating my next raise! I spent many hours following logs and even developed a spreadsheet to track it all.Thanks Stuntman!PS, the 9 through 15 are dead, but I've still got three other coins to trade - the 7, 23 and 28.
Congratulations Turtle-Man!!
You should keep the ones you've got and see if you can win again!!!
The game is not over yet folks. Still a second and third prize left to be won.
Congrats to Turtle eggs For winning with the first Lucky 7 sequence.
He has chosen the hand crafted wooden padlock by Peter Mclure.
The remaining prizes are;
2nd place A pair of FRS hand held two way radios
Finally a Multi peice geocaching starter kit.
Here is the first prize winner of Lucky 7 Tim aka TurtleEggs
Sorry for the poor image quality.
Tim, you look like one of those reporters from Baghdad on a satellite phone. Is that the lock from Saddam's hidey hole?
Seriously, congrats buddy! You deserve it. You're the best. You rule! Go Turdleeggs Go!
Now find ME a chip! Pleeeeeeeaassse!
Ive been meaning to post these pictures for a while now. This wooden lock created by Peter & Gloria is amazing! Its beautifully crafted and finished, the key turns smoothly and shackle has a very solid feel to it. The lock is larger than I expected at 20.7 x 11.5 x 5.8 cm. Thanks Stuntman for this generous prize and Peter & Gloria for creating this work.
Don't give up people there are still two prizes left.
A pair of FRS 2-way radios and
A geocaching starter kit. Complete with a container, stickers, a travel bug, duct tape, ect...
Good luck The-Stuntman.
Oh, I haven't given up. But I am quite excited about some of this snow going away! Gives me some more targets.
We ran in to CarBellSeekers today, and they were telling us how they found this cool poker chip with a number 36 on it!
Does the number 31 mean anything to someone? When its attached to a Stuntman poker chip!? There it was in Grateful Stash today (you were a couple of months too early, Lizardo) begging for a new home.
OK. I'm tired. I admit there are a few of Turdles chips here I have traded for as well as MHz's coveted 42. But this represents alot of digging and dealing. Thank you Stuntman for a cool game that I hope will be revisited again.


text:
DURHAM — Consistency was key for the Oyster River High School girls swimming team during the Division II championships on Sunday afternoon.
Without the benefit of an individual title to their credit, the Bobcats won the Division II championship for the third time in five years on the strength of two key relay wins and a number of second- and third-place finishes at the University of New Hampshire's Swasey Pool.
The Bobcats finished with 215 points, followed by Hanover with 205 and Souhegan with 170. St. Thomas was 11th, Portsmouth was 14th, Coe-Brown was 18th and Somersworth was 25th. Oyster River won titles in 2009 and 2010 and was the runner-up in 2011.
"We knew this was going to be a really tight meet all the way to the end," Oyster River coach Bill Reeves said. "We had some things go well for us throughout the day. The girls prepared themselves really well."
Oyster River clinched the title on the last event of the day, the 400-yard free relay. The Bobcat foursome of Haley Jones, Charlotte Moore, Meaghan Shannon and Tessa Oakes finished in three minutes, 48.17 seconds, besting Hanover by sixth-tenths of a second.
"We were all really excited with how it ended up," Shannon said. "I'm just really happy we came in first. We weren't expecting this when we came into this season. That we all improved enough to get here is awesome."
Jones, Shannon, Oakes and Jenna Howland teamed for the Bobcats' victory in the 200 free relay, finishing in 1:47.09 and cruising past second-place Monadnock by more than four seconds.
"They were on fire today," Reeves said of the girls relay teams. "They really swam their hearts out. Each one did their best seasonal time. The relays are just so important to the overall team score. We knew it would come down to that, and whoever won that last relay would win the meet."
While none earned individual glory, plenty of Bobcats were near the top of the standings in a number of events.
Jones was second in the 200 free in 1:57.93 and second in the 500 free in 5:13.80. Shannon was second in the 50 free in 25.92 seconds and second in the 100 free in 56.72 seconds. Oakes was third in the 100 back in 1:03.00 and Lexi Nicol finished third in the diving competition.
"That consistency is what it really came down to," Reeves continued. "Everybody improved and moved up in their spots."
On the boys side, St. Thomas Aquinas boasted a double state champion in junior Sam Haines, who won the 200 IM in 2:04.14 and the 100 fly in 53.97 seconds.
"I've been building this up for the last few years," Haines said. "To do this in junior year is pretty awesome."
The Saints were second in the team standings with 170 points behind Souhegan's 196. Oyster River was fourth, Portsmouth eighth and Coe-Brown 14th.
St. Thomas junior Jack Gentes won the 50 free in a time of 22.92 seconds and was second in the 100 free in 50.25 seconds. Afterwards, he provided some bulletin-board material for the rest of the state.
"I love sprinting, so I'm pretty happy I got the 50," Gentes said. "The 100 was pretty close. It's great to come in second as a team, but you know what? We're going to come back harder next year. We're going to win it next year."
The St. Thomas boys relay team of Gentes, Haines, William Micali, Robbie Pollini and took the top spot in the 200 free with a winning time of 1:36.93.
It was a local sweep in the diving competition, as St. Thomas senior Signe Frick won her third straight state championship. Originally scheduled to be held separate from the rest of the swim meet, the snowstorm forced both events to be held concurrently, adding an extra challenge for the divers.
"It was really loud, but it worked out really well," Frick said. "It was strange running as the same time as the swim meet. We all had a good time doing it. I really wanted to keep the record going. It's too bad that there's no Meet of Champions, because it's always nice to compete against D-I."
Oyster River freshman Neville Caulfield won the title on the boys side, besting his only competition, Chris Beauchemin of Portsmouth. Caulfield enjoyed the distraction the swimmers provided.
"They allowed you to stop if a race was starting, but I actually found it easier," Caulfield said. "If everyone's stopped and watching you, it's a lot of pressure."
Other local swimmers with top-three performances included William Micali, who was third in the boys 200 free in 1:57.42; Oyster River's Matt Jones, who was second in the 100 fly in 54.45 seconds and Zach Wood of Coe-Brown, who was second in the 500 free in 5:16.03. The St. Thomas boys relay team of Gentes, Haines, Micali and Steven Hazeltine was second in the 400 free in 3:32.86.


text:
Mel1 needed a new logo design and created a contest on 99designs.
A winner was selected from 41 designs submitted by 15 freelance designers.
name is confidential
We are a hip, fun contemporary clothing company based in LA.
Right now we sell ladies' contemporary as well as girls/tweens. This logo would be for printing on shirts or accessories- scarves, bags- letterhead and labels, even advertisements.
We are a contemporary clothing company looking for a graphic design mascot/logo. Specifically, something along the lines of the Paul Frank's "Julius" or Marc by Marc Jacobs' "Miss Marc". We want this to be a girl-- fun, young, fashionable, hip, smart, beautiful, classy, a good role model. Think of a combination of Selena Gomez, Barbie, Bratz, and Miley Cyrus.
- The logo must look good large and small.
- We require both an Illustrator (.ai) as well as Photoshop (.psd).
Find out how a design contest works or learn more about our logo design services.


text:
Feb. 24, 2009
CAMBRIDGE, Mass. - Boston College edged out the MIT men's fencing team by three victories, denying it a chance of earning back-to-back New England Championship crowns last weekend. Benjamin Nield (foil) and Matt Gethers (epee) represented the Engineers on the medal stand, earning Silver and Bronze honors.
The foil team captured first place as Nield led the way with a total of 11-1. Daniel Levine finished fifth overall with a mark of 10-2 as Richard LaGrandier (9-3) ranked fourth in the "C" qualifying pool.
The epee race was tightly contested as MIT finished in a three-way tie for the top spot with Sacred Heart University and Vassar College. Gabriel Chan claimed sixth place, replicating Gether's record of 8-4. Carter Chang was the top performer in the "C" pool, compiling a mark of 10-2 and ranking 10th among all competitors.
Igor Kopylov (9-3) and Rangarajan Nadadur (7-5) placed seventh and eighth in the final standings en route to a fourth-place finish for the sabre squad. Maximilian Brand rounded out the contingent with a total of 10-2, good for 12th place.


text:
Fault Current Article Draws Manufacturer Response
January 1999's article, "Don't be felled by higher fault currents," presents a real situation of substation upgrade that sometimes doesn't have a simple solution. However, simply placing a current limiting, overcurrent protective device ahead of existing equipment doesn't really solve the problem.
The author's intent in this article is to protect a circuit breaker used in a circuit with a higher short-circuit current available than the interrupting rating of the circuit breaker. The method must protect the circuit breaker, conductors, and circuit components. No known calculation method addresses the many factors you must consider, including the current level at which the supply side device becomes protective, performance of the devices in equipment, and the dynamic behavior of the two overcurrent protective devices working together. A miscalculation in any one of these factors eliminates protection. The proposal outlined for the National Electrical Code (NEC) is to replace testing with calculations. This has not proven to be safe.
There is a rigorous series of tests applied to molded-case circuit breakers (MCCBs) used in series ratings. They appear in Underwriters Laboratories Standards for Safety, ANSI/UL 489 and 67. There are also rigorous tests applied to fused, low-voltage power circuit breakers (LVPCBs). These appear in ANSI/IEEE C37.13 and C37.27. Manufacturers who have products with these ratings know they are very expensive to attain and maintain. If a simple method of calculating a workable design with a current limiting device on the supply side existed, circuit breaker manufacturers would want to drop the series ratings and extensive test program in favor of the simpler method.
A method to "engineer" or calculate series ratings without testing has been explored for years. A common misapplied technique is the up-over-and-down method discussed in Fig. 3, on page 30 of the article. This method may have application where truly passive devices are applied. However, the misunderstandings of it are apparent from the extensive discussion over a proposal presented in the 1999 NEC revision cycle. The proposal deems any means to calculate series ratings by "engineering supervision" suitable if accepted by the AHJ. Any calculation method has limitations where circuit breakers are applied. Here are some of them:
Intermediate levels. Fused circuit breakers and MCCBs with series ratings are tested at levels just below the threshold of current limitation for the supply side device. This test is in addition to the test at the maximum short-circuit level. In the article example, 49kA was available with the upgrade. Threshold of current limitation is usually somewhere above 20 times continuous current rating, which would be 40,000A, for a 2000A supply side device. Even if we knew the system was protected for a 49,000A short circuit, we do not know performance below about 40,000A. Would "engineering supervision" know that?
Equipment. Behavior of devices considered individually (outside each electrical enclosure) are not necessarily representative of series conditions. Higher fault availability will generally produce higher peak current. Greater (magnetic) force is placed on the bus structure and insulating conductors than what the electrical equipment has been tested to accommodate. Additional electrical energy may also be delivered through the conductive path, resulting in electrical connection failure due to thermal stress.
Dynamic behavior. Dynamic behavior begins when contacts of the load-side device separate, not when clearing occurs. It's true some circuit breakers withstand several cycles of current for coordination. However, depending on the trip device settings, contact opening may occur considerably earlier. Without a detailed understanding of contact, mechanism and trip device behavior, an engineer cannot predict protection. Testing is necessary.
Load-side devices. Under the scheme addressed in the article, the whole system has been upgraded, but the solution is directed at only the switchboard closest to the transformer. Faults are most likely to occur at points closer to the loads. Neither the large current limiting device nor the large circuit breaker is likely to operate in time to protect devices and conductors on their load side. Adding a large current-limiting device will do little or nothing to protect the system down from the switchboard.
Well-meaning engineers applied cascade ratings without appropriate tools and testing. ANSI/IEEE C37.13 paragraph 10.8 recommends against cascade ratings. UL standards and the present NEC provide for series ratings, which are tested. Circuit breaker manufacturers do not know of a method that reliably and safely calculates series protection. Until such a method has been found that can be verified by test, short-circuit testing is the only way to engineer series ratings.
George D. Gregory, P.E.
Square D Co.
Cedar Rapids, Iowa
Author's Response
To begin, I know of no fuse or circuit breaker manufacturer that recommends using any engineering approach for selecting series ratings for modern circuit breakers that exhibit dynamic impedance. The industry seems to be in agreement. However, neither the proposed change to the Code nor the article suggests the use of the up-over-and-down engineering method for these modern circuit breakers. Both address the use of an engineering approach for circuit breakers that are passive (no mechanical action) during the first one-half cycle. Decades of safe field experience have shown when the load side circuit breaker is passive while the line side current limiting device is clearing the circuit, the combination can be safely engineered. The article suggests if the circuit breaker manufacturer cannot be reached to determine its passivity, testing labs are available to do so.
The writer points out the components on the load side of the circuit breaker need to be protected under the higher available short-circuit conditions. Absolutely! The engineer must review the short-circuit current ratings of the downstream components to assure they are not exceeded. In fact, the new last sentence of Sec. 110-10 now emphasizes you must research and investigate the product standards, to assure the components are applied within their short-circuit current ratings.
For example, BU 1-1994, the NEMA Busway Standard, states:
the short-circuit rating of busway, which is not marked for use with current-limiting devices, is established on a test basis of three cycles.
That means, it would be a Code violation for busway with a three-cycle rating to be protected by an overcurrent protective device that had a six-cycle short-time delay. It goes on to say:
Busway may be used on circuits having available short-circuit currents greater than the three-cycle rating of the busway rating when properly coordinated with current-limiting devices.
IEEE Standard 141-1993 (Red Book), Electric Power Distribution for Industrial Plants, states in 18.104.22.168:
It is the design engineer's responsibility to review the current-limiting fuse let-through current for selection of withstand ratings of equipment that has not been tested for a specific class and maximum size of fuse.
Quite possibly, you can find the best reference to backup the article's material in IEEE Standard 1015-1997 (Blue Book), Applying Low-Voltage Circuit Breakers Used in Industrial and Commercial Power Systems. Paragraph 220.127.116.11(d) states:
In cases where increases in available short-circuit current necessitate a system upgrade, a second approach, shown in Figure 4-4, may be used for retrofitting existing older systems where a recognized series rating is not available. A line-side current-limiting circuit breaker or fuse, which limits peak current and let-through energy, may be added only if the existing load-side breakers do not exhibit dynamic impedance within the first half cycle. The distribution of short-circuit energy is shifted away from the slower, load-side circuit breaker to the higher speed current-limiting device. The downstream circuit breaker is then subject to no more short-circuit energy than its rating. The manufacturer of the existing circuit breakers must be contacted to verify that they do not exhibit dynamic impedance.
You can find information on the intermediate level tests in Table 184.108.40.206 of UL 489. You can also look at a let-through chart to see where a fuse or circuit breaker starts to become current-limiting.
Finally, the last paragraph of Gregory's letter insinuates the article is suggesting we bring back the cascaded system. This couldn't be further from the truth. Cascaded systems were a bad design practice in the 1960s, and should never be utilized.
There is no method that the NEC currently blesses for engineering protection of older systems, which have available fault current in excess of the circuit breakers' interrupting rating. It's unfortunate many of these older systems are being torn out and replaced by new costly systems—when technically, they could be safely upgraded through the use of current-limiting overcurrent protective devices. Panel 10 passed a solution three times during the last Code cycle, but was rejected on a minor technicality by the Technical Correlating Committee.
Vincent Saporita, P.E.
Director, Training and Technical Services
St. Louis, Mo.


text:
Providence law enforcement pieces together incidents that led to man's death.
PROVIDENCE, R.I. — A day of chaos sparked by the theft of a state police cruiser early Thursday ended with one man dead, a woman hospitalized, and the man accused of stealing the cruiser still at large.
The events began around 9 a.m., with the report of a stolen state police cruiser. They culminated with Providence police and Rhode Island State Police surrounding a white pickup truck, and multiple officers firing into the truck at close range.
According to state police Col. Ann Assumpico, an unnamed trooper was driving Donald Morgan, 35, to a court appearance on obstruction and possession of a stolen motor vehicle charges.
When the trooper stopped at a crash on Route 146 and exited the car, Morgan, still handcuffed, got into the driver's seat and drove away with the cruiser. The trooper's weapon was not taken. Laura Meade Kirk, a spokeswoman for the state police, said she could not comment on questions related to procedures for the transport of prisoners. She would not comment on how many troopers would be subject to the standard administrative review required under state law following a shooting.
The police later located the cruiser at 45 Vineyard St., in Providence's West End. Morgan, who has a lengthy criminal record, remained at large. One auto-body shop owner reported that 40 to 50 police officers and state troopers descended on the area with dogs, searching for Morgan.
"He is obviously still somewhere in the area," Providence Public Safety Commissioner Steven Paré said late Thursday at a news conference.
About an hour and a half after the cruiser was stolen, according to Cranston Police Col. Michael Winquist, a call went out across police radio channels asking officers across the state to be on the lookout for a white Ford F-150 with something "hanging out the back."
The broadcast led Winquist to believe that Morgan might be hiding in the bed of the truck, he said.
A Cranston officer saw a white Ford F-150 driving "erratically" in the city shortly afterward and attempted to pull the driver over. The truck stopped, but when the Cranston officer got out of his car, the driver "took off at a decent clip," Winquist said. The truck swerved, made illegal turns and sped past stop signs, evading the police.
"The driver was showing a total disregard for public safety," Winquist said. The officer pursued the car and called the station, Winquist said.
The Cranston officer lost sight of the truck, and Providence police then picked up the pursuit, which led onto the Route 95 north ramp behind the Providence Place Mall.
Michael Perry, 42, a Cranston building contractor, saw several state police cruisers speed by him on Route 95 north as he drove to a meeting at The Miriam Hospital.
They were going so fast that "they were almost endangering their lives," Perry said. "I knew something was going on."
Up ahead, the state police were stopping all traffic, Perry said, and he assumed at first they were clearing the way for a dignitary.
Then, he heard a noise — "like a pop or crash" — as state police and Providence police converged, guns drawn, on a white pickup truck. "I pulled the camera out," Perry said, and he held it up through the sunroof to capture whatever was happening.
Perry's video shows at least six officers firing upon the truck at close range. The truck rolls forward, and a volley of at least eight gunshots is heard, followed by the truck's engine revving and a cloud of smoke.
"It happened so fast," Perry said. All of the gunfire appeared to come from outside the truck, Perry said.
Law enforcement officials later said that the dead man was not Morgan.
A woman riding in the passenger seat of the white pickup truck remained at Miriam Hospital in unknown condition late Thursday, Paré said. Earlier in the day, police listed her as in critical condition.
The state medical examiner removed the dead man's body late Thursday.
Asked whether the fatal shooting of the man in the pickup truck was a tragic error, Paré said, "No, it is not."
"We're investigating … why this individual did not stop and why police officers had to use deadly force," Paré said.
He said he did not know what relationship the woman had with the driver of the pickup, but that "she and her behavior are part of the investigation."
No police officers were injured. Paré said several of the Providence officers involved in the shooting were wearing body cameras.
In 2014, Providence police adopted a general order on the use of force based on Commission on Accreditation for Law Enforcement Agencies standards.
The 11-page document breaks down appropriate situations for use of "lethal force" defined as "any tactic or use of force that is likely to cause serious bodily injury or death."
Officers are only permitted to shoot at moving vehicles when it is "necessary to stop a threat." The officer is to focus on stopping the person of interest, not to disable the vehicle, according to the order. The state police follow a similar standard.
Also that year, the U.S. Supreme Court ruled in Plumhoff v. Rickard that when police officers in Tennessee fired "multiple rounds into a car" in a high-speed chase, killing a driver and a passenger, they did not violate the law. The use of force "was not unreasonable" given the public safety risk posed by a reckless driver, the justices found in a unanimous decision.
The state's top prosecutors were at the scene Thursday, as the attorney general's office is responsible for investigating all officer-involved shootings.
The incident closed Route 95 in both directions for a time. Traffic began flowing on the highway at a very slow place around noon.
The back window of the truck bore the logo of Rock House Construction, of Johnston. David Antonucci, the owner of the company, said he sold the truck about two years ago. He said he could not recall the name of the buyer but said the man was from Woonsocket.
Antonucci first heard about his old truck's involvement in the shooting when he got a call from a reporter after the incident. His immediate thought was that it could have been his son's truck, which is also white and has the company logo on it. But he checked with his son, who was safe in Warwick.
Once someone sent him a picture of the truck involved in the shooting, Antonucci realized it was not one of the six trucks currently owned by the company.
"We've changed the logo," he said. "As soon as I saw that, I knew what it was."
Providence public school officials locked down four West End schools in the area of Bucklin Street on Thursday morning as word of a dangerous incident emerged.
The schools, Lima, Fortes and Leviton elementary schools, and Gilbert Stuart Middle School, were closed to outside access, but classes continued as scheduled, school district spokeswoman Laura Hart said.
The lockdown ended sometime after 11 a.m., Hart said.
Katie Mulvaney, Jacqueline Tempera and Amanda Milkovits are reporters for The Providence (R.I.) Journal.


text:
These tools are used to make rings that are loose, yet remain captured by the workpiece. Captive Rings are often added for decoration on goblets or weed pots and other spindle work. This design has a bevel on both sides to allow you to shape the rings and separate them from the workpiece using only one tool. You can use the Bead Forming Tools to shape the top of the ring. The Captive Ring tools are made of M2 high speed steel and are sharpened using a Diamond Hone or slip stone.
Copyright 2000-2015, Packard Woodworks Inc., All Rights Reserved


text:
When the 16 years old girl called Emily, decided to...
- by missjns13 & It'sTESSAAA
- Rating:
- Published: 3 Jul 2013
- Updated: 7 Jan 2014
- Status: Complete
Love is like fire.It's beautiful and dangerous all at the same time.The perfect balance.That's what makes it the best thing a person could possibly feel.It's a risk,but it's worth it.
5SOS fanfic
Slight use of explicit language (sorry)
5SOS fanfic
Slight use of explicit language (sorry)
Join MovellasFind out what all the buzz is about. Join now to start sharing your creativity and passion
Loading ...


text:
Wabash Alum Named Inspector General for the GPOby Jim Amidon • February 26, 2004 Share:
Nichols brings to the position a strong background in litigation. Prior to his appointment as IG, he practiced law with Hall & Evans, L.L.C., in Denver, CO, litigating matters in both Federal and State courts relating to insurance, products liability, employment discrimination, environmental lawsuits, and other matters. Nichols also practiced law as a senior associate with Culpepper & Martin, P.C., in Denver, where he represented clients at both the trial and appellate levels in actions relating to commercial disputes, real estate, insurance claims, criminal cases, and administrative proceedings.
He also practiced as an attorney with Qwest/U.S. West Communications, Inc., in Denver, working as part of its State Regulatory Litigation Group.
In announcing Nichols's selection, Public Printer James said, "We are extremely fortunate to have found an individual of Marc's caliber to serve as Inspector General for the GPO. I have great confidence that he will ensure our operations are conducted economically and efficiently, and in full conformance with all applicable Federal laws and regulations, as we transform the GPO into a 21st century agency."
Nichols is a member of the American and Colorado Bar Associations and is admitted to the U.S. District Court for the District of Colorado and the U.S. Court of Appeals for the Tenth Circuit. He holds a J.D. from Washington and Lee University School of Law and earned his B.A. from Wabash College.
Nichols is no stranger to Capitol Hill, having worked as a legislative aide to former Rep. Richard Zimmer from 1992-93. He also worked for Chemical Bank (now JPMorgan Chase) as a securities banker in New York and London.
Headquartered in Washington, DC, the GPO has 3,000 employees in 30 locations nationwide. It is responsible for the production and distribution of information products and services for all three branches of the Federal Government. In addition to its own production facilities, the GPO maintains a pool of 13,000 private sector vendors throughout the country to produce print and other information products for the Federal Government ranging from Supreme Court decisions to IRS tax forms and crop reports for the Department of Agriculture. The GPO also distributes Government publications to the public via a sales program and through a nationwide network of more than 1,200 Federal depository libraries.


text:
Bobby Crillz (Feat. Rosie Red) - Pick It Up [Label Submitted]
"Artist Bobby Crillz from Perth Amboy, New Jersey of WebbMusicGroup. Visit www.bobbycrillz.com. For Booking Info email firstname.lastname@example.com "
Please click the "Report" button below if the video on this page is not working properly.
Comments will only be displayed by verified emails. No Spamming or Racism.


text:
Fairmont Hotels Marin County hotels are listed below. Search for cheap and discount Fairmont Hotels hotel prices in Marin County, CA for your personal or business trip. We list the best Fairmont Hotels Marin County hotels & motels so you can review the Marin County Fairmont Hotels hotel list below to find the perfect place.
Our service will also provide discounted Marin County, CA hotels + motels that are comparable to the quality of Fairmont Hotels.Need a group/meeting discount? Get quotes from hotels in Marin County CA
How should we direct your call?