Процесс загрузки Linux

Процесс загрузки Linux — последовательность действий, посредством которых приводятся в состояние готовности операционные системы на основе Linux. Этот процесс во многом схож с загрузкой BSD и других Unix-подобных систем, от которых он и происходит.

Общий обзор процесса

При загрузке компьютера происходит последовательная передача управления от системной прошивки компьютера (BIOS или UEFI) к загрузчику, а от него — к ядру. Затем ядро запускает планировщик (для реализации многозадачности) и выполняет программу init (которая настраивает пользовательское окружение и позволяет осуществлять взаимодействие с пользователем и вход в систему), после чего ядро переходит в состояние бездействия до тех пор, пока не получит внешний вызов.

Основные этапы загрузки:

  1. Системная прошивка компьютера выполняет первичную проверку и инициализацию аппаратного обеспечения.
  2. В случае BIOS прошивка загружает в оперативную память и выполняет загрузочный код с одного из разделов заданного загрузочного устройства, который содержит фазу 1 загрузчика Linux. Фаза 1 загружает фазу 2 (значительный по размеру код загрузчика). Некоторые загрузчики могут использовать для этого промежуточный этап (под названием фаза 1,5), поскольку современные диски большого объёма могут некорректно считываться без дальнейшего кода. В случае UEFI запускается загрузчик загруженный со служебного раздела (EFS), который выбирается согласно настройкам приоритета загрузки определенного в энергонезависимой памяти компьютера. При этом возможна загрузка не только специализированного загрузчика, но можно загрузить и непосредственно ядро Linux (для этого ядро должно быть собрано с опцией EFI_STUB).
  3. Загрузчик зачастую предлагает пользователю меню с доступными вариантами загрузки. После выбора или после заданного тайм-аута загрузчик загружает ядро.
  4. Загруженное ядро распаковывается в памяти, настраивает системные функции, такие как работа необходимого оборудования и управление страницами памяти, после чего делает вызов start_kernel().
  5. После этого start_kernel() выполняет основную настройку системы (прерывания, остальные функции управления памятью, инициализацию устройств, драйверов и т. д.), а потом порождает процесс бездействия, диспетчер и отдельно от них — процесс init (выполняющийся в пользовательском пространстве).
  6. Планировщик начинает более эффективно управлять системой, в то время как ядро переходит к бездействию.
  7. Процесс init выполняет необходимые сценарии, которые настраивают все службы и структуры, не относящиеся к уровню ядра, в результате чего будет создано пользовательское окружение, и пользователю будет предоставлен экран входа в систему.

Когда происходит завершение работы, init вызывается для управляемого закрытия программ пользовательского уровня, тоже согласно сценариям. После этого init закрывается, а ядро производит своё собственное завершение работы.

Фаза загрузчика

При загрузкe через BIOS: Фазы загрузчика различаются в зависимости от платформы. Поскольку ранние этапы загрузки не зависят от операционной системы, процесс загрузки обычно начинается следующим образом:

  • Для x86 или x86-64: код с загрузочного сектора раздела диска выполняется в реальном режиме и загружает первую фазу загрузчика (как правило — часть LILO или GRUB).

С этого момента загрузка продолжается. Первая фаза загружает остальной код загрузчика, который обычно спрашивает, какую операционную систему (или вид её сессии) пользователь хочет запустить. Код загрузчика создаётся на основе конфигурационного файла /etc/lilo.conf (для LILO), в котором определены доступные системы. Этот файл содержит, в частности, информацию о загрузочном разделе и расположении ядра для каждой из таких систем, а также дополнительные параметры загрузки, если они заданы. В результате выбора соответствующее ядро загружается в ОЗУ, минимальная начальная файловая система настраивается из файла-образа (initrd), а затем, вместе с соответствующими параметрами управление передаётся новой ОС.

LILO и GRUB имеют определённые различия:[1]

  • LILO не распознаёт файловые системы, поэтому он использует непосредственные (raw) смещения на диске и сведения из BIOS для загрузки данных. Он загружает код меню, а потом, в зависимости от выбора, загружает либо 512-байтные секторы диска для системы, основывающейся на MBR (например, Microsoft Windows), либо образ ядра для Linux.[1]
  • GRUB, наоборот, распознаёт распространённые файловые системы (например, ext2 и ext3).[2] Так как GRUB хранит свои данные в файле конфигурации, а не в загрузочной записи, и имеет интерфейс командной строки, то зачастую параметры GRUB легче поправить или изменить, если они настроены неправильно или повреждены.[3]

