SystemRescueCD adalah sebuah distro Linux yang menyediakan Live CD untuk keperluan troubleshooting.
Misalnya saya mendadak lupa apa password akun root
salah satu server Linux. Saya bisa boot servernya dengan menggunakan SystemRescueCD sebagai boot media. Lalu dari konsolnya SystemRescueCD, saya bisa lakukan langkah-langkah berikut ini :
- Pertama saya perlu cari cek dulu partisi apa saja yang ada dalam harddisk server ini, saya bisa gunakan perintah
fdisk
seperti berikut ini :root@sysresccd /root % fdisk -l Disk /dev/sda: 16.7 GB, 16689012736 bytes, 32595728 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xbdf13b7d Device Boot Start End Blocks Id System /dev/sda1 * 2048 29362175 14680064 83 Linux /dev/sda2 29362176 32595727 1616776 83 Linux root@sysresccd /root %
Dari situ saya tahu ada 2 partisi
/dev/sda1
&/dev/sda2
. Selain itu saya lihat partisi/dev/sda1
ditandai dengan flagBoot
, jadi saya tebak/dev/sda1
adalah partisiroot
. - Saya mount partisi
/dev/sda1
sementara di/mnt
:root@sysresccd /root % mount /dev/sda1 /mnt
- Saya perlu masuk ke environment
root
tadi dengan perintahchroot
:root@sysresccd /root % chroot /mnt chroot: failed to run command ‘/bin/zsh’: No such file or directory root@sysresccd /root %
Ternyata gagal karena SystemRescueCD menggunakan
zsh
sebagai default SHELL-nya. Bisa diakali dengan mengganti variabel SHELL denganbash
:root@sysresccd /root % export SHELL=bash root@sysresccd /root % chroot /mnt root@sysresccd:/#
- Bagaimana saya tahu kalau saya sudah berada dalam
chroot
partisi/dev/sda1
? Sederhananya saya bisa cek filehostname
:root@sysresccd /root % chroot /mnt root@sysresccd:/# cat /etc/hostname debian7 root@sysresccd:/#
Benar ternyata
hostname
-nya adalah “debian7”, berarti saya sudah masuk kechroot
environment partisi/dev/sda1
. Tentu ini sangat tergantung distro Linuxnya. Debian atau Ubuntu atau turunannya menaruh namahostname
di/etc/hostname
. Sedikit berbeda dengan RedHat atau turunannya seperti CentOS, informasihostname
ditaruh di/etc/sysconfig/network
:[root@sysresccd /]# cat /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=localhost.localdomain [root@sysresccd /]#
Cara lain yang lebih sederhana mungkin bisa dengan memperhatikan tampilan
prompt
yang berubah dariroot@sysresccd /root %
menjadi :
root@sysresccd:/#
- Dari sini saya bisa langsung mengganti password akun
root
dengan perintahpasswd
:root@sysresccd:/# passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully root@sysresccd:/#
- Setelah itu saya bisa keluar dari
chroot
& langsung restart servernya dengan :root@sysresccd:/# exit exit root@sysresccd /root % reboot
Beberapa catatan kecil dari langkah-langkah di atas :
- Mungkin saja partisi hardidsk-nya lebih rumit (atau mungkin ada lebih dari 2 harddisk dalam server) seperti ini :
root@sysresccd /root % fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00027a20 Device Boot Start End Blocks Id System /dev/sdb1 * 63 208844 104391 83 Linux /dev/sdb2 208845 6506324 3148740 83 Linux /dev/sdb3 6506325 8610839 1052257+ 82 Linux swap / Solaris root@sysresccd /root %
Tetap patokan saya adalah partisi dengan flag
Boot
(yang ditandai dengan simbol bintang *). Saya coba saja mount partisi/dev/sdb1
untuk melihat isinya :root@sysresccd /root % mount /dev/sdb1 /mnt root@sysresccd /root % ls /mnt config-2.6.39-300.32.1.el5uek initrd-2.6.39-300.32.1.el5uek.img symvers-2.6.39-300.32.1.el5uek.gz vmlinuz-2.6.39-300.32.1.el5uek xen-4.1.gz xen.gz grub lost+found System.map-2.6.39-300.32.1.el5uek xen-4.1.3OVM.gz xen-4.gz xen-syms-4.1.3OVM root@sysresccd /root % umount /mnt
Ternyata
/dev/sdb1
bukan partisiroot
tapi partisi/boot
. Karena/dev/sdb3
adalah partisiswap
maka saya bisa tebak kalauroot
partisinya ada di/dev/sdb2
:root@sysresccd /root % mount /dev/sdb2 /mnt root@sysresccd /root % ls /mnt bin boot dev etc halt home lib lib64 lost+found media mnt opt OVS proc root sbin selinux srv sys tmp u01 usr var root@sysresccd /root %
Langkah selanjutnya seperti di atas,
chroot
dulu lalu ganti password-nya. - Sedikit berbeda bila server Linuxnya menggunakan LVM (Logical Volume Manager) :
root@sysresccd /root % fdisk -l Disk /dev/sda: 26.8 GB, 26843545600 bytes, 52428800 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000c64ed Device Boot Start End Blocks Id System /dev/sda1 * 63 208844 104391 83 Linux /dev/sda2 208845 52420094 26105625 8e Linux LVM Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 63 20964824 10482381 83 Linux Disk /dev/mapper/VolGroup00-LogVol00: 20.5 GB, 20468203520 bytes, 39976960 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/VolGroup00-LogVol01: 6241 MB, 6241124352 bytes, 12189696 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes root@sysresccd /root %
Dalam contoh di atas, partisi
root
-nya berada di/dev/mapper/VolGroup00-LogVol00
. Jadi prosesmount
-nya seperti ini :root@sysresccd /root % mount /dev/mapper/VolGroup00-LogVol00 /mnt root@sysresccd /root % ls /mnt bin boot dev etc home lib lib64 lost+found media misc mnt net opt proc root sbin selinux srv sys tftpboot tmp u01 usr var root@sysresccd /root %