2024. április 18., csütörtök

Gyorskeresés

USB-ről bootoló Debian Linux készítése

Írta: | Kulcsszavak: debian . linux . telepítés . pendrive . install

[ ÚJ BEJEGYZÉS ]

Nemrég szükségem volt egy pendrive-ról bootoló Linuxra, ám sehogy nem sikerült normál disztrót pendrive-ra telepíteni (nem Live, hanem a pendrive-ra telepített normál OS kellett, ami fontos különbség). Másképpen sikerült megoldani, bár nem a legegyszerűbben -fapados, de működik, és elég kicsi a helyigénye is.


Forrás : https://debian.ee/

A legtöbbet ez a leírás segített : https://willhaley.com/blog/install-debian-usb/ ,
ez alapján készítettem egy parancsszintű itinert is, amivel könnyen kivitelezhető (kb. scriptelhető) a telepítés.
Az egész alapja a debootstrap csomag, amivel egy Debian imaget fogunk készíteni egy image file-ban levő filerendszerre. Később ezt az imaget felmountoljuk, chrootolunk bele, és testreszabjuk. A telepítést Debian Linux-on végeztem. Hasonló módszerrel amúgy Ubuntu is előálltható.

Nem biztos, hogy teljesen pontos a dolog, de én az összes felmerülő problémát meg tudtam oldani némi Google segítséggel, s nyilván némi alap Linux ismeret sem árt :) Különösen a plusz csomagoknál érdekes, mit teszünk fel, mert könnyen hiányozhat hálózat, stb. Persze az elkészült, futó rendszeren is tudunk majd telepíteni apt-vel, vagy ha teszünk fel, grafikus csomagkezelővel.

Alant a telepítés menete parancsokkal, és a #-al kezdődő sorokban a magyarázatuk

#A debootstrap telepítése, 4GB image file lefoglalása (az alap image csak 2GB, de úgyis kell még hozzárakni dolgokat),
#és az image particionálása.
sudo apt-get install debootstrap
fallocate -l 4G debian.img
echo -e "o\nn\np\n1\n\n\nw" | sudo fdisk debian.img
echo -e "a\nw\n" | sudo fdisk debian.img

#Az image-n levő partíciókon filerendszer létrehozása, a filerendszerek felcsatolása a loop eszközön át
sudo losetup --partscan --show --find debian.img
sudo mkfs.ext4 /dev/loop0p1
sudo mkdir -p /mnt/debian
sudo mount /dev/loop0p1 /mnt/debian

#A Debian Testing lehúzása (minimális alaprendszer) és "telepítése" az image-be
sudo debootstrap --arch=i386 --variant=minbase testing /mnt/debian http://ftp.us.debian.org/debian/

#Chroot-olás az image-be - átkerülünkaz image-be telepített Debianba, tehát ezután minden kiadott parancs
#azon az oprendszeren hajtódik végre, ami az imageben van, nem azon amin az imaget létrehoztuk!
sudo mount -t proc /proc /mnt/debian/proc
sudo mount -t sysfs /sys /mnt/debian/sys
sudo mount -o bind /dev /mnt/debian/dev
sudo chroot /mnt/debian

#Lefrissíteni az imaget, majd a megfelelő kernel telepítése
#A kernel elég érdekes dolog, másképp nem működik, tehát a telepített OS esetén
#sem lehet csak egy apt-get upgrade-el frissíteni, mert nem fog elindulni (tapasztalat...)
apt-get update && apt-get install --no-install-recommends linux-image-586 systemd-sysv grub2-common grub-pc