При загрузке через UEFI: В UEFI загрузчик сразу запускается в защищенном режиме (32- или 64-битном) и фактически загружаются сразу все фазы загрузчика (с учетом загрузки со служебного раздела для загрузчика нет необходимости разбивать себя на отдельные фазы и размещать их в разных местах). В остальном процесс загрузки и инициализации ядра не отличается от варианта с BIOS.

GRUB

BIOS:

  1. Загрузчик 1-й фазы считывается BIOS из MBR (главной загрузочной записи).[4]
  2. Он загружает оставшуюся часть загрузчика (2-ю фазу). Если вторая фаза находится на большом диске, иногда загружается промежуточная фаза 1,5, которая содержит дополнительный код, позволяющий считывать цилиндры с номерами более 1024 (диски LBA). Загрузчик фазы 1,5 хранится (если это необходимо) в MBR или в загрузочном разделе.[4]
  3. Выполняется вторая фаза загрузчика и отображает меню запуска GRUB. Оно также позволяет выбрать среду выполнения и просмотреть параметры системы.
  4. Когда операционная система выбрана, она загружается и ей передаётся управление.[4]

GRUB поддерживает и прямой, и цепной способ загрузки, а также LBA, ext2, и «истинно командно-ориентированную, дооперационную среду на машинах x86». Он имеет три интерфейса: меню выбора, редактор настроек и командную консоль.[4]

UEFI:

  1. Загруженный со служебного раздела EFS GRUB (специальная версия бинарного файла, который умеет загружать UEFI) содержит в себе все необходимые компоненты для доступа к файловой системе /boot где находятся конфигурация и дополнительные файлы загрузчика.
  2. Отображается меню загрузчика и отображает меню запуска GRUB. Оно также позволяет выбрать среду выполнения и просмотреть параметры системы.
  3. Когда операционная система выбрана, она загружается и ей передаётся управление.[4]

LILO

LILO старше GRUB и практически аналогичен ему в действии, за исключением того, что не содержит интерфейса командной строки. Поэтому все изменения нужно вносить в его настройки и записывать в MBR, после чего систему перезагружают. Таким образом, ошибка в настройках может сделать диск неспособным к загрузке без использования отдельного загрузочного устройства (дискеты и т. п.), содержащего программу для исправления ошибки.[3] Кроме того, LILO не распознаёт файловые системы; вместо этого, адреса файлов-образов хранятся непосредственно в MBR,[3] а BIOS используется для прямого к ним доступа.

Loadlin

Ещё один способ загрузить Linux — из DOS или Windows 9x, где ядро Linux полностью заменит выполняющуюся копию операционной системы. Это может быть целесообразно, если аппаратное обеспечение должно включаться программно, а соответствующие программы существуют только для DOS, а не для Linux, будучи проприетарным ПО производителя и объектом коммерческой тайны. Этот метод загрузки не особо актуален, так как в Linux есть драйверы для множества аппаратных устройств, хотя в прошлом он был весьма полезен.
Другой пример: когда Linux находится на устройстве хранения данных, которое не предназначено для загрузки из BIOS: DOS или Windows могут загрузить соответствующие драйверы, чтобы обойти такое ограничение BIOS, а затем загрузить оттуда Linux.

Фаза ядра

Ядро Linux управляет главными функциями, такими как управление памятью, диспетчер задач, ввод-вывод, межпроцессное взаимодействие и общее управление системой. Загрузка проходит в два этапа: на первом ядро (в виде сжатого файла-образа) загружается в оперативную память и распаковывается, далее настраиваются такие базовые функции, как основное управление памятью. Затем управление в последний раз передается основному процессу запуска ядра. Как только ядро становится полностью работоспособным (то есть загруженным и выполнившим свой код), оно находит и запускает процесс init, который самостоятельно настраивает пользовательское пространство и процессы, необходимые для функционирования пользовательского окружения и итогового входа в систему. Само ядро переходит в режим бездействия и готовности к вызовам со стороны других процессов.

Этап загрузки ядра

