GRUB'dan farklı olarak, LILO sistemi önyüklerken yapılandırma dosyasını kontrol etmez. lilo uçbirimden çağırıldığında bazı trikler ortaya çıkar.
Aşağıdaki LILO program anahatları lilo-22.5.8 tabanlıdır.
lilo.c:main()
|-- cfg_open(config_file);
|-- cfg_parse(cf_options);
|-- bsect_open(boot_dev, map_file, install, delay, timeout);
| |-- open_bsect(boot_dev);
| `-- map_create(map_file);
|-- cfg_parse(cf_top)
| `-- cfg_do_set();
| `-- do_image(); // "image=" bölümü için walk->action
| |-- cfg_parse(cf_image) -> cfg_do_set();
| |-- bsect_common(&descr, 1);
| | |-- map_begin_section();
| | |-- map_add_sector(fallback_buf);
| | `-- map_add_sector(options);
| |-- boot_image(name, &descr) veya boot_device(name, range, &descr);
| | |-- int fd = geo_open(&descr, name, O_RDONLY);
| | | read(fd, &buff, SECTOR_SIZE);
| | | map_add(&geo, 0, image_sectors);
| | | map_end_section(&descr->start, setup_sects+2+1);
| | | /* bsect_common()içinde iki sektör yaratıldı,
| | | * bootsect için ise başka bir sektör*/
| | | geo_close(&geo);
| | `-- fd = geo_open(&descr, initrd, O_RDONLY);
| | map_begin_section();
| | map_add(&geo, 0, initrd_sectors);
| | map_end_section(&descr->initrd,0);
| | geo_close(&geo);
| `-- bsect_done(name, &descr);
`-- bsect_update(backup_file, force_backup, 0); // önyükleme sektörünü güncelle
|-- make_backup();
|-- map_begin_section();
| map_add_sector(table);
| map_write(¶m2, keytab, 0, 0);
| map_close(¶m2, here2);
|-- // ... önyükleme sektörünün yeniden yerleştirilmesini yap
|-- // ... bsect_wr'yi doğru yere ayarla
|-- write(fd, bsect_wr, SECTOR_SIZE);
`-- close(fd);
map_register() tüm kayıtlı sektörleri tanımlamakta kullanılan (CX, DX, AL) üçlüsü (veri yapısı SECTOR_ADDR) için bir liste tutarken map_add(), map_add_sector() ve map_add_zero() işlerini tamamlamak için map_register()'ı çağırabilir.
LILO sistemi yüklemek için first.S ve second.S'yi çalıştırır. Eşlem (map) dosyasını, bootsect ve kurulum kodunu yüklemek için second.S:doboot() yöntemini çağırır. Sonra, sistem kodunu yüklemek için lfile() yöntemini çağırır, launch2() -> launch() -> cl_wait() -> start_setup() -> start_setup2() yöntemini çağırır ve son olarak ayar kodunu çalıştırmak için jmpi 0,SETUPSEG komutunu çalıştırır.
LILO'nun ayrıntıları için "man lilo" ve "man lilo.conf"a bakınız.