#Telepítjük a számunkra szükséges csomagokat - a lxde-desktop helyett más desktop összeállítást is megadhatunk.
# Ha nem adunk meg csomagokat, akkor a minbase Debian-t kapjuk, csak paranccsor, se hálózat, se semmi...
#A felsorolt csomagokra lehet, hogy panaszkodni fog, mert pl. hibásan adtam meg a nevet, vagy telepítve van - szóval lehet, hogy ezen a sorom módosítani kell
apt-get install lxde-desktop firefox vlc networkmanager synaptic gvfs gvfsd fuse linux-firmware wget gimp mc alsa alsamixergui lxterminal network-manager nm-applet ntfs-3g parted pcmanfm pavucontrol powermgmt-base rfkill smartmontools samba sudo unzip vdpau-driver-all wpasupplicant xfce4-power-manager firmware-linux-nonfree linux-firmware intel-microcode amd64-microcode iwldvm firmware-iwlwifi dhclient synaptic leafpad

#Fstab beállítás az USB eszközhöz
echo "LABEL=DEBUSB / ext4 defaults 0 1" > /etc/fstab

#Root jelszó beállítása
passwd root

#Grub bootloader telepítése
grub-install --target=i386-pc --boot-directory=/boot --force-file-id --skip-fs-probe --recheck /dev/loop0
exit

#A Grub konfig beállítása :
sudo nano /mnt/debian/boot/grub/grub.cfg


#Ez kerüljön a grub.cfg -be

#grub.cfg
set default="0"
set timeout=10

menuentry "Debian" {
linux /vmlinuz root=/dev/disk/by-label/DEBUSB quiet
initrd /initrd.img
}

#eddig tart a grub.cfg tartalma

#A megfelelő partíciónak a DEBUSB címkét adjuk, erről fog bootolni
sudo e2label /dev/loop0p1 DEBUSB

#A leendő hostnév megadása, ha ez fontos
echo "debian-usb" | sudo tee /mnt/debian/etc/hostname

#Az image lecsatolása, a chroot elhagyása
sudo umount /mnt/debian/{dev,sys,proc}
sudo umount /mnt/debian
sudo losetup -d /dev/loop0

#Az image a következő paranccsal írható pendrive-ra, ahol X a megfelelő betűjel a pendrive-hoz (vigyázat, a teljes pendrive-ot felülírja!)
dd if=debian.img of=/dev/sdX

Ezután már bootolható is a pendrive (ha minden jól ment - nekem elsőre sikerült).

Kikapcsolható az eszköz kímélése érdekében a filerendszer naplója, de ezzel gyak. ext2 lesz a filerendszer, nem várt leállás esetén adatvesztéssel :
tune2fs -O ^has_journal /dev/sdXY (sdXY a megfelelő eszköz megfelelő partíciója)

A telepített image - ablakkezelővel, stb. - szépen elfér egy 4GB-os pendrive-on, de egy 8GB-oson még hely is marad. És ez egy teljes rendszer.

Az egy bajom jelenleg az updatelése; a normál apt-get update&&apt-get upgrade hazavágja a Grub-ot, így másképpen kell a kernel frissítését megoldani (minden más frissül rendben, hiszen ez egy teljes Debian). Az outdated rendszer egy tesztelésre használt pendrive esetén nem érdekes, azonban ha már valami komolyabb célja van, nagyon fontos lehet a friss kernel - így ezt meg fogom oldani előbb-utóbb. (Legrosszabb esetben chrootolni kell az image-be, és feltenni egy friss kernelt, de ez a pendrive-on jár sok felesleges írással.)

Hozzászólások