Ядро при загрузке обычно имеет вид файла-образа, сжатого в формат zImage или bzImage с помощью zlib. В нём содержится головная программа, которая проводит минимальную настройку оборудования, распаковывает образ целиком в верхнюю память и монтирует RAM-диск, если он предусмотрен.[5] После этого она выполняет запуск ядра посредством ./arch/x86/boot/head и процесса startup_32() (для процессоров семейства x86).

Этап запуска ядра

Источник: Описание процесса загрузки Linux фирмой «IBM» (англ.) + переведённая версия с того же сайта Подробности процесса загрузки Linux (рус.)

Функция запуска ядра (также называемая своппер или процесс 0) организует управление памятью (таблицы страниц и страничную организацию памяти), определяет тип процессора и дополнительные возможности (например, наличие математического сопроцессора), а затем переключается к архитектурно-независимому функционалу ядра Linux путём вызова start_kernel().

start_kernel() выполняет множество задач инициализации. Она настраивает обработчики прерываний (IRQ), затем настраивает память, запускает процесс init (первый процесс пользовательского режима), а затем запускает задачу бездействия вызовом cpu_idle(). Следует заметить, что процесс запуска ядра также монтирует инициирующий RAM-диск («initrd»), который ранее был загружен в роли временной корневой файловой системы в фазе загрузки. Это позволяет загружать модули драйверов, не опираясь на другие физические устройства и драйверы, и поддерживать небольшой размер ядра. Корневая файловая система впоследствии подменяется с помощью вызова pivot_root(), который размонтирует временную и заменяет её настоящей корневой ФС, как только последняя станет доступна. Использованная временной системой память затем освобождается.

Таким образом, ядро инициализирует устройства, монтирует указанную загрузчиком файловую систему в режиме «только чтение» и запускает процесс init (/sbin/init), который обозначается как первый процесс, запущенный системой (с идентификатором процесса PID = 1).[1] Соответствующие сообщения выводит ядро (при монтировании файловой системы) и init (при запуске одноимённого процесса). Ядро также может выполнить initrd для обработки настроек и инициализации устройств до монтирования корневой файловой системы.[1]

По заявлению компании «Red Hat», детали процесса загрузки на этом этапе можно подытожить так:[2]

Когда загружается ядро, оно сразу же инициализирует и конфигурирует память компьютера и настраивает различное подключённое к системе оборудование, включая все процессоры, подсистемы ввода-вывода и устройства хранения данных. Затем оно ищет сжатый образ initrd в заранее определённом участке памяти, распаковывает его, монтирует и загружает все необходимые драйверы. Затем оно инициализирует виртуальные устройства, связанные с файловой системой, например LVM или программные RAID-массивы, прежде чем демонтировать образ диска initrd и освободить всю память, ранее занимаемую образом. Потом ядро создает корневое устройство, монтирует корневой раздел только для чтения и освобождает всю неиспользованную память. К этому времени ядро загружено в память и работоспособно. Тем не менее, поскольку нет пользовательских программ для осуществления осмысленного ввода данных в систему, с ней мало что можно делать.

Теперь, когда включены прерывания, диспетчер может принять общее управление системой, чтобы обеспечить вытесняющую многозадачность, а процесс init остается продолжать загрузку пользовательского окружения в пространстве пользователя.

Процесс init (только типа UNIX System V)

Init является родителем всех процессов. Его главная задача — создавать процессы по сценарию из файла /etc/inittab. В этом файле обычно содержатся записи, указывающие init породить getty для каждой линии, по которой пользователи могут входить в систему. Он также контролирует автономные процессы, требуемые какой-либо системе. Уровень выполнения — программная конфигурация системы, которая позволяет существовать только заданной группе процессов. Процессы, порождаемые init на каждом из таких уровней выполнения, определяются в файле /etc/inittab.[6]

По сути init организует и поддерживает всё пользовательское пространство, что включает в себя также проверку и монтирование файловых систем, запуск нужных пользовательских служб и, переключение в пользовательскую среду, когда запуск системы завершится. Он похож на процессы init в Unix и BSD, от которых произошёл, но в некоторых случаях он изменён или переделан. В обычной системе Linux init имеет параметр, известный как уровень выполнения, принимающий значения от 1 до 6 и определяющий, какие подсистемы следует включить. Для каждого уровня выполнения есть собственные сценарии, которые регламентируют различные процессы, участвующие в установлении или снятии данного уровня, и именно эти сценарии считаются необходимыми для процесса загрузки. Сценарии init обычно хранятся в каталогах с именами вида /etc/rc…. Главный файл конфигурации уровней для init — /etc/inittab.[7]

Во время загрузки системы он проверяет, описан ли уровень по умолчанию в /etc/inittab, а если же нет — запрашивает его через системную консоль. Затем он продолжает выполнять все соответствующие сценарии загрузки для этого уровня, включая загрузку модулей, проверку целостности файловой системы (которая монтировалась только для чтения), перемонтирование её для чтения-записи и настройку сети.[1]

В частности, по сообщению Red Hat, процесс init следует такой схеме:[2]

  1. Он просматривает сценарий sysinit, который "устанавливает путь к среде, запускает swap, проверяет файловые системы и делает всё, что необходимо для инициализации системы. Это, в частности, системные и аппаратные часы, специальные процессы для последовательного порта и т. п.
  2. Затем init просматривает конфигурацию, указанную для заданного уровня выполнения.
  3. После этого init устанавливает исходную библиотеку функций для системы. Это определяет, как следует запустить или снять программу и как определить её PID.
  4. Затем он запускает все предусмотренные процессы и создает сессию входа пользователя в систему.

После того, как он породил все заданные процессы, init переходит в режим ожидания и ждет одного из трёх событий:

  1. Нормального или аварийного завершения порождённых процессов.
  2. Сигнала аварии питания.
  3. Запроса от /sbin/telinit на изменение уровня выполнения.[6]

Это относится к программе init в стиле UNIX System V. Другие программы init могут вести себя иначе.

См. также

Примечания

  1. 1 2 3 4 5 Linux Boot Process — by Kim Oldfield (2001). Дата обращения: 10 декабря 2008. Архивировано 18 декабря 2008 года.
  2. 1 2 3 A Detailed Look at the Boot Process. Дата обращения: 10 декабря 2008. Архивировано 3 февраля 2009 года.
  3. 1 2 3 Documentation. Дата обращения: 10 декабря 2008. Архивировано 5 мая 2010 года.
  4. 1 2 3 4 5 Описание GRUB фирмой «Red Hat» (англ.) (HTML). Дата обращения: 8 августа 2010. Архивировано 7 марта 2009 года.
  5. IBM description of Linux boot process. Дата обращения: 10 декабря 2008. Архивировано 31 мая 2008 года.
  6. 1 2 Руководство man по процессу init. Дата обращения: 10 декабря 2008. Архивировано 12 июня 2008 года.
  7. От включения питания до приглашения Bash: Init. Дата обращения: 26 ноября 2010. Архивировано 10 марта 2011 года.

Ссылки