(#1) qqcqqc


qqcqqc
őstag

Ezt nem próbáltad? [link]
Elvileg tudja, amit szeretnél.

(#2) bambano


bambano
titán
LOGOUT blog

sudo-ért korbács jár.
i386-os architektúra emlékeim szerint már nincs.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#3) Lenry válasza bambano (#2) üzenetére


Lenry
félisten

Debiánék szerint van

Gvella Glan! | There are two types of people: Those who can extrapolate from incomplete data

(#4) bambano válasza Lenry (#3) üzenetére


bambano
titán
LOGOUT blog

:R nem jól emlékeztem, processzorokat dobtak, nem az egész architektúrát.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#5) hcl válasza qqcqqc (#1) üzenetére


hcl
félisten
LOGOUT blog

Bejegyzés első mondatában : (nem Live, hanem a pendrive-ra telepített normál OS kellett, ami fontos különbség). ;) Live cuccaim vannak, de az nem volt elég.

@Bambano : Nekem úgy tűnik, hogy azt már csak i386-nak hívják :D Nemrég akartam Via C3 procis gépből home szervert kreálni (aztán nem tettem), de arra sem ment fel, akkor láttam, hogy sajnos i686 a követelmény már az i386 -nak is. De már kb. semmi nem támogat az alatt! Mandriva-t láttam kb, ami még i586-ig megy.

Sudo-ért miért jár korbács? Mondjuk értelme úgy lenne, ha nem a root lenne az egészen az egyetlen user, de ha egyszer odajutok, beleveszem azt is, hogy ne rootként használódjon.

Mutogatni való hater díszpinty

(#6) bambano válasza hcl (#5) üzenetére


bambano
titán
LOGOUT blog

először is azért jár a sudo-ért korbács, mert minden utasításra egyesével usert váltani az egyfajta forkbomba. ha ennyi utasítást akarsz végrehajtani rootként, egymás után, akkor sudozzál egy root shellt, és utána pakold bele.

másodszor meg azért, mert a sudo egy windows userek miatt bevezetett betegség. ne kapd el, nem jó.

meg vannak ilyen apróságok, hogyha loop-pal mountolod az image-t, akkor a debootstrap miért image-t csinál? hint: nem azt csinál, fájlrendszerbe telepít kezdő oprendszert. a chroot elhagyását meg rosszul copypastéztad.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#7) hcl válasza bambano (#6) üzenetére


hcl
félisten
LOGOUT blog

Hát, a vége egy .img lesz, én sem nagyon tudom, hogy valójában hogy működik :B
Na meg jelen esetben a filerendszer egy image-ben van, és a végső cél is annak a preparálása.

A sudo mondjuk sudo su - , de az a sudo telepítése nélkül nem megy :D Különben melóban szépen használjuk. A root jelszó kevésbé publikus, külön hozzáférés kell, hogy megtudd, de különben is csak akkor kell, ha összeborult az OS, és konzolról kéne megjavítani. (Ritka.) Tehát van userünk, sudo su - , jelszó, és mehet a móka rootként.

Illetve nem tudom, sudo nélkül hogyan lehet szabályozni, hogy melyik user milyen parancsokat adhat ki (+ loggolva is legyen, hogy ki volt az)? Mert ilyesmire is használva van. Persze a sudoers szerkesztését nem szeretjük + folyamatos macerálás van, hogy éppen mit szabad benne, de a céges megoldás az.

A lecsatolós észrevételt köszi, javítottam :R

[ Szerkesztve ]

Mutogatni való hater díszpinty

(#8) bambano válasza hcl (#7) üzenetére


bambano
titán
LOGOUT blog

linuxon a fájl az blokkokban is hozzáférhető, vagyis akár lehet egy blokkos eszköz háttere. a loopback interfész csinálja azt, hogy egy fájlból device-t csinál. tehát lefoglalod a helyet a diszken az image-nek, azt berakod egy blokkos eszköz mögé (/dev/loop0), majd csinálsz rá fájlrendszert és felmountolod. attól kezdve az nem image, hanem fájlrendszer. csak nem blokkos eszköz van mögötte, hanem egy imagefile.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#9) Fecogame válasza bambano (#2) üzenetére


Fecogame
veterán

sudo-ért korbács jár.

+1. Az egyik helyen használsz, a másik helyen nem (ahol pedig ebben az esetben kellene - apt-get). Célszerűbb az elején átmenni root-ba, és így kiadni az összes parancsot (ekkor már sudo nélkül, mert felesleges).

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#10) bambano válasza Fecogame (#9) üzenetére


bambano
titán
LOGOUT blog

"a másik helyen nem (ahol pedig ebben az esetben kellene - apt-get": konkrétan itt nem kell az apt-get elé sudo.
már volt.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.