Read other articles:

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Desember 2022. Matsuri KiritaniMatsuri, 2018Nama asal桐谷まつりLahir15 Agustus 1996 (umur 27)Prefektur Akita, JepangTahun aktif2016-Dikenal atasC-more ENTERTAINMENTTinggi165 cm (5 ft 5 in) Matsuri Kiritani (桐谷まつりcode: ja ...

 

Bijou Phillips Bijou Lily Phillips (Greenwich, 1º aprile 1980) è un'attrice, modella e cantante statunitense. Indice 1 Biografia 2 Filmografia parziale 2.1 Cinema 2.2 Televisione 3 Doppiatrici italiane 4 Discografia 5 Note 6 Altri progetti 7 Collegamenti esterni Biografia Nata a Greenwich nel Connecticut, è figlia di John Phillips dei The Mamas & the Papas e dell'attrice Geneviève Waïte, e sorellastra di Mackenzie Phillips e Chynna Phillips. Il suo nome, che in francese significa gio...

 

Cet article est une ébauche concernant la sécurité, la Seine-Saint-Denis et la prison. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Maison d'arrêt de Villepinte Localisation Pays France Région Île-de-France Département Seine-Saint-Denis Localité Villepinte Coordonnées 48° 57′ 54″ nord, 2° 33′ 11″ est Géolocalisation sur la carte : Seine-Saint-Denis Maison...

Universitas TelkomBahasa Inggris: Telkom UniversityStatuta Tel-UNama lainTel-UMotoCreating the Future(Latin: Partum in Futuro)Moto dalam bahasa IndonesiaMenciptakan Masa DepanJenisPerguruan Tinggi Swasta BUMNDidirikan14 Agustus 2013; 10 tahun lalu (2013-08-14)[1]PendiriIr. Cacuk SudarijantoLembaga induk Telkom Indonesia Yayasan Pendidikan Telkom AfiliasiAPERTI BUMNAkreditasi BAN-PT: Unggul[2] ASIC ABEST21 IABEE RektorProf. Dr. Adiwijaya, S.Si, M.Si.[3]Staf a...

 

Meksiko SerikatEstados Unidos Mexicanos (Spanyol) Bendera Lambang Semboyan: La patria es primero (Spanyol: Tanah air ini adalah tanah yang paling pertama)Lagu kebangsaan:  Himno Nacional Mexicano (Indonesia: Himne Nasional Meksiko) Perlihatkan BumiPerlihatkan peta BenderaIbu kota(dan kota terbesar)Kota Meksiko(Ciudad de México) 19°26′N 99°8′W / 19.433°N 99.133°W / 19.433; -99.133Bahasa resmiTidak ada bahasa resmi di tingkat federal1Bahasa nasionalSpa...

 

Your EyesLagu oleh Arashidari album PopcornDirilis06 Juni 2012 (2012-06-06)FormatCD, CD + DVDDirekam2012GenrePopLabelJ StormKronologi singel Face Down (2012) Your Eyes (2012) Calling / Breathless (2013) Your Eyes adalah single ke-39 boyband Jepang Arashi. Single ini dirilis pada tanggal 6 Juni 2012 oleh label rekaman mereka J Storm. Your Eyes digunakan sebagai lagu tema untuk drama Mikeneko Holmes no Suiri yang dibintangi oleh salah satu member Arashi Masaki Aiba. Informasi single Single...

1934 United States Senate election in Missouri ← 1928 November 6, 1934 1940 →   Nominee Harry S. Truman Roscoe C. Patterson Party Democratic Republican Popular vote 787,110 524,954 Percentage 59.55% 39.71% County ResultsTruman:      40–50%      50–60%      60–70%     70–80%      80–90%      >90% Patt...

 

Wakil Bupati Muna BaratPetahanaLowongsejak 22 Mei 2022Masa jabatan5 tahun dan dapat dipilih kembali untuk satu kali masa jabatanDibentuk22 Mei 2017; 6 tahun lalu (2017-05-22)Pejabat pertamaAchmad LamaniSitus webSitus web resmi Berikut adalah daftar Wakil Bupati Muna Barat secara definitif sejak tahun 2017. Nomor urut Wakil Bupati Potret Partai Awal Akhir Masa jabatan Periode Bupati Ref. 1   Achmad Lamani(lahir 1956) Non Partai 22 Mei 2017 26 September 2020 3 tahun, 127...

 

Disambiguazione – Se stai cercando altri significati, vedi Hanley (disambigua). Questa voce sull'argomento centri abitati dello Staffordshire è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. HanleyHanley – Veduta LocalizzazioneStato Regno Unito    Inghilterra RegioneMidlands Occidentali Contea Staffordshire DistrettoStoke-on-Trent TerritorioCoordinate53°01′N 2°10′W / 53.016667°N 2.166667°W53.0166...

  提示:此条目页的主题不是中華人民共和國最高領導人。 中华人民共和国 中华人民共和国政府与政治系列条目 执政党 中国共产党 党章、党旗党徽 主要负责人、领导核心 领导集体、民主集中制 意识形态、组织 以习近平同志为核心的党中央 两个维护、两个确立 全国代表大会 (二十大) 中央委员会 (二十届) 总书记:习近平 中央政治局 常务委员会 中央书记处 �...

 

The ReverendGeorge WishartLahirc. 1513Kincardineshire, SkotlandiaMeninggal1 March 1546 – 1513; umur -34–-33 tahunSt Andrews, SkotlandiaAlmamaterUniversitas Aberdeen Universitas Leuven Corpus Christi College, CambridgePekerjaanPengkhotbah Wishart berkhotbah menentang Mariolatri Perjamuan terakhir George Wishart Perjamuan terakhir George Wishart Plakat Biru memperingati George Wishart 1513-1546 Monumen Para Martir, St Andrews, yang mengenang Wishart dan tiga martir lainnya: Pa...

 

المحقق كونان: تباعات الشمس الجهنمية名探偵コナン 業火の向日葵 (باليابانية) الملصق الدعائي للفيلم باللغة الكوريةمعلومات عامةالصنف الفني فيلم جريمة تاريخ الصدور 18 أبريل 2015مدة العرض 112 دقيقة[3] اللغة الأصلية اليابانيةالبلد  اليابانموقع الويب conan-movie.jp…[4] (اليابانية) الط�...

2022 documentary Untold: The Race of the CenturyPromotional posterDirected by Chapman Way Maclain Way Music byBrocker WayProductioncompanyPlayers' TribuneDistributed byNetflixRelease date September 6, 2022 (2022-09-06) CountryUnited StatesLanguageEnglish Untold: The Race of the Century is a 2022 American Netflix original documentary film directed by Chapman Way and Maclain Way.[1] The film was released on September 6, 2022.[2] Summary The film is the ninth insta...

 

Multiple unique cultural identities within a larger society This article is about the concept of cultural pluralism. For other uses of the term, see Pluralism (disambiguation). Part of a series onDiscrimination Forms Institutional Structural Statistical Taste-based Attributes Age Caste Class Dialect Disability Genetic Hair texture Height Language Looks Mental disorder Race / Ethnicity Skin color Scientific racism Rank Sex Sexual orientation Species Size Viewpoint Social Arophobia Ace...

 

Esparadana Espadarana Espadarana prosobleponTaksonomiKerajaanAnimaliaFilumChordataKelasAmphibiaOrdoAnuraFamiliCentrolenidaeGenusEspadarana lbs Espadarana adalah sebuah genus katak kaca. Mereka dapat ditemukan di Amerika Tengah (Honduras, Nikaragua, Kosta Rika dan Panama) dan Amerika Selatan bagian utara (Venezuela, Kolombia dan Ekuador).[2][3] Spesies Espadarana andina (Rivero, 1968) Espadarana audax (Lynch and Duellman, 1973) Espadarana callistomma (Guayasamin and Trueb, 200...

Former Cuban currency Cuban convertible pesopeso cubano convertible (Spanish) ISO 4217CodeCUCSubunit0.01UnitSymbol$, CUC or CUC$‎Nicknamedollar, cuc or chavitoDenominationsSubunit 1⁄100centavo convertibleSymbol centavo convertible¢ or cBanknotes Freq. used$1, $3, $5, $10, $20, $50, $100Coins Freq. used5¢, 10¢, 25¢, 50¢, $1 Rarely used1¢, $5DemographicsDate of introduction1994Date of withdrawal1 January 2021User(s) CubaIssuanceCent...

 

This article is about the Catalan comarca. For the Italian commune, see Anoia, Calabria. For other uses, see Anoia (disambiguation). Comarca in Catalonia, SpainAnoiaComarca FlagCoat of armsLogoCountry SpainAutonomous community CataloniaRegionsPenedèsCentral CataloniaProvinceBarcelonaCapitalIgualadaMunicipalities List Argençola, Bellprat, El Bruc, Cabrera d'Igualada, Calaf, Calonge de Segarra, Capellades, Carme, Castellfollit de Riubregós, Castellolí, Copons, Els Hostalets de Pie...

 

Масонство Направления Регулярное масонство Либеральное масонство Масонство Принса Холла Терминология Словарь масонских терминов Список масонов Категория:Масоны История масонства Холлиуэллский манускрипт Категория:История масонства Масонские уставы Масонские уста...

Jan LetzelJan Letzel sedang mengenakan kimono di JepangLahir(1880-04-09)9 April 1880Nachod, Bohemia, Kekaisaran Austria-HungariaMeninggal26 Desember 1925(1925-12-26) (umur 45)Praha, CekoslowakiaPekerjaanArsitek Jan Letzel (9 April 1880 – 26 Desember 1925) adalah seorang arsitek Ceko, yang paling dikenal karena merancang sebuah bangunan di Hiroshima yang reruntuhannya sekarang menjadi Monumen Perdamaian Hiroshima. Biografi Jan Letzel lahir di kota Náchod, Bohemia. Ia adalah putra dari...

 

2018 United States House of Representatives election in the Northern Mariana Islands ← 2016 November 13, 2018[1] 2020 →   Nominee Gregorio Sablan Angel Demapan Party Independent Republican Popular vote 9,150 5,199 Percentage 63.8% 36.2% Results by voting district: Gregorio Sablan:      60–65%      65–70% Angel Demapan:      50–55% Delegate before election Gregorio Sablan